| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367 | 
							- import { IDocumentInfo } from '@/interfaces/database/document';
 - import { IChunk, IKnowledgeFile } from '@/interfaces/database/knowledge';
 - import { IChangeParserConfigRequestBody } from '@/interfaces/request/document';
 - import chatService from '@/services/chat-service';
 - import kbService from '@/services/knowledge-service';
 - import { api_host } from '@/utils/api';
 - import { buildChunkHighlights } from '@/utils/document-util';
 - import { useMutation, useQuery } from '@tanstack/react-query';
 - import { UploadFile } from 'antd';
 - import { useCallback, useMemo, useState } from 'react';
 - import { IHighlight } from 'react-pdf-highlighter';
 - import { useDispatch, useSelector } from 'umi';
 - import { useGetKnowledgeSearchParams } from './route-hook';
 - import { useOneNamespaceEffectsLoading } from './store-hooks';
 - 
 - export const useGetDocumentUrl = (documentId?: string) => {
 -   const getDocumentUrl = useCallback(
 -     (id?: string) => {
 -       return `${api_host}/document/get/${documentId || id}`;
 -     },
 -     [documentId],
 -   );
 - 
 -   return getDocumentUrl;
 - };
 - 
 - export const useGetChunkHighlights = (selectedChunk: IChunk) => {
 -   const [size, setSize] = useState({ width: 849, height: 1200 });
 - 
 -   const highlights: IHighlight[] = useMemo(() => {
 -     return buildChunkHighlights(selectedChunk, size);
 -   }, [selectedChunk, size]);
 - 
 -   const setWidthAndHeight = (width: number, height: number) => {
 -     setSize((pre) => {
 -       if (pre.height !== height || pre.width !== width) {
 -         return { height, width };
 -       }
 -       return pre;
 -     });
 -   };
 - 
 -   return { highlights, setWidthAndHeight };
 - };
 - 
 - export const useFetchDocumentList = () => {
 -   const { knowledgeId } = useGetKnowledgeSearchParams();
 - 
 -   const dispatch = useDispatch();
 - 
 -   const fetchKfList = useCallback(() => {
 -     return dispatch<any>({
 -       type: 'kFModel/getKfList',
 -       payload: {
 -         kb_id: knowledgeId,
 -       },
 -     });
 -   }, [dispatch, knowledgeId]);
 - 
 -   return fetchKfList;
 - };
 - 
 - export const useSetDocumentStatus = () => {
 -   const dispatch = useDispatch();
 -   const { knowledgeId } = useGetKnowledgeSearchParams();
 - 
 -   const setDocumentStatus = useCallback(
 -     (status: boolean, documentId: string) => {
 -       dispatch({
 -         type: 'kFModel/updateDocumentStatus',
 -         payload: {
 -           doc_id: documentId,
 -           status: Number(status),
 -           kb_id: knowledgeId,
 -         },
 -       });
 -     },
 -     [dispatch, knowledgeId],
 -   );
 - 
 -   return setDocumentStatus;
 - };
 - 
 - export const useSelectDocumentList = () => {
 -   const list: IKnowledgeFile[] = useSelector(
 -     (state: any) => state.kFModel.data,
 -   );
 -   return list;
 - };
 - 
 - export const useSaveDocumentName = () => {
 -   const dispatch = useDispatch();
 -   const { knowledgeId } = useGetKnowledgeSearchParams();
 - 
 -   const saveName = useCallback(
 -     (documentId: string, name: string) => {
 -       return dispatch<any>({
 -         type: 'kFModel/document_rename',
 -         payload: {
 -           doc_id: documentId,
 -           name: name,
 -           kb_id: knowledgeId,
 -         },
 -       });
 -     },
 -     [dispatch, knowledgeId],
 -   );
 - 
 -   return saveName;
 - };
 - 
 - export const useCreateDocument = () => {
 -   const dispatch = useDispatch();
 -   const { knowledgeId } = useGetKnowledgeSearchParams();
 - 
 -   const createDocument = useCallback(
 -     (name: string) => {
 -       try {
 -         return dispatch<any>({
 -           type: 'kFModel/document_create',
 -           payload: {
 -             name,
 -             kb_id: knowledgeId,
 -           },
 -         });
 -       } catch (errorInfo) {
 -         console.log('Failed:', errorInfo);
 -       }
 -     },
 -     [dispatch, knowledgeId],
 -   );
 - 
 -   return createDocument;
 - };
 - 
 - export const useSetDocumentParser = () => {
 -   const dispatch = useDispatch();
 -   const { knowledgeId } = useGetKnowledgeSearchParams();
 - 
 -   const setDocumentParser = useCallback(
 -     (
 -       parserId: string,
 -       documentId: string,
 -       parserConfig: IChangeParserConfigRequestBody,
 -     ) => {
 -       try {
 -         return dispatch<any>({
 -           type: 'kFModel/document_change_parser',
 -           payload: {
 -             parser_id: parserId,
 -             doc_id: documentId,
 -             kb_id: knowledgeId,
 -             parser_config: parserConfig,
 -           },
 -         });
 -       } catch (errorInfo) {
 -         console.log('Failed:', errorInfo);
 -       }
 -     },
 -     [dispatch, knowledgeId],
 -   );
 - 
 -   return setDocumentParser;
 - };
 - 
 - export const useRemoveDocument = () => {
 -   const dispatch = useDispatch();
 -   const { knowledgeId } = useGetKnowledgeSearchParams();
 - 
 -   const removeDocument = useCallback(
 -     (documentIds: string[]) => {
 -       try {
 -         return dispatch<any>({
 -           type: 'kFModel/document_rm',
 -           payload: {
 -             doc_id: documentIds,
 -             kb_id: knowledgeId,
 -           },
 -         });
 -       } catch (errorInfo) {
 -         console.log('Failed:', errorInfo);
 -       }
 -     },
 -     [dispatch, knowledgeId],
 -   );
 - 
 -   return removeDocument;
 - };
 - 
 - export const useUploadDocument = () => {
 -   const dispatch = useDispatch();
 -   const { knowledgeId } = useGetKnowledgeSearchParams();
 - 
 -   const uploadDocument = useCallback(
 -     (fileList: UploadFile[]) => {
 -       try {
 -         return dispatch<any>({
 -           type: 'kFModel/upload_document',
 -           payload: {
 -             fileList,
 -             kb_id: knowledgeId,
 -           },
 -         });
 -       } catch (errorInfo) {
 -         console.log('Failed:', errorInfo);
 -       }
 -     },
 -     [dispatch, knowledgeId],
 -   );
 - 
 -   return uploadDocument;
 - };
 - 
 - export const useWebCrawl = () => {
 -   const dispatch = useDispatch();
 -   const { knowledgeId } = useGetKnowledgeSearchParams();
 -   return useCallback(
 -     (name: string, url: string) => {
 -       try {
 -         return dispatch<any>({
 -           type: 'kFModel/web_crawl',
 -           payload: {
 -             name,
 -             url,
 -             kb_id: knowledgeId,
 -           },
 -         });
 -       } catch (errorInfo) {
 -         console.log('Failed:', errorInfo);
 -       }
 -     },
 -     [dispatch],
 -   );
 - };
 - 
 - export const useRunDocument = () => {
 -   const dispatch = useDispatch();
 - 
 -   const runDocumentByIds = useCallback(
 -     (payload: any) => {
 -       try {
 -         return dispatch<any>({
 -           type: 'kFModel/document_run',
 -           payload,
 -         });
 -       } catch (errorInfo) {
 -         console.log('Failed:', errorInfo);
 -       }
 -     },
 -     [dispatch],
 -   );
 - 
 -   return runDocumentByIds;
 - };
 - 
 - export const useSelectRunDocumentLoading = () => {
 -   const loading = useOneNamespaceEffectsLoading('kFModel', ['document_run']);
 -   return loading;
 - };
 - 
 - export const useFetchDocumentInfosByIds = () => {
 -   const [ids, setDocumentIds] = useState<string[]>([]);
 -   const { data } = useQuery<IDocumentInfo[]>({
 -     queryKey: ['fetchDocumentInfos', ids],
 -     enabled: ids.length > 0,
 -     initialData: [],
 -     queryFn: async () => {
 -       const { data } = await kbService.document_infos({ doc_ids: ids });
 -       if (data.retcode === 0) {
 -         return data.data;
 -       }
 - 
 -       return [];
 -     },
 -   });
 - 
 -   return { data, setDocumentIds };
 - };
 - 
 - export const useFetchDocumentThumbnailsByIds = () => {
 -   const [ids, setDocumentIds] = useState<string[]>([]);
 -   const { data } = useQuery<Record<string, string>>({
 -     queryKey: ['fetchDocumentThumbnails', ids],
 -     enabled: ids.length > 0,
 -     initialData: {},
 -     queryFn: async () => {
 -       const { data } = await kbService.document_thumbnails({ doc_ids: ids });
 -       if (data.retcode === 0) {
 -         return data.data;
 -       }
 -       return {};
 -     },
 -   });
 - 
 -   return { data, setDocumentIds };
 - };
 - 
 - export const useRemoveNextDocument = () => {
 -   // const queryClient = useQueryClient();
 -   const {
 -     data,
 -     isPending: loading,
 -     mutateAsync,
 -   } = useMutation({
 -     mutationKey: ['removeDocument'],
 -     mutationFn: async (documentId: string) => {
 -       const data = await kbService.document_rm({ doc_id: documentId });
 -       // if (data.retcode === 0) {
 -       //   queryClient.invalidateQueries({ queryKey: ['fetchFlowList'] });
 -       // }
 -       return data;
 -     },
 -   });
 - 
 -   return { data, loading, removeDocument: mutateAsync };
 - };
 - 
 - export const useDeleteDocument = () => {
 -   // const queryClient = useQueryClient();
 -   const {
 -     data,
 -     isPending: loading,
 -     mutateAsync,
 -   } = useMutation({
 -     mutationKey: ['deleteDocument'],
 -     mutationFn: async (documentIds: string[]) => {
 -       const data = await kbService.document_delete({ doc_ids: documentIds });
 -       // if (data.retcode === 0) {
 -       //   queryClient.invalidateQueries({ queryKey: ['fetchFlowList'] });
 -       // }
 -       return data;
 -     },
 -   });
 - 
 -   return { data, loading, deleteDocument: mutateAsync };
 - };
 - 
 - export const useUploadAndParseDocument = (uploadMethod: string) => {
 -   const {
 -     data,
 -     isPending: loading,
 -     mutateAsync,
 -   } = useMutation({
 -     mutationKey: ['uploadAndParseDocument'],
 -     mutationFn: async ({
 -       conversationId,
 -       fileList,
 -     }: {
 -       conversationId: string;
 -       fileList: UploadFile[];
 -     }) => {
 -       const formData = new FormData();
 -       formData.append('conversation_id', conversationId);
 -       fileList.forEach((file: UploadFile) => {
 -         formData.append('file', file as any);
 -       });
 -       if (uploadMethod === 'upload_and_parse') {
 -         const data = await kbService.upload_and_parse(formData);
 -         return data?.data;
 -       }
 -       const data = await chatService.uploadAndParseExternal(formData);
 -       return data?.data;
 -     },
 -   });
 - 
 -   return { data, loading, uploadAndParseDocument: mutateAsync };
 - };
 
 
  |