| 
                        123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 | 
                        - import { BaseState } from '@/interfaces/common';
 - import { IKnowledgeFile } from '@/interfaces/database/knowledge';
 - import i18n from '@/locales/config';
 - import kbService, { getDocumentFile } from '@/services/knowledge-service';
 - import { message } from 'antd';
 - import omit from 'lodash/omit';
 - import pick from 'lodash/pick';
 - import { DvaModel } from 'umi';
 - 
 - export interface KFModelState extends BaseState {
 -   tenantIfo: any;
 -   data: IKnowledgeFile[];
 -   total: number;
 -   currentRecord: Nullable<IKnowledgeFile>;
 -   fileThumbnails: Record<string, string>;
 - }
 - 
 - const model: DvaModel<KFModelState> = {
 -   namespace: 'kFModel',
 -   state: {
 -     tenantIfo: {},
 -     data: [],
 -     total: 0,
 -     currentRecord: null,
 -     searchString: '',
 -     pagination: {
 -       current: 1,
 -       pageSize: 10,
 -     },
 -     fileThumbnails: {} as Record<string, string>,
 -   },
 -   reducers: {
 -     updateState(state, { payload }) {
 -       return {
 -         ...state,
 -         ...payload,
 -       };
 -     },
 - 
 -     setCurrentRecord(state, { payload }) {
 -       return { ...state, currentRecord: payload };
 -     },
 -     setSearchString(state, { payload }) {
 -       return { ...state, searchString: payload };
 -     },
 -     setPagination(state, { payload }) {
 -       return { ...state, pagination: { ...state.pagination, ...payload } };
 -     },
 -     setFileThumbnails(state, { payload }) {
 -       return { ...state, fileThumbnails: payload };
 -     },
 -   },
 -   effects: {
 -     *createKf({ payload = {} }, { call }) {
 -       const { data } = yield call(kbService.createKb, payload);
 -       const { retcode } = data;
 -       if (retcode === 0) {
 -         message.success(i18n.t('message.created'));
 -       }
 -     },
 -     *updateKf({ payload = {} }, { call }) {
 -       const { data } = yield call(kbService.updateKb, payload);
 -       const { retcode } = data;
 -       if (retcode === 0) {
 -         message.success(i18n.t('message.modified'));
 -       }
 -     },
 -     *getKfDetail({ payload = {} }, { call }) {
 -       const { data } = yield call(kbService.get_kb_detail, payload);
 -     },
 -     *getKfList({ payload = {} }, { call, put, select }) {
 -       const state: KFModelState = yield select((state: any) => state.kFModel);
 -       const requestBody = {
 -         ...payload,
 -         page: state.pagination.current,
 -         page_size: state.pagination.pageSize,
 -       };
 -       if (state.searchString) {
 -         requestBody['keywords'] = state.searchString;
 -       }
 -       const { data } = yield call(kbService.get_document_list, requestBody);
 -       const { retcode, data: res } = data;
 - 
 -       if (retcode === 0) {
 -         yield put({
 -           type: 'updateState',
 -           payload: {
 -             data: res.docs,
 -             total: res.total,
 -           },
 -         });
 -       }
 -     },
 -     throttledGetDocumentList: [
 -       function* ({ payload }, { call, put }) {
 -         yield put({ type: 'getKfList', payload: { kb_id: payload } });
 -       },
 -       { type: 'throttle', ms: 1000 }, // TODO: Provide type support for this effect
 -     ],
 -     pollGetDocumentList: [
 -       function* ({ payload }, { call, put }) {
 -         yield put({ type: 'getKfList', payload: { kb_id: payload } });
 -       },
 -       { type: 'poll', delay: 15000 }, // TODO: Provide type support for this effect
 -     ],
 -     *updateDocumentStatus({ payload = {} }, { call, put }) {
 -       const { data } = yield call(
 -         kbService.document_change_status,
 -         pick(payload, ['doc_id', 'status']),
 -       );
 -       const { retcode } = data;
 -       if (retcode === 0) {
 -         message.success(i18n.t('message.modified'));
 -         yield put({
 -           type: 'getKfList',
 -           payload: { kb_id: payload.kb_id },
 -         });
 -       }
 -     },
 -     *document_rm({ payload = {} }, { call, put }) {
 -       const { data } = yield call(kbService.document_rm, {
 -         doc_id: payload.doc_id,
 -       });
 -       const { retcode } = data;
 -       if (retcode === 0) {
 -         message.success(i18n.t('message.deleted'));
 -         yield put({
 -           type: 'getKfList',
 -           payload: { kb_id: payload.kb_id },
 -         });
 -       }
 -       return retcode;
 -     },
 -     *document_rename({ payload = {} }, { call, put }) {
 -       const { data } = yield call(
 -         kbService.document_rename,
 -         omit(payload, ['kb_id']),
 -       );
 -       const { retcode } = data;
 -       if (retcode === 0) {
 -         message.success(i18n.t('message.renamed'));
 - 
 -         yield put({
 -           type: 'getKfList',
 -           payload: { kb_id: payload.kb_id },
 -         });
 -       }
 - 
 -       return retcode;
 -     },
 -     *document_create({ payload = {} }, { call, put }) {
 -       const { data } = yield call(kbService.document_create, payload);
 -       const { retcode } = data;
 -       if (retcode === 0) {
 -         yield put({
 -           type: 'getKfList',
 -           payload: { kb_id: payload.kb_id },
 -         });
 - 
 -         message.success(i18n.t('message.created'));
 -       }
 -       return retcode;
 -     },
 -     *document_run({ payload = {} }, { call, put }) {
 -       const { data } = yield call(
 -         kbService.document_run,
 -         omit(payload, ['knowledgeBaseId']),
 -       );
 -       const { retcode } = data;
 -       if (retcode === 0) {
 -         if (payload.knowledgeBaseId) {
 -           yield put({
 -             type: 'getKfList',
 -             payload: { kb_id: payload.knowledgeBaseId },
 -           });
 -         }
 -         message.success(i18n.t('message.operated'));
 -       }
 -       return retcode;
 -     },
 -     *document_change_parser({ payload = {} }, { call, put }) {
 -       const { data } = yield call(
 -         kbService.document_change_parser,
 -         omit(payload, ['kb_id']),
 -       );
 -       const { retcode } = data;
 -       if (retcode === 0) {
 -         yield put({
 -           type: 'getKfList',
 -           payload: { kb_id: payload.kb_id },
 -         });
 - 
 -         message.success(i18n.t('message.modified'));
 -       }
 -       return retcode;
 -     },
 -     *fetch_document_thumbnails({ payload = {} }, { call, put }) {
 -       const { data } = yield call(kbService.document_thumbnails, payload);
 -       if (data.retcode === 0) {
 -         yield put({ type: 'setFileThumbnails', payload: data.data });
 -       }
 -     },
 -     *fetch_document_file({ payload = {} }, { call }) {
 -       const documentId = payload;
 -       try {
 -         const ret = yield call(getDocumentFile, documentId);
 -         return ret;
 -       } catch (error) {
 -         console.warn(error);
 -       }
 -     },
 -     *upload_document({ payload = {} }, { call, put }) {
 -       const fileList = payload.fileList;
 -       const formData = new FormData();
 -       formData.append('kb_id', payload.kb_id);
 -       fileList.forEach((file: any) => {
 -         formData.append('file', file);
 -       });
 - 
 -       const { data } = yield call(kbService.document_upload, formData);
 - 
 -       const succeed = data.retcode === 0;
 - 
 -       if (succeed) {
 -         message.success(i18n.t('message.uploaded'));
 -       }
 -       if (succeed || data.retcode === 500) {
 -         yield put({
 -           type: 'getKfList',
 -           payload: { kb_id: payload.kb_id },
 -         });
 -       }
 -       return data;
 -     },
 -     *web_crawl({ payload = {} }, { call, put }) {
 -       const formData = new FormData();
 -       formData.append('name', payload.name);
 -       formData.append('url', payload.url);
 -       formData.append('kb_id', payload.kb_id);
 - 
 -       const { data } = yield call(kbService.web_crawl, formData);
 - 
 -       const succeed = data.retcode === 0;
 - 
 -       if (succeed) {
 -         message.success(i18n.t('message.uploaded'));
 -       }
 -       if (succeed || data.retcode === 500) {
 -         yield put({
 -           type: 'getKfList',
 -           payload: { kb_id: payload.kb_id },
 -         });
 -       }
 -       return data.retcode;
 -     },
 -   },
 -   subscriptions: {
 -     setup({ dispatch, history }) {
 -       history.listen(({ location }) => {
 -         const state: { from: string } = (location.state ?? {
 -           from: '',
 -         }) as { from: string };
 -         if (
 -           state.from === '/knowledge' || // TODO: Just directly determine whether the current page is on the knowledge list page.
 -           location.pathname === '/knowledge/dataset/upload'
 -         ) {
 -           dispatch({
 -             type: 'setPagination',
 -             payload: { current: 1, pageSize: 10 },
 -           });
 -         }
 -       });
 -     },
 -   },
 - };
 - export default model;
 
 
  |