Spaces:
Paused
Paused
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; | |
}; | |