| import { IChunk, IKnowledgeFile } from '@/interfaces/database/knowledge'; | |
| import { IChangeParserConfigRequestBody } from '@/interfaces/request/document'; | |
| import { api_host } from '@/utils/api'; | |
| import { buildChunkHighlights } from '@/utils/document-util'; | |
| 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; | |
| }; | |