visuddhinanda пре 6 месеци
родитељ
комит
8b1d176b0d
1 измењених фајлова са 59 додато и 38 уклоњено
  1. 59 38
      dashboard-v4/dashboard/src/pages/admin/ai/list.tsx

+ 59 - 38
dashboard-v4/dashboard/src/pages/admin/ai/list.tsx

@@ -11,41 +11,28 @@ import {
 import { useAppSelector } from "../../../hooks";
 import { siteInfo } from "../../../reducers/layout";
 
-interface RecordType {
-  key: string;
-  title: string;
-  description?: string;
+interface IWidget {
+  type: "wbw" | "chat";
+  models?: RecordType[];
 }
-
-const Widget = () => {
-  const [models, setModels] = useState<RecordType[]>();
-
+const ModelSelect = ({ type, models }: IWidget) => {
   const [targetKeys, setTargetKeys] = useState<string[]>([]);
   const [selectedKeys, setSelectedKeys] = useState<string[]>([]);
 
   const site = useAppSelector(siteInfo);
 
   useEffect(() => {
-    const url = `/v2/ai-model?view=chat`;
-    get<IAiModelListResponse>(url)
-      .then((json) => {
-        if (json.ok) {
-          setModels(
-            json.data.rows.map((item) => {
-              return {
-                key: item.uid,
-                title: item.name,
-                description: item.model,
-              };
-            })
-          );
-        }
-      })
-      .finally(() => {
-        const wbw = site?.settings?.models?.wbw?.map((item) => item.uid) ?? [];
-        setTargetKeys(wbw);
-      });
-  }, [site?.settings?.models?.wbw]);
+    let target: string[] = [];
+    switch (type) {
+      case "wbw":
+        target = site?.settings?.models?.wbw?.map((item) => item.uid) ?? [];
+        break;
+      case "chat":
+        target = site?.settings?.models?.chat?.map((item) => item.uid) ?? [];
+        break;
+    }
+    setTargetKeys(target);
+  }, [site?.settings?.models, type]);
 
   const onChange = (
     nextTargetKeys: string[],
@@ -55,7 +42,7 @@ const Widget = () => {
     setTargetKeys(nextTargetKeys);
     const url = `/v2/system-model`;
     post<IAiModelSystem, IAiModelResponse>(url, {
-      view: "wbw",
+      view: type,
       models: nextTargetKeys,
     })
       .then((json) => {
@@ -77,19 +64,53 @@ const Widget = () => {
     setSelectedKeys([...sourceSelectedKeys, ...targetSelectedKeys]);
   };
 
+  return (
+    <Transfer
+      dataSource={models}
+      titles={["All", "Selected"]}
+      targetKeys={targetKeys}
+      selectedKeys={selectedKeys}
+      onChange={onChange}
+      onSelectChange={onSelectChange}
+      render={(item) => item.title}
+    />
+  );
+};
+
+interface RecordType {
+  key: string;
+  title: string;
+  description?: string;
+}
+
+const Widget = () => {
+  const [models, setModels] = useState<RecordType[]>();
+
+  useEffect(() => {
+    const url = `/v2/ai-model?view=chat`;
+    console.log("api request", url);
+    get<IAiModelListResponse>(url).then((json) => {
+      console.log("api response", json);
+      if (json.ok) {
+        setModels(
+          json.data.rows.map((item) => {
+            return {
+              key: item.uid,
+              title: item.name,
+              description: item.model,
+            };
+          })
+        );
+      }
+    });
+  }, []);
+
   return (
     <div>
       <Divider>WBW</Divider>
-      <Transfer
-        dataSource={models}
-        titles={["All", "Selected"]}
-        targetKeys={targetKeys}
-        selectedKeys={selectedKeys}
-        onChange={onChange}
-        onSelectChange={onSelectChange}
-        render={(item) => item.title}
-      />
+      <ModelSelect models={models} type="wbw" />
       <Divider>Chat</Divider>
+      <ModelSelect models={models} type="chat" />
     </div>
   );
 };