فهرست منبع

功能基本上完成

tianyunperfect 5 سال پیش
والد
کامیت
49e99d99be

+ 1 - 0
mock/listTableList.ts

@@ -41,6 +41,7 @@ function getRule(req: Request, res: Response, u: string) {
   const { current = 1, pageSize = 10 } = req.query;
   const params = (parse(realUrl, true).query as unknown) as TableListParams;
 
+  // @ts-ignore
   let dataSource = [...tableListDataSource].slice((current - 1) * pageSize, current * pageSize);
   if (params.sorter) {
     const s = params.sorter.split('_');

+ 19 - 1
src/pages/ModelList/_mock.ts

@@ -19,6 +19,11 @@ const genList = (current: number, pageSize: number) => {
       mustNotTag: ``,
       onlyWord: `true`,
       modelType: 0,
+      maxBatchSize:3,
+      maxSeqLength:3,
+      numAttentionHeads:3,
+      numHiddenLayers:1,
+      doLowerCase:1
     });
   }
   tableListDataSource.reverse();
@@ -35,6 +40,7 @@ function getModels(req: Request, res: Response, u: string) {
   const {current = 1, pageSize = 10} = req.query;
   const params = (parse(realUrl, true).query as unknown) as TableListParams;
 
+  // @ts-ignore
   const dataSource = [...tableListDataSource].slice((current - 1) * pageSize, current * pageSize);
 
   const result = {
@@ -48,6 +54,18 @@ function getModels(req: Request, res: Response, u: string) {
   return res.json(result);
 }
 
+function success(req: Request, res: Response, u: string) {
+  const result = {
+    data: "ok",
+    success: true,
+  };
+  return res.json(result);
+}
+
 export default {
-  'GET /api/model': getModels,
+  'GET /modelInfo/queryList': getModels,
+  'POST /modelInfo/deleteByName': success,
+  'POST /modelInfo/insert': success,
+  'POST /modelInfo/updateByName': success,
+  'POST /modelInfo/similarityQuery': success,
 };

+ 4 - 4
src/pages/ModelList/components/QueryForm.tsx

@@ -31,8 +31,8 @@ const QueryForm: React.FC<FormProps> = (props) => {
 
   const query = async () => {
     const fields = await form.validateFields();
-    const result = await service.query(fields);
-    setResultStr(result);
+    const result = await service.similarityQuery(fields);
+    setResultStr(result.data);
   };
 
   const {
@@ -45,7 +45,7 @@ const QueryForm: React.FC<FormProps> = (props) => {
   const renderFooter = () => {
     return (
       <>
-        <Button onClick={() => cancelModalVisible()}>取消</Button>
+        <Button onClick={() => cancelModalVisible(false)}>取消</Button>
         <Button type="primary" onClick={() => query()}>
           查询
         </Button>
@@ -61,7 +61,7 @@ const QueryForm: React.FC<FormProps> = (props) => {
       title="相似度查询"
       visible={modalVisible}
       footer={renderFooter()}
-      onCancel={() => cancelModalVisible()}
+      onCancel={() => cancelModalVisible(false)}
     >
       <Form {...formLayout} form={form} initialValues={values}>
         <FormItem

+ 6 - 0
src/pages/ModelList/data.d.ts

@@ -9,6 +9,12 @@ export interface TableListItem {
   mustNotTag: string;
   onlyWord: string;
   modelType: number;
+
+  maxBatchSize:number,
+  maxSeqLength:number,
+  numAttentionHeads:number,
+  numHiddenLayers:number,
+  doLowerCase:number,
 }
 // 分页参数
 export interface TableListPagination {

+ 99 - 35
src/pages/ModelList/index.tsx

@@ -1,10 +1,10 @@
-import { PlusOutlined } from '@ant-design/icons';
-import { Button, Divider, message, Modal, Radio } from 'antd';
-import React, { useRef, useState } from 'react';
-import { PageHeaderWrapper } from '@ant-design/pro-layout';
-import ProTable, { ActionType, ProColumns } from '@ant-design/pro-table';
-import { SorterResult } from 'antd/es/table/interface';
-import { TableListItem } from './data.d';
+import {PlusOutlined} from '@ant-design/icons';
+import {Button, Divider, message, Modal, Radio} from 'antd';
+import React, {useRef, useState} from 'react';
+import {PageHeaderWrapper} from '@ant-design/pro-layout';
+import ProTable, {ActionType, ProColumns} from '@ant-design/pro-table';
+import {SorterResult} from 'antd/es/table/interface';
+import {TableListItem} from './data.d';
 import service from './service';
 import QueryForm from '@/pages/ModelList/components/QueryForm';
 
@@ -15,7 +15,7 @@ import QueryForm from '@/pages/ModelList/components/QueryForm';
 const handleAdd = async (fields: TableListItem) => {
   const hide = message.loading('正在添加');
   try {
-    await service.addModel({ ...fields });
+    await service.addModel({...fields});
     hide();
     message.success('添加成功');
     return true;
@@ -51,10 +51,10 @@ const handleUpdate = async (fields: TableListItem) => {
 const handleRemove = async (fields: TableListItem) => {
   const hide = message.loading('正在删除');
   try {
-    await service.removeModel(fields);
+    const res = await service.removeModel(fields);
     hide();
     message.success('删除成功,即将刷新');
-    return true;
+    return res.success;
   } catch (error) {
     hide();
     message.error('删除失败,请重试');
@@ -84,13 +84,13 @@ const TableList: React.FC<{}> = () => {
         return (
           <Radio.Group>
             <Radio value={0}>albert</Radio>
-            <Radio value={1}>Blstm</Radio>
+            <Radio value={1}>bilstm</Radio>
           </Radio.Group>
         );
       },
       valueEnum: {
-        0: { text: 'albert' },
-        1: { text: 'Blstm' },
+        0: {text: 'albert'},
+        1: {text: 'bilstm'},
       },
     },
     {
@@ -110,7 +110,7 @@ const TableList: React.FC<{}> = () => {
       rules: [
         {
           required: true,
-          message: '模型名称为必填项',
+          message: '模型文件为必填项',
         },
       ],
     },
@@ -140,11 +140,45 @@ const TableList: React.FC<{}> = () => {
       title: '必包含',
       dataIndex: 'mustTag',
       hideInSearch: true,
+      formItemProps: {
+        placeholder: '逗号分隔'
+      },
+      hideInTable: true,
     },
     {
       title: '必不包含',
       dataIndex: 'mustNotTag',
       hideInSearch: true,
+      formItemProps: {
+        placeholder: '逗号分隔'
+      },
+      hideInTable: true,
+    },
+
+    {
+      title: 'BatchSize',
+      dataIndex: 'maxBatchSize',
+      hideInSearch: true,
+      hideInTable: true,
+    },
+    {
+      title: 'SeqLength',
+      dataIndex: 'maxSeqLength',
+      hideInSearch: true,
+      hideInTable: true,
+    },
+
+    {
+      title: 'HiddenLayers',
+      dataIndex: 'numHiddenLayers',
+      hideInSearch: true,
+      hideInTable: true,
+    },
+    {
+      title: 'AttentionHeads',
+      dataIndex: 'numAttentionHeads',
+      hideInSearch: true,
+      hideInTable: true,
     },
     {
       title: '纯文本',
@@ -159,8 +193,26 @@ const TableList: React.FC<{}> = () => {
         );
       },
       valueEnum: {
-        true: { text: '是' },
-        false: { text: '否' },
+        true: {text: '是'},
+        false: {text: '否'},
+      },
+    },
+    {
+      title: '大小写',
+      dataIndex: 'doLowerCase',
+      hideInSearch: true,
+      hideInTable: true,
+      renderFormItem: () => {
+        return (
+          <Radio.Group>
+            <Radio value="0">区分</Radio>
+            <Radio value="1">不分区</Radio>
+          </Radio.Group>
+        );
+      },
+      valueEnum: {
+        "0": {text: '区分'},
+        "1": {text: '不分区'},
       },
     },
 
@@ -168,32 +220,34 @@ const TableList: React.FC<{}> = () => {
       title: '操作',
       dataIndex: 'option',
       valueType: 'option',
-      render: (_, record) => (
+      render: (_, record,index,action) => (
         <>
           <a
             onClick={() => {
-              setModalVisible(true);
               setFormValues(record);
+              setModalVisible(true);
               console.log(record);
             }}
           >
             配置
           </a>
-          <Divider type="vertical" />
+          <Divider type="vertical"/>
           <a
-            onClick={() => {
-              handleRemove(record);
+            onClick={async () => {
+              const success = await  handleRemove(record);
+              if (success) {
+                await action.reload();
+              }
               console.log(record);
             }}
           >
             删除
           </a>
-          <Divider type="vertical" />
+          <Divider type="vertical"/>
           <a
-            onClick={() => {
-              setQueryVisible(true);
+            onClick={async () => {
               setFormValues(record);
-              console.log(record);
+              setQueryVisible(true);
             }}
           >
             查询
@@ -222,15 +276,22 @@ const TableList: React.FC<{}> = () => {
           sorter,
         }}
         /* eslint-disable */
-        toolBarRender={(action, { selectedRows }) => [
+        toolBarRender={(action, {selectedRows}) => [
           <Button
             type="primary"
             onClick={() => {
               setModalVisible(true);
-              setFormValues({});
+              setFormValues({
+                maxBatchSize: 1,
+                maxSeqLength: 40,
+                numAttentionHeads: 12,
+                numHiddenLayers: 3,
+                doLowerCase: "1",
+                onlyWord: "true",
+              });
             }}
           >
-            <PlusOutlined /> 新建
+            <PlusOutlined/> 新建
           </Button>,
         ]}
         request={(params) => service.queryModel(params)}
@@ -247,7 +308,7 @@ const TableList: React.FC<{}> = () => {
         <ProTable<TableListItem, TableListItem>
           onSubmit={async (value) => {
             let success = false;
-            if (value.id) {
+            if (!value.id) {
               success = await handleAdd(value);
             } else {
               success = await handleUpdate(value);
@@ -264,15 +325,18 @@ const TableList: React.FC<{}> = () => {
           type="form"
           columns={columns}
           rowSelection={{}}
-          form={{ initialValues: formValues }}
+          form={{initialValues: formValues}}
         />
       </Modal>
 
-      <QueryForm
-        onCancel={() => setQueryVisible(false)}
-        modalVisible={queryVisible}
-        values={formValues}
-      />
+      {queryVisible ? (
+        <QueryForm
+          onCancel={() => setQueryVisible(false)}
+          modalVisible={queryVisible}
+          values={formValues}
+        />
+      ) : null}
+
     </PageHeaderWrapper>
   );
 };

+ 5 - 5
src/pages/ModelList/service.ts

@@ -1,9 +1,9 @@
 import api from '@/utils/api';
 
 export default {
-  queryModel: api.get('/api/model'),
-  removeModel: api.post('/api/rule'),
-  addModel: api.post('/api/rule'),
-  updateModel: api.post('/api/rule'),
-  query: api.post('/api/rule'),
+  queryModel: api.get('/modelInfo/queryList'),
+  removeModel: api.post('/modelInfo/deleteByName'),
+  addModel: api.post('/modelInfo/insert'),
+  updateModel: api.post('/modelInfo/updateByName'),
+  similarityQuery: api.post('/modelInfo/similarityQuery'),
 };

+ 13 - 3
src/pages/ServiceList/_mock.ts

@@ -13,8 +13,8 @@ const genList = (current: number, pageSize: number) => {
       id: index,
       serviceIp: `${index}name`,
       modelName: `${index}name`,
-      modelVersion: `${index}name`,
-      currentVersion: `${index}name`,
+      modelVersion: `${new Date()}`,
+      currentVersion: `${new Date()}`,
     });
   }
   tableListDataSource.reverse();
@@ -31,6 +31,7 @@ function getModels(req: Request, res: Response, u: string) {
   const { current = 1, pageSize = 10 } = req.query;
   const params = (parse(realUrl, true).query as unknown) as TableListParams;
 
+  // @ts-ignore
   const dataSource = [...tableListDataSource].slice((current - 1) * pageSize, current * pageSize);
 
   const result = {
@@ -44,6 +45,15 @@ function getModels(req: Request, res: Response, u: string) {
   return res.json(result);
 }
 
+function success(req: Request, res: Response, u: string) {
+  const result = {
+    data: "ok",
+    success: true,
+  };
+  return res.json(result);
+}
+
 export default {
-  'GET /api/service': getModels,
+  'GET /service/queryList': getModels,
+  'POST /service/forceUpdate': success,
 };

+ 3 - 0
src/pages/ServiceList/index.less

@@ -1,3 +1,6 @@
 .upload {
   display: inline;
 }
+.red{
+  color: red;
+}

+ 17 - 4
src/pages/ServiceList/index.tsx

@@ -5,6 +5,7 @@ import ProTable, { ActionType, ProColumns } from '@ant-design/pro-table';
 import { SorterResult } from 'antd/es/table/interface';
 import { TableListItem } from './data.d';
 import service from './service';
+import styles from './index.less'
 
 /**
  * 更新节点
@@ -13,10 +14,10 @@ import service from './service';
 const handleUpdate = async (fields: TableListItem) => {
   const hide = message.loading('正在配置');
   try {
-    await service.updateModel(fields);
+    const data = await service.forceUpdateModel(fields);
     hide();
     message.success('配置成功');
-    return true;
+    return data.success;
   } catch (error) {
     hide();
     message.error('配置失败请重试!');
@@ -40,22 +41,34 @@ const TableList: React.FC<{}> = () => {
     {
       title: '模型版本',
       dataIndex: 'modelVersion',
+      valueType: 'dateTime',
       hideInSearch: true,
     },
     {
       title: '当前版本',
       dataIndex: 'currentVersion',
+      valueType: 'dateTime',
       hideInSearch: true,
+      render: (text, row)=>{
+        if (row.currentVersion !== row.modelVersion) {
+           return (<div className={styles.red}>{text} :待更新</div>)
+        }
+        return (<div>{text}</div>)
+
+      }
     },
     {
       title: '操作',
       dataIndex: 'option',
       valueType: 'option',
-      render: (_, record) => (
+      render: (_, record,index,action) => (
         <>
           <a
             onClick={async () => {
-              await handleUpdate(record);
+              const success = await handleUpdate(record);
+              if (success) {
+                await action.reload();
+              }
               console.log(record);
             }}
           >

+ 2 - 4
src/pages/ServiceList/service.ts

@@ -1,8 +1,6 @@
 import api from '@/utils/api';
 
 export default {
-  queryList: api.get('/api/service'),
-  removeModel: api.post('/api/rule'),
-  addModel: api.post('/api/rule'),
-  updateModel: api.post('/api/rule'),
+  queryList: api.get('/service/queryList'),
+  forceUpdateModel: api.post('/service/forceUpdate'),
 };