import { LlmModelType } from '@/constants/knowledge'; import { useSetModalState } from '@/hooks/common-hooks'; import { useSelectLlmOptionsByModelType } from '@/hooks/llm-hooks'; import { useFetchKnowledgeBaseConfiguration } from '@/hooks/use-knowledge-request'; import { useSelectParserList } from '@/hooks/user-setting-hooks'; import { useIsFetching } from '@tanstack/react-query'; import { pick } from 'lodash'; import { useCallback, useEffect, useState } from 'react'; import { UseFormReturn } from 'react-hook-form'; import { z } from 'zod'; import { formSchema } from './form-schema'; // The value that does not need to be displayed in the analysis method Select const HiddenFields = ['email', 'picture', 'audio']; export function useSelectChunkMethodList() { const parserList = useSelectParserList(); return parserList.filter((x) => !HiddenFields.some((y) => y === x.value)); } export function useSelectEmbeddingModelOptions() { const allOptions = useSelectLlmOptionsByModelType(); return allOptions[LlmModelType.Embedding]; } export function useHasParsedDocument(isEdit?: boolean) { const { data: knowledgeDetails } = useFetchKnowledgeBaseConfiguration({ isEdit, }); return knowledgeDetails.chunk_num > 0; } export const useFetchKnowledgeConfigurationOnMount = ( form: UseFormReturn, any, undefined>, ) => { const { data: knowledgeDetails } = useFetchKnowledgeBaseConfiguration(); useEffect(() => { const parser_config = { ...form.formState?.defaultValues?.parser_config, ...knowledgeDetails.parser_config, }; const formValues = { ...pick({ ...knowledgeDetails, parser_config: parser_config }, [ 'description', 'name', 'permission', 'embd_id', 'parser_id', 'language', 'parser_config', 'pagerank', 'avatar', ]), } as z.infer; form.reset(formValues); }, [form, knowledgeDetails]); return knowledgeDetails; }; export const useSelectKnowledgeDetailsLoading = () => useIsFetching({ queryKey: ['fetchKnowledgeDetail'] }) > 0; export const useRenameKnowledgeTag = () => { const [tag, setTag] = useState(''); const { visible: tagRenameVisible, hideModal: hideTagRenameModal, showModal: showFileRenameModal, } = useSetModalState(); const handleShowTagRenameModal = useCallback( (record: string) => { setTag(record); showFileRenameModal(); }, [showFileRenameModal], ); return { initialName: tag, tagRenameVisible, hideTagRenameModal, showTagRenameModal: handleShowTagRenameModal, }; };