| import { LlmModelType } from '@/constants/knowledge'; |
| import { |
| useFetchKnowledgeBaseConfiguration, |
| useUpdateKnowledge, |
| } from '@/hooks/knowledge-hooks'; |
| import { useSelectLlmOptionsByModelType } from '@/hooks/llm-hooks'; |
| import { useNavigateToDataset } from '@/hooks/route-hook'; |
| import { useSelectParserList } from '@/hooks/user-setting-hooks'; |
| import { |
| getBase64FromUploadFileList, |
| getUploadFileListFromBase64, |
| } from '@/utils/file-util'; |
| import { useIsFetching } from '@tanstack/react-query'; |
| import { Form, UploadFile } from 'antd'; |
| import { FormInstance } from 'antd/lib'; |
| import pick from 'lodash/pick'; |
| import { useCallback, useEffect } from 'react'; |
|
|
| export const useSubmitKnowledgeConfiguration = (form: FormInstance) => { |
| const { saveKnowledgeConfiguration, loading } = useUpdateKnowledge(); |
| const navigateToDataset = useNavigateToDataset(); |
|
|
| const submitKnowledgeConfiguration = useCallback(async () => { |
| const values = await form.validateFields(); |
| const avatar = await getBase64FromUploadFileList(values.avatar); |
| saveKnowledgeConfiguration({ |
| ...values, |
| avatar, |
| }); |
| navigateToDataset(); |
| }, [saveKnowledgeConfiguration, form, navigateToDataset]); |
|
|
| return { |
| submitKnowledgeConfiguration, |
| submitLoading: loading, |
| navigateToDataset, |
| }; |
| }; |
|
|
| export const useFetchKnowledgeConfigurationOnMount = (form: FormInstance) => { |
| const parserList = useSelectParserList(); |
| const allOptions = useSelectLlmOptionsByModelType(); |
|
|
| const { data: knowledgeDetails } = useFetchKnowledgeBaseConfiguration(); |
|
|
| useEffect(() => { |
| const fileList: UploadFile[] = getUploadFileListFromBase64( |
| knowledgeDetails.avatar, |
| ); |
| form.setFieldsValue({ |
| ...pick(knowledgeDetails, [ |
| 'description', |
| 'name', |
| 'permission', |
| 'embd_id', |
| 'parser_id', |
| 'language', |
| 'parser_config', |
| ]), |
| avatar: fileList, |
| }); |
| }, [form, knowledgeDetails]); |
|
|
| return { |
| parserList, |
| embeddingModelOptions: allOptions[LlmModelType.Embedding], |
| disabled: knowledgeDetails.chunk_num > 0, |
| }; |
| }; |
|
|
| export const useSelectKnowledgeDetailsLoading = () => |
| useIsFetching({ queryKey: ['fetchKnowledgeDetail'] }) > 0; |
|
|
| export const useHandleChunkMethodChange = () => { |
| const [form] = Form.useForm(); |
| const chunkMethod = Form.useWatch('parser_id', form); |
|
|
| return { form, chunkMethod }; |
| }; |
|
|