From 08f80b238b168b87bc2e14f4718b29802a5cb6ac Mon Sep 17 00:00:00 2001 From: heheer <1239331448@qq.com> Date: Tue, 1 Apr 2025 11:45:33 +0800 Subject: [PATCH 1/6] fix --- .../common/Icon/icons/common/check.svg | 4 +- packages/web/hooks/useScrollPagination.tsx | 8 +- packages/web/i18n/en/dataset.json | 3 + packages/web/i18n/zh-CN/dataset.json | 6 +- packages/web/i18n/zh-Hant/dataset.json | 3 + .../detail/CollectionCard/TrainingStates.tsx | 23 +++-- .../core/dataset/collection/trainingDetail.ts | 97 ++++++++++++------- 7 files changed, 94 insertions(+), 50 deletions(-) diff --git a/packages/web/components/common/Icon/icons/common/check.svg b/packages/web/components/common/Icon/icons/common/check.svg index f9d5d37f13d5..1662108f85b2 100644 --- a/packages/web/components/common/Icon/icons/common/check.svg +++ b/packages/web/components/common/Icon/icons/common/check.svg @@ -1,3 +1,3 @@ - - + + \ No newline at end of file diff --git a/packages/web/hooks/useScrollPagination.tsx b/packages/web/hooks/useScrollPagination.tsx index 8188f4a4d43d..9fae0ce95ff1 100644 --- a/packages/web/hooks/useScrollPagination.tsx +++ b/packages/web/hooks/useScrollPagination.tsx @@ -308,7 +308,13 @@ export function useScrollPagination< ); return ( - + {scrollLoadType === 'top' && total > 0 && isLoading && ( {t('common:common.is_requesting')} diff --git a/packages/web/i18n/en/dataset.json b/packages/web/i18n/en/dataset.json index eb62eabff37f..9401b6b3c2bf 100644 --- a/packages/web/i18n/en/dataset.json +++ b/packages/web/i18n/en/dataset.json @@ -34,9 +34,12 @@ "data_process_setting": "Processing config", "dataset.Chunk_Number": "Block number", "dataset.Completed": "Finish", + "dataset.Delete_Chunk": "delete", + "dataset.Edit_Chunk": "edit", "dataset.Error_Message": "Report an error message", "dataset.No_Error": "No exception information yet", "dataset.Operation": "operate", + "dataset.ReTrain": "Retrain", "dataset.Training Process": "Training status", "dataset.Training_Count": "{{count}} Group training", "dataset.Training_Errors": "Errors", diff --git a/packages/web/i18n/zh-CN/dataset.json b/packages/web/i18n/zh-CN/dataset.json index a8003c56d0ad..f8674a79e148 100644 --- a/packages/web/i18n/zh-CN/dataset.json +++ b/packages/web/i18n/zh-CN/dataset.json @@ -34,12 +34,12 @@ "data_process_setting": "数据处理配置", "dataset.Chunk_Number": "分块号", "dataset.Completed": "完成", - "dataset.Delete_Chunk": "删除分块", - "dataset.Edit_Chunk": "编辑分块", + "dataset.Delete_Chunk": "删除", + "dataset.Edit_Chunk": "编辑", "dataset.Error_Message": "报错信息", "dataset.No_Error": "暂无异常信息", "dataset.Operation": "操作", - "dataset.ReTrain": "重新训练", + "dataset.ReTrain": "重试", "dataset.Training Process": "训练状态", "dataset.Training_Count": "{{count}} 组训练中", "dataset.Training_Errors": "异常 ({{count}})", diff --git a/packages/web/i18n/zh-Hant/dataset.json b/packages/web/i18n/zh-Hant/dataset.json index 8f34c6efce03..0db04c27dd7e 100644 --- a/packages/web/i18n/zh-Hant/dataset.json +++ b/packages/web/i18n/zh-Hant/dataset.json @@ -34,9 +34,12 @@ "data_process_setting": "資料處理設定", "dataset.Chunk_Number": "分塊號", "dataset.Completed": "完成", + "dataset.Delete_Chunk": "刪除", + "dataset.Edit_Chunk": "編輯", "dataset.Error_Message": "報錯信息", "dataset.No_Error": "暫無異常信息", "dataset.Operation": "操作", + "dataset.ReTrain": "重試", "dataset.Training Process": "訓練狀態", "dataset.Training_Count": "{{count}} 組訓練中", "dataset.Training_Errors": "異常", diff --git a/projects/app/src/pageComponents/dataset/detail/CollectionCard/TrainingStates.tsx b/projects/app/src/pageComponents/dataset/detail/CollectionCard/TrainingStates.tsx index f3e7db906f09..ab559b67c1aa 100644 --- a/projects/app/src/pageComponents/dataset/detail/CollectionCard/TrainingStates.tsx +++ b/projects/app/src/pageComponents/dataset/detail/CollectionCard/TrainingStates.tsx @@ -36,6 +36,7 @@ import { useForm } from 'react-hook-form'; import { getTrainingDetailResult } from '@/pages/api/core/dataset/collection/trainingDetail'; import { TFunction } from 'i18next'; import { useScrollPagination } from '@fastgpt/web/hooks/useScrollPagination'; +import EmptyTip from '@fastgpt/web/components/common/EmptyTip'; const getTrainingStatus = ({ trainingCount, @@ -156,11 +157,14 @@ const ProgressView = ({ trainingDetail }: { trainingDetail: getTrainingDetailRes {statesArray.map((item, index) => ( - {item.status === TrainingStatus.Normal && } + {item.status === TrainingStatus.Normal && ( + + )} }); const { runAsync: getData, loading: getDataLoading } = useRequest2( @@ -322,8 +329,8 @@ const ErrorView = ({ datasetId, collectionId }: { datasetId: string; collectionI return ( diff --git a/projects/app/src/pages/api/core/dataset/collection/trainingDetail.ts b/projects/app/src/pages/api/core/dataset/collection/trainingDetail.ts index d309958857c0..0321bbad54ea 100644 --- a/projects/app/src/pages/api/core/dataset/collection/trainingDetail.ts +++ b/projects/app/src/pages/api/core/dataset/collection/trainingDetail.ts @@ -51,13 +51,6 @@ async function handler( datasetId: collection.datasetId, collectionId: collection._id }; - const group = { - _id: null, - qa: { $sum: { $cond: [{ $eq: ['$mode', TrainingModeEnum.qa] }, 1, 0] } }, - chunk: { $sum: { $cond: [{ $eq: ['$mode', TrainingModeEnum.chunk] }, 1, 0] } }, - image: { $sum: { $cond: [{ $eq: ['$mode', TrainingModeEnum.image] }, 1, 0] } }, - auto: { $sum: { $cond: [{ $eq: ['$mode', TrainingModeEnum.auto] }, 1, 0] } } - }; // Computed global queue const minId = await MongoDatasetTraining.findOne( @@ -70,42 +63,74 @@ async function handler( readFromSecondary ).lean(); - const [trainingCountsResult, trainedCount, waitingCountsResult] = await Promise.all([ - // 获取训练总数 & 错误总数 - MongoDatasetTraining.aggregate( - [ - { $match: match }, - { - $facet: { - trainingCounts: [{ $count: 'total' }], - errorCounts: [{ $match: { errorMsg: { $exists: true } } }, { $count: 'total' }] - } - } - ], - readFromSecondary - ), + // 获取所有训练模式 + const trainingModes = Object.values(TrainingModeEnum); + + const [trainingCounts, errorCounts, trainedCount, waitingCounts] = await Promise.all([ + // 获取训练计数 + Promise.all( + trainingModes.map((mode) => + MongoDatasetTraining.countDocuments( + { + ...match, + mode + }, + readFromSecondary + ) + ) + ).then((counts) => { + const trainingCounts = { + ...defaultCounts, + ...Object.fromEntries(trainingModes.map((mode, i) => [mode, counts[i]])) + }; + return trainingCounts; + }), + + // 获取错误计数 + Promise.all( + trainingModes.map((mode) => + MongoDatasetTraining.countDocuments( + { + ...match, + mode, + errorMsg: { $exists: true } + }, + readFromSecondary + ) + ) + ).then((counts) => { + const errorCounts = { + ...defaultCounts, + ...Object.fromEntries(trainingModes.map((mode, i) => [mode, counts[i]])) + }; + return errorCounts; + }), + // 获取训练完成计数 MongoDatasetData.countDocuments(match, readFromSecondary), + // 获取等待训练计数 - MongoDatasetTraining.aggregate( - [ - { - $match: { + Promise.all( + trainingModes.map((mode) => + MongoDatasetTraining.countDocuments( + { _id: { $lt: minId?._id }, retryCount: { $gt: 0 }, - lockTime: { $lt: new Date('2050/1/1') } - } - }, - { $group: group } - ], - readFromSecondary - ) + lockTime: { $lt: new Date('2050/1/1') }, + mode + }, + readFromSecondary + ) + ) + ).then((counts) => { + const waitingCounts = { + ...defaultCounts, + ...Object.fromEntries(trainingModes.map((mode, i) => [mode, counts[i]])) + }; + return waitingCounts; + }) ]); - const trainingCounts = trainingCountsResult?.[0]?.trainingCounts?.[0]?.total || defaultCounts; - const errorCounts = trainingCountsResult?.[0]?.errorCounts?.[0]?.total || defaultCounts; - const waitingCounts = waitingCountsResult[0] || defaultCounts; - return { trainingType: collection.trainingType, advancedTraining: { From f8aa731c2141b9f0332f39f8d2e9cbad3216d501 Mon Sep 17 00:00:00 2001 From: heheer <1239331448@qq.com> Date: Tue, 1 Apr 2025 14:49:01 +0800 Subject: [PATCH 2/6] add test --- .../training/deleteTrainingData.test.ts | 51 +++++++++++++++ .../training/getTrainingDataDetail.test.ts | 53 ++++++++++++++++ .../dataset/training/getTrainingError.test.ts | 56 +++++++++++++++++ .../training/updateTrainingData.test.ts | 63 +++++++++++++++++++ 4 files changed, 223 insertions(+) create mode 100644 test/cases/api/core/dataset/training/deleteTrainingData.test.ts create mode 100644 test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts create mode 100644 test/cases/api/core/dataset/training/getTrainingError.test.ts create mode 100644 test/cases/api/core/dataset/training/updateTrainingData.test.ts diff --git a/test/cases/api/core/dataset/training/deleteTrainingData.test.ts b/test/cases/api/core/dataset/training/deleteTrainingData.test.ts new file mode 100644 index 000000000000..6e8748de6b36 --- /dev/null +++ b/test/cases/api/core/dataset/training/deleteTrainingData.test.ts @@ -0,0 +1,51 @@ +import handler, { + type deleteTrainingDataBody, + type deleteTrainingDataResponse +} from '@/pages/api/core/dataset/training/deleteTrainingData'; +import { + DatasetCollectionTypeEnum, + TrainingModeEnum +} from '@fastgpt/global/core/dataset/constants'; +import { MongoDatasetCollection } from '@fastgpt/service/core/dataset/collection/schema'; +import { MongoDataset } from '@fastgpt/service/core/dataset/schema'; +import { MongoDatasetTraining } from '@fastgpt/service/core/dataset/training/schema'; +import { getRootUser } from '@test/datas/users'; +import { Call } from '@test/utils/request'; +import { describe, expect, it } from 'vitest'; + +describe('delete training data test', () => { + it('should delete training data', async () => { + const root = await getRootUser(); + const dataset = await MongoDataset.create({ + name: 'test', + teamId: root.teamId, + tmbId: root.tmbId + }); + const collection = await MongoDatasetCollection.create({ + name: 'test', + type: DatasetCollectionTypeEnum.file, + teamId: root.teamId, + tmbId: root.tmbId, + datasetId: dataset._id + }); + const trainingData = await MongoDatasetTraining.create({ + teamId: root.teamId, + tmbId: root.tmbId, + datasetId: dataset._id, + collectionId: collection._id, + mode: TrainingModeEnum.chunk, + model: 'test' + }); + + const res = await Call(handler, { + auth: root, + body: { + datasetId: dataset._id, + collectionId: collection._id, + dataId: trainingData._id + } + }); + + expect(res.code).toBe(200); + }); +}); diff --git a/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts b/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts new file mode 100644 index 000000000000..e3c3e8bf05b6 --- /dev/null +++ b/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts @@ -0,0 +1,53 @@ +import { + getTrainingDataDetailBody, + getTrainingDataDetailResponse +} from '@/pages/api/core/dataset/training/getTrainingDataDetail'; +import { + DatasetCollectionTypeEnum, + TrainingModeEnum +} from '@fastgpt/global/core/dataset/constants'; +import { MongoDatasetCollection } from '@fastgpt/service/core/dataset/collection/schema'; +import { MongoDataset } from '@fastgpt/service/core/dataset/schema'; +import { MongoDatasetTraining } from '@fastgpt/service/core/dataset/training/schema'; +import { getRootUser } from '@test/datas/users'; +import { Call } from '@test/utils/request'; +import { describe, expect, it } from 'vitest'; + +describe('get training data detail test', () => { + it('should return training data detail', async () => { + const root = await getRootUser(); + const dataset = await MongoDataset.create({ + name: 'test', + teamId: root.teamId, + tmbId: root.tmbId + }); + const collection = await MongoDatasetCollection.create({ + name: 'test', + type: DatasetCollectionTypeEnum.file, + teamId: root.teamId, + tmbId: root.tmbId, + datasetId: dataset._id + }); + const trainingData = await MongoDatasetTraining.create({ + teamId: root.teamId, + tmbId: root.tmbId, + datasetId: dataset._id, + collectionId: collection._id, + mode: TrainingModeEnum.chunk, + model: 'test' + }); + + const res = await Call(handler, { + auth: root, + body: { + datasetId: dataset._id, + collectionId: collection._id, + dataId: trainingData._id + } + }); + + expect(res.code).toBe(200); + expect(res.data).toBeDefined(); + expect(res.data?.model).toBe('test'); + }); +}); diff --git a/test/cases/api/core/dataset/training/getTrainingError.test.ts b/test/cases/api/core/dataset/training/getTrainingError.test.ts new file mode 100644 index 000000000000..e99f70bfcb23 --- /dev/null +++ b/test/cases/api/core/dataset/training/getTrainingError.test.ts @@ -0,0 +1,56 @@ +import handler, { + type getTrainingErrorBody, + type getTrainingErrorResponse +} from '@/pages/api/core/dataset/training/getTrainingError'; +import { + DatasetCollectionTypeEnum, + TrainingModeEnum +} from '@fastgpt/global/core/dataset/constants'; +import { MongoDatasetCollection } from '@fastgpt/service/core/dataset/collection/schema'; +import { MongoDataset } from '@fastgpt/service/core/dataset/schema'; +import { MongoDatasetTraining } from '@fastgpt/service/core/dataset/training/schema'; +import { getRootUser } from '@test/datas/users'; +import { Call } from '@test/utils/request'; +import { describe, expect, it } from 'vitest'; + +describe('training error list test', () => { + it('should return training error list', async () => { + const root = await getRootUser(); + const dataset = await MongoDataset.create({ + name: 'test', + teamId: root.teamId, + tmbId: root.tmbId + }); + const collection = await MongoDatasetCollection.create({ + name: 'test', + type: DatasetCollectionTypeEnum.file, + teamId: root.teamId, + tmbId: root.tmbId, + datasetId: dataset._id + }); + await MongoDatasetTraining.create( + [...Array(10).keys()].map((i) => ({ + teamId: root.teamId, + tmbId: root.tmbId, + datasetId: dataset._id, + collectionId: collection._id, + mode: TrainingModeEnum.chunk, + model: 'test', + errorMsg: 'test' + })) + ); + + const res = await Call(handler, { + auth: root, + body: { + collectionId: collection._id, + pageSize: 10, + offset: 0 + } + }); + + expect(res.code).toBe(200); + expect(res.data.total).toBe(10); + expect(res.data.list.length).toBe(10); + }); +}); diff --git a/test/cases/api/core/dataset/training/updateTrainingData.test.ts b/test/cases/api/core/dataset/training/updateTrainingData.test.ts new file mode 100644 index 000000000000..e95a2222bb68 --- /dev/null +++ b/test/cases/api/core/dataset/training/updateTrainingData.test.ts @@ -0,0 +1,63 @@ +import handler, { + type updateTrainingDataBody, + type updateTrainingDataResponse +} from '@/pages/api/core/dataset/training/updateTrainingData'; +import { + DatasetCollectionTypeEnum, + TrainingModeEnum +} from '@fastgpt/global/core/dataset/constants'; +import { MongoDatasetCollection } from '@fastgpt/service/core/dataset/collection/schema'; +import { MongoDataset } from '@fastgpt/service/core/dataset/schema'; +import { MongoDatasetTraining } from '@fastgpt/service/core/dataset/training/schema'; +import { getRootUser } from '@test/datas/users'; +import { Call } from '@test/utils/request'; +import { describe, expect, it } from 'vitest'; + +describe('update training data test', () => { + it('should update training data', async () => { + const root = await getRootUser(); + const dataset = await MongoDataset.create({ + name: 'test', + teamId: root.teamId, + tmbId: root.tmbId + }); + const collection = await MongoDatasetCollection.create({ + name: 'test', + type: DatasetCollectionTypeEnum.file, + teamId: root.teamId, + tmbId: root.tmbId, + datasetId: dataset._id + }); + const trainingData = await MongoDatasetTraining.create({ + teamId: root.teamId, + tmbId: root.tmbId, + datasetId: dataset._id, + collectionId: collection._id, + mode: TrainingModeEnum.chunk, + model: 'test' + }); + + const res = await Call(handler, { + auth: root, + body: { + datasetId: dataset._id, + collectionId: collection._id, + dataId: trainingData._id, + q: 'test', + a: 'test', + chunkIndex: 1 + } + }); + + const updatedTrainingData = await MongoDatasetTraining.findOne({ + teamId: root.teamId, + datasetId: dataset._id, + _id: trainingData._id + }); + + expect(res.code).toBe(200); + expect(updatedTrainingData?.q).toBe('test'); + expect(updatedTrainingData?.a).toBe('test'); + expect(updatedTrainingData?.chunkIndex).toBe(1); + }); +}); From b6a7a0ac6b9e1dfe016adcf1df24a73622af205b Mon Sep 17 00:00:00 2001 From: heheer <1239331448@qq.com> Date: Tue, 1 Apr 2025 14:57:51 +0800 Subject: [PATCH 3/6] fix --- .../core/dataset/training/getTrainingDataDetail.test.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts b/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts index e3c3e8bf05b6..5c53ded558a6 100644 --- a/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts +++ b/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts @@ -1,6 +1,6 @@ -import { - getTrainingDataDetailBody, - getTrainingDataDetailResponse +import handler, { + type getTrainingDataDetailBody, + type getTrainingDataDetailResponse } from '@/pages/api/core/dataset/training/getTrainingDataDetail'; import { DatasetCollectionTypeEnum, @@ -48,6 +48,5 @@ describe('get training data detail test', () => { expect(res.code).toBe(200); expect(res.data).toBeDefined(); - expect(res.data?.model).toBe('test'); }); }); From 74a11e0e2cd63c4c210f5e666dcb8e60d3314c87 Mon Sep 17 00:00:00 2001 From: heheer <1239331448@qq.com> Date: Tue, 1 Apr 2025 17:37:49 +0800 Subject: [PATCH 4/6] fix --- .../core/dataset/collection/trainingDetail.ts | 113 ++++++++---------- .../training/deleteTrainingData.test.ts | 7 ++ .../training/getTrainingDataDetail.test.ts | 8 +- 3 files changed, 63 insertions(+), 65 deletions(-) diff --git a/projects/app/src/pages/api/core/dataset/collection/trainingDetail.ts b/projects/app/src/pages/api/core/dataset/collection/trainingDetail.ts index 0321bbad54ea..e4e58680adef 100644 --- a/projects/app/src/pages/api/core/dataset/collection/trainingDetail.ts +++ b/projects/app/src/pages/api/core/dataset/collection/trainingDetail.ts @@ -63,73 +63,58 @@ async function handler( readFromSecondary ).lean(); - // 获取所有训练模式 - const trainingModes = Object.values(TrainingModeEnum); - - const [trainingCounts, errorCounts, trainedCount, waitingCounts] = await Promise.all([ - // 获取训练计数 - Promise.all( - trainingModes.map((mode) => - MongoDatasetTraining.countDocuments( - { - ...match, - mode - }, - readFromSecondary - ) - ) - ).then((counts) => { - const trainingCounts = { - ...defaultCounts, - ...Object.fromEntries(trainingModes.map((mode, i) => [mode, counts[i]])) - }; - return trainingCounts; - }), + const [result, trainedCount] = await Promise.all([ + MongoDatasetTraining.aggregate( + [ + { $match: match }, + { + $facet: { + trainingCounts: [{ $group: { _id: '$mode', count: { $sum: 1 } } }], + errorCounts: [ + { $match: { errorMsg: { $exists: true } } }, + { $group: { _id: '$mode', count: { $sum: 1 } } } + ], + waitingCounts: [ + { + $match: { + _id: { $lt: minId?._id }, + retryCount: { $gt: 0 }, + lockTime: { $lt: new Date('2050/1/1') } + } + }, + { $group: { _id: '$mode', count: { $sum: 1 } } } + ] + } + } + ], + readFromSecondary + ), + MongoDatasetData.countDocuments(match, readFromSecondary) + ]); - // 获取错误计数 - Promise.all( - trainingModes.map((mode) => - MongoDatasetTraining.countDocuments( - { - ...match, - mode, - errorMsg: { $exists: true } - }, - readFromSecondary - ) - ) - ).then((counts) => { - const errorCounts = { - ...defaultCounts, - ...Object.fromEntries(trainingModes.map((mode, i) => [mode, counts[i]])) - }; - return errorCounts; - }), + const trainingCounts = result[0].trainingCounts.reduce( + (acc: Record, item: { _id: TrainingModeEnum; count: number }) => { + acc[item._id] = item.count; + return acc; + }, + defaultCounts + ); - // 获取训练完成计数 - MongoDatasetData.countDocuments(match, readFromSecondary), + const errorCounts = result[0].errorCounts.reduce( + (acc: Record, item: { _id: TrainingModeEnum; count: number }) => { + acc[item._id] = item.count; + return acc; + }, + defaultCounts + ); - // 获取等待训练计数 - Promise.all( - trainingModes.map((mode) => - MongoDatasetTraining.countDocuments( - { - _id: { $lt: minId?._id }, - retryCount: { $gt: 0 }, - lockTime: { $lt: new Date('2050/1/1') }, - mode - }, - readFromSecondary - ) - ) - ).then((counts) => { - const waitingCounts = { - ...defaultCounts, - ...Object.fromEntries(trainingModes.map((mode, i) => [mode, counts[i]])) - }; - return waitingCounts; - }) - ]); + const waitingCounts = result[0].waitingCounts.reduce( + (acc: Record, item: { _id: TrainingModeEnum; count: number }) => { + acc[item._id] = item.count; + return acc; + }, + defaultCounts + ); return { trainingType: collection.trainingType, diff --git a/test/cases/api/core/dataset/training/deleteTrainingData.test.ts b/test/cases/api/core/dataset/training/deleteTrainingData.test.ts index 6e8748de6b36..552a24bcc7ea 100644 --- a/test/cases/api/core/dataset/training/deleteTrainingData.test.ts +++ b/test/cases/api/core/dataset/training/deleteTrainingData.test.ts @@ -46,6 +46,13 @@ describe('delete training data test', () => { } }); + const deletedTrainingData = await MongoDatasetTraining.findOne({ + teamId: root.teamId, + datasetId: dataset._id, + _id: trainingData._id + }); + expect(res.code).toBe(200); + expect(deletedTrainingData).toBeNull(); }); }); diff --git a/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts b/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts index 5c53ded558a6..522485d5d260 100644 --- a/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts +++ b/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts @@ -34,7 +34,8 @@ describe('get training data detail test', () => { datasetId: dataset._id, collectionId: collection._id, mode: TrainingModeEnum.chunk, - model: 'test' + q: 'test', + a: 'test' }); const res = await Call(handler, { @@ -48,5 +49,10 @@ describe('get training data detail test', () => { expect(res.code).toBe(200); expect(res.data).toBeDefined(); + expect(res.data?._id).toBe(trainingData._id); + expect(res.data?.datasetId).toBe(dataset._id); + expect(res.data?.mode).toBe(TrainingModeEnum.chunk); + expect(res.data?.q).toBe('test'); + expect(res.data?.a).toBe('test'); }); }); From b8be5b43efbc9a735355012eaf15774ce1b9f7bf Mon Sep 17 00:00:00 2001 From: heheer <1239331448@qq.com> Date: Tue, 1 Apr 2025 17:40:13 +0800 Subject: [PATCH 5/6] fix test --- .../api/core/dataset/training/getTrainingDataDetail.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts b/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts index 522485d5d260..28ace14a6718 100644 --- a/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts +++ b/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts @@ -33,6 +33,7 @@ describe('get training data detail test', () => { tmbId: root.tmbId, datasetId: dataset._id, collectionId: collection._id, + model: 'test', mode: TrainingModeEnum.chunk, q: 'test', a: 'test' From 3fc300e6927a3ac17763186d4e44caf95df2320f Mon Sep 17 00:00:00 2001 From: heheer <1239331448@qq.com> Date: Tue, 1 Apr 2025 17:43:55 +0800 Subject: [PATCH 6/6] fix test --- .../api/core/dataset/training/getTrainingDataDetail.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts b/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts index 28ace14a6718..7c157a3e49f2 100644 --- a/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts +++ b/test/cases/api/core/dataset/training/getTrainingDataDetail.test.ts @@ -50,8 +50,8 @@ describe('get training data detail test', () => { expect(res.code).toBe(200); expect(res.data).toBeDefined(); - expect(res.data?._id).toBe(trainingData._id); - expect(res.data?.datasetId).toBe(dataset._id); + expect(res.data?._id).toStrictEqual(trainingData._id); + expect(res.data?.datasetId).toStrictEqual(dataset._id); expect(res.data?.mode).toBe(TrainingModeEnum.chunk); expect(res.data?.q).toBe('test'); expect(res.data?.a).toBe('test');