import { BaseState } from '@/interfaces/common'; import { ITestingChunk, ITestingDocument, } from '@/interfaces/database/knowledge'; import kbService from '@/services/kbService'; import { DvaModel } from 'umi'; export interface TestingModelState extends Pick { chunks: ITestingChunk[]; documents: ITestingDocument[]; total: number; selectedDocumentIds: string[] | undefined; } const initialState = { chunks: [], documents: [], total: 0, pagination: { current: 1, pageSize: 10, }, selectedDocumentIds: undefined, }; const model: DvaModel = { namespace: 'testingModel', state: initialState, reducers: { setChunksAndDocuments(state, { payload }) { return { ...state, ...payload, }; }, setPagination(state, { payload }) { return { ...state, pagination: { ...state.pagination, ...payload } }; }, setSelectedDocumentIds(state, { payload }) { return { ...state, selectedDocumentIds: payload }; }, reset() { return initialState; }, }, effects: { *testDocumentChunk({ payload = {} }, { call, put, select }) { const { pagination, selectedDocumentIds }: TestingModelState = yield select((state: any) => state.testingModel); const { data } = yield call(kbService.retrieval_test, { ...payload, doc_ids: selectedDocumentIds, page: pagination.current, size: pagination.pageSize, }); const { retcode, data: res } = data; if (retcode === 0) { yield put({ type: 'setChunksAndDocuments', payload: { chunks: res.chunks, documents: res.doc_aggs, total: res.total, }, }); } }, }, }; export default model;