From af385b1b42fa2d5356af37a2c5321e71adf3a153 Mon Sep 17 00:00:00 2001 From: archer <545436317@qq.com> Date: Mon, 27 Mar 2023 18:55:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=80=E6=AC=A1=E6=80=A7=E8=8E=B7?= =?UTF-8?q?=E5=8F=96data=E9=9B=86=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/data.ts | 3 +- src/pages/api/data/getDataList.ts | 21 +-- src/pages/data/list.tsx | 210 ++++++++++++------------- src/service/events/generateAbstract.ts | 2 + src/service/events/generateQA.ts | 2 + 5 files changed, 107 insertions(+), 131 deletions(-) diff --git a/src/api/data.ts b/src/api/data.ts index d076b801b..4e0a1c3cd 100644 --- a/src/api/data.ts +++ b/src/api/data.ts @@ -6,8 +6,7 @@ import type { PagingData } from '../types/index'; import type { DataItemSchema } from '@/types/mongoSchema'; import type { CreateDataProps } from '@/pages/data/components/CreateDataModal'; -export const getDataList = (data: RequestPaging) => - GET>(`/data/getDataList?${Obj2Query(data)}`); +export const getDataList = () => GET(`/data/getDataList`); export const postData = (data: CreateDataProps) => POST(`/data/postData`, data); diff --git a/src/pages/api/data/getDataList.ts b/src/pages/api/data/getDataList.ts index 0f483f0e9..9c26f1c22 100644 --- a/src/pages/api/data/getDataList.ts +++ b/src/pages/api/data/getDataList.ts @@ -3,18 +3,12 @@ import type { NextApiRequest, NextApiResponse } from 'next'; import { jsonRes } from '@/service/response'; import { connectToDatabase, Data, DataItem } from '@/service/mongo'; import { authToken } from '@/service/utils/tools'; -import type { DataSchema } from '@/types/mongoSchema'; import type { DataListItem } from '@/types/data'; -import type { PagingData } from '@/types'; import mongoose from 'mongoose'; export default async function handler(req: NextApiRequest, res: NextApiResponse) { try { const { authorization } = req.headers; - let { pageNum = 1, pageSize = 10 } = req.query as { pageNum: string; pageSize: string }; - - pageNum = +pageNum; - pageSize = +pageSize; if (!authorization) { throw new Error('缺少登录凭证'); @@ -34,12 +28,6 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) { $sort: { createTime: -1 } // 按照创建时间倒序排列 }, - { - $skip: (pageNum - 1) * pageSize // 跳过前面的数据 - }, - { - $limit: pageSize // 取出指定数量的数据 - }, { $lookup: { from: 'dataitems', @@ -71,13 +59,8 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) } ]); - jsonRes>(res, { - data: { - pageNum, - pageSize, - data: datalist, - total: 1 - } + jsonRes(res, { + data: datalist }); } catch (err) { jsonRes(res, { diff --git a/src/pages/data/list.tsx b/src/pages/data/list.tsx index 1bba0d995..e1dd0d07a 100644 --- a/src/pages/data/list.tsx +++ b/src/pages/data/list.tsx @@ -19,9 +19,7 @@ import { MenuItem } from '@chakra-ui/react'; import { getDataList, updateDataName, delData, getDataItems } from '@/api/data'; -import { usePaging } from '@/hooks/usePaging'; import type { DataListItem } from '@/types/data'; -import ScrollData from '@/components/ScrollData'; import dayjs from 'dayjs'; import dynamic from 'next/dynamic'; import { useRouter } from 'next/router'; @@ -30,6 +28,7 @@ import { useRequest } from '@/hooks/useRequest'; import { DataItemSchema } from '@/types/mongoSchema'; import { DataTypeTextMap } from '@/constants/data'; import { customAlphabet } from 'nanoid'; +import { useQuery } from '@tanstack/react-query'; const nanoid = customAlphabet('.,', 1); const CreateDataModal = dynamic(() => import('./components/CreateDataModal')); @@ -39,17 +38,6 @@ export type ExportDataType = 'jsonl' | 'txt'; const DataList = () => { const router = useRouter(); - const { - nextPage, - isLoadAll, - requesting, - data: dataList, - getData, - initRequesting - } = usePaging({ - api: getDataList, - pageSize: 20 - }); const [ImportDataId, setImportDataId] = useState(); const { openConfirm, ConfirmChild } = useConfirm({ content: '删除数据集,将删除里面的所有内容,请确认!' @@ -61,12 +49,16 @@ const DataList = () => { onClose: onCloseCreateDataModal } = useDisclosure(); + const { data: dataList = [], refetch } = useQuery(['getDataList'], getDataList, { + refetchInterval: 10000 + }); + const { mutate: handleDelData, isLoading: isDeleting } = useRequest({ mutationFn: (dataId: string) => delData(dataId), successToast: '删除数据集成功', errorToast: '删除数据集异常', onSuccess() { - getData(1, true); + refetch(); } }); @@ -131,111 +123,109 @@ const DataList = () => { {/* 数据表 */} - - - - - - - - - - - - - - - {dataList.map((item, i) => ( - - - - - - + + ))} + +
集合名类型创建时间训练中 / 总数据
- { - if (!e.target.value || e.target.value === item.name) return; - updateDataName(item._id, e.target.value); - }} - /> - {DataTypeTextMap[item.type || 'QA']}{dayjs(item.createTime).format('YYYY/MM/DD HH:mm')} - {item.trainingData} / {item.totalData} - - - - - - 导出 - - - {item.type === 'QA' && ( - handleExportData({ data: item, type: 'jsonl' })} - > - jsonl - - )} - {item.type === 'abstract' && ( - handleExportData({ data: item, type: 'txt' })}> - txt - - )} - - + + + + + + + + + + + + + {dataList.map((item, i) => ( + + + + + + - - ))} - -
集合名类型创建时间训练中 / 总数据
+ { + if (!e.target.value || e.target.value === item.name) return; + updateDataName(item._id, e.target.value); + }} + /> + {DataTypeTextMap[item.type || 'QA']}{dayjs(item.createTime).format('YYYY/MM/DD HH:mm')} + {item.trainingData} / {item.totalData} + + + + + + 导出 + + + {item.type === 'QA' && ( + handleExportData({ data: item, type: 'jsonl' })}> + jsonl + + )} + {item.type === 'abstract' && ( + handleExportData({ data: item, type: 'txt' })}> + txt + + )} + + - -
-
- - + +
+
{ImportDataId && ( setImportDataId(undefined)} - onSuccess={() => getData(1, true)} + onSuccess={refetch} /> )} {isOpenCreateDataModal && ( - getData(1, true)} /> + )} diff --git a/src/service/events/generateAbstract.ts b/src/service/events/generateAbstract.ts index 677947719..c865152c8 100644 --- a/src/service/events/generateAbstract.ts +++ b/src/service/events/generateAbstract.ts @@ -7,6 +7,8 @@ import { ChatModelNameEnum } from '@/constants/model'; import { pushSplitDataBill } from '@/service/events/pushBill'; export async function generateAbstract(next = false): Promise { + if (process.env.NODE_ENV === 'development') return; + if (global.generatingAbstract && !next) return; global.generatingAbstract = true; diff --git a/src/service/events/generateQA.ts b/src/service/events/generateQA.ts index d6b3d7555..c835844fc 100644 --- a/src/service/events/generateQA.ts +++ b/src/service/events/generateQA.ts @@ -7,6 +7,8 @@ import { ChatModelNameEnum } from '@/constants/model'; import { pushSplitDataBill } from '@/service/events/pushBill'; export async function generateQA(next = false): Promise { + if (process.env.NODE_ENV === 'development') return; + if (global.generatingQA && !next) return; global.generatingQA = true;