From 0e9ff8c1f7bae51917bf8b8d233a390f8b636723 Mon Sep 17 00:00:00 2001 From: balibabu Date: Fri, 16 May 2025 09:53:47 +0800 Subject: [PATCH] Feat: Fixed the issue where the dataset configuration page kept refreshing #3221 (#7666) ### What problem does this PR solve? Feat: Fixed the issue where the dataset configuration page kept refreshing #3221 ### Type of change - [x] New Feature (non-breaking change which adds functionality) --- web/src/components/form-container.tsx | 2 +- .../graph-rag-form-fields.tsx | 8 ++- web/src/hooks/llm-hooks.tsx | 49 +++++++++------- .../dataset/setting/chunk-method-form.tsx | 22 +------ .../setting/configuration-form-container.tsx | 16 ++++++ .../dataset/setting/configuration/audio.tsx | 7 ++- .../dataset/setting/configuration/book.tsx | 32 +++++++---- .../dataset/setting/configuration/email.tsx | 7 ++- .../setting/configuration/knowledge-graph.tsx | 2 +- .../dataset/setting/configuration/laws.tsx | 30 ++++++---- .../dataset/setting/configuration/manual.tsx | 27 +++++---- .../dataset/setting/configuration/naive.tsx | 23 ++++---- .../dataset/setting/configuration/one.tsx | 7 ++- .../dataset/setting/configuration/paper.tsx | 30 ++++++---- .../dataset/setting/configuration/picture.tsx | 7 ++- .../setting/configuration/presentation.tsx | 31 ++++++---- .../dataset/setting/configuration/qa.tsx | 7 ++- .../dataset/setting/configuration/resume.tsx | 7 ++- .../dataset/setting/configuration/table.tsx | 7 ++- .../dataset/setting/configuration/tag.tsx | 7 ++- web/src/pages/dataset/setting/form-schema.ts | 41 +++++++++++++ .../pages/dataset/setting/general-form.tsx | 2 +- web/src/pages/dataset/setting/hooks.ts | 10 +++- web/src/pages/dataset/setting/index.tsx | 57 ++++++------------- 24 files changed, 263 insertions(+), 175 deletions(-) create mode 100644 web/src/pages/dataset/setting/configuration-form-container.tsx create mode 100644 web/src/pages/dataset/setting/form-schema.ts diff --git a/web/src/components/form-container.tsx b/web/src/components/form-container.tsx index b40194f00..097e7196b 100644 --- a/web/src/components/form-container.tsx +++ b/web/src/components/form-container.tsx @@ -1,7 +1,7 @@ import { cn } from '@/lib/utils'; import { PropsWithChildren } from 'react'; -type FormContainerProps = { +export type FormContainerProps = { className?: string; show?: boolean; } & PropsWithChildren; diff --git a/web/src/components/parse-configuration/graph-rag-form-fields.tsx b/web/src/components/parse-configuration/graph-rag-form-fields.tsx index 30f8f390b..7448ca372 100644 --- a/web/src/components/parse-configuration/graph-rag-form-fields.tsx +++ b/web/src/components/parse-configuration/graph-rag-form-fields.tsx @@ -46,6 +46,7 @@ export const showGraphRagItems = (parserId: DocumentParserType | undefined) => { type GraphRagItemsProps = { marginBottom?: boolean; + className?: string; }; export function UseGraphRagFormField() { @@ -75,7 +76,10 @@ export function UseGraphRagFormField() { } // The three types "table", "resume" and "one" do not display this configuration. -const GraphRagItems = ({ marginBottom = false }: GraphRagItemsProps) => { +const GraphRagItems = ({ + marginBottom = false, + className = 'p-10', +}: GraphRagItemsProps) => { const { t } = useTranslate('knowledgeConfiguration'); const form = useFormContext(); @@ -99,7 +103,7 @@ const GraphRagItems = ({ marginBottom = false }: GraphRagItemsProps) => { ); return ( - + {useRaptor && ( <> diff --git a/web/src/hooks/llm-hooks.tsx b/web/src/hooks/llm-hooks.tsx index d907a4907..7583cbd42 100644 --- a/web/src/hooks/llm-hooks.tsx +++ b/web/src/hooks/llm-hooks.tsx @@ -18,7 +18,7 @@ import { getLLMIconName, getRealModelName } from '@/utils/llm-util'; import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { Flex, message } from 'antd'; import { DefaultOptionType } from 'antd/es/select'; -import { useMemo } from 'react'; +import { useCallback, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; export const useFetchLlmList = ( @@ -77,7 +77,7 @@ function buildLlmOptionsWithIcon(x: IThirdOAIModel) { export const useSelectLlmOptionsByModelType = () => { const llmInfo: IThirdOAIModelCollection = useFetchLlmList(); - const groupImage2TextOptions = () => { + const groupImage2TextOptions = useCallback(() => { const modelType = LlmModelType.Image2text; const modelTag = modelType.toUpperCase(); @@ -96,27 +96,32 @@ export const useSelectLlmOptionsByModelType = () => { }; }) .filter((x) => x.options.length > 0); - }; + }, [llmInfo]); - const groupOptionsByModelType = (modelType: LlmModelType) => { - return Object.entries(llmInfo) - .filter(([, value]) => - modelType ? value.some((x) => x.model_type.includes(modelType)) : true, - ) - .map(([key, value]) => { - return { - label: key, - options: value - .filter( - (x) => - (modelType ? x.model_type.includes(modelType) : true) && - x.available, - ) - .map(buildLlmOptionsWithIcon), - }; - }) - .filter((x) => x.options.length > 0); - }; + const groupOptionsByModelType = useCallback( + (modelType: LlmModelType) => { + return Object.entries(llmInfo) + .filter(([, value]) => + modelType + ? value.some((x) => x.model_type.includes(modelType)) + : true, + ) + .map(([key, value]) => { + return { + label: key, + options: value + .filter( + (x) => + (modelType ? x.model_type.includes(modelType) : true) && + x.available, + ) + .map(buildLlmOptionsWithIcon), + }; + }) + .filter((x) => x.options.length > 0); + }, + [llmInfo], + ); return { [LlmModelType.Chat]: groupOptionsByModelType(LlmModelType.Chat), diff --git a/web/src/pages/dataset/setting/chunk-method-form.tsx b/web/src/pages/dataset/setting/chunk-method-form.tsx index 6ff706d98..a65eed6a1 100644 --- a/web/src/pages/dataset/setting/chunk-method-form.tsx +++ b/web/src/pages/dataset/setting/chunk-method-form.tsx @@ -1,8 +1,7 @@ import { useFormContext, useWatch } from 'react-hook-form'; -import { useTranslation } from 'react-i18next'; import { DocumentParserType } from '@/constants/knowledge'; -import { useMemo, useState } from 'react'; +import { useMemo } from 'react'; import { AudioConfiguration } from './configuration/audio'; import { BookConfiguration } from './configuration/book'; import { EmailConfiguration } from './configuration/email'; @@ -18,7 +17,6 @@ import { QAConfiguration } from './configuration/qa'; import { ResumeConfiguration } from './configuration/resume'; import { TableConfiguration } from './configuration/table'; import { TagConfiguration } from './configuration/tag'; -import { useFetchKnowledgeConfigurationOnMount } from './hooks'; const ConfigurationComponentMap = { [DocumentParserType.Naive]: NaiveConfiguration, @@ -44,14 +42,8 @@ function EmptyComponent() { export function ChunkMethodForm() { const form = useFormContext(); - const { t } = useTranslation(); - const [finalParserId, setFinalParserId] = useState( - DocumentParserType.Naive, - ); - const knowledgeDetails = useFetchKnowledgeConfigurationOnMount(form); - - const parserId: DocumentParserType = useWatch({ + const finalParserId: DocumentParserType = useWatch({ control: form.control, name: 'parser_id', }); @@ -62,16 +54,8 @@ export function ChunkMethodForm() { : EmptyComponent; }, [finalParserId]); - // useEffect(() => { - // setFinalParserId(parserId); - // }, [parserId]); - - // useEffect(() => { - // setFinalParserId(knowledgeDetails.parser_id as DocumentParserType); - // }, [knowledgeDetails.parser_id]); - return ( -
+
); diff --git a/web/src/pages/dataset/setting/configuration-form-container.tsx b/web/src/pages/dataset/setting/configuration-form-container.tsx new file mode 100644 index 000000000..215f032dd --- /dev/null +++ b/web/src/pages/dataset/setting/configuration-form-container.tsx @@ -0,0 +1,16 @@ +import { FormContainer, FormContainerProps } from '@/components/form-container'; +import { cn } from '@/lib/utils'; +import { PropsWithChildren } from 'react'; + +export function ConfigurationFormContainer({ + children, + className, +}: FormContainerProps) { + return ( + {children} + ); +} + +export function MainContainer({ children }: PropsWithChildren) { + return
{children}
; +} diff --git a/web/src/pages/dataset/setting/configuration/audio.tsx b/web/src/pages/dataset/setting/configuration/audio.tsx index f1a810c2f..f7f372f7a 100644 --- a/web/src/pages/dataset/setting/configuration/audio.tsx +++ b/web/src/pages/dataset/setting/configuration/audio.tsx @@ -5,14 +5,15 @@ import { import PageRankFormField from '@/components/page-rank-form-field'; import GraphRagItems from '@/components/parse-configuration/graph-rag-form-fields'; import RaptorFormFields from '@/components/parse-configuration/raptor-form-fields'; +import { ConfigurationFormContainer } from '../configuration-form-container'; import { TagItems } from '../tag-item'; import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; export function AudioConfiguration() { return ( - <> - + + @@ -26,6 +27,6 @@ export function AudioConfiguration() { - + ); } diff --git a/web/src/pages/dataset/setting/configuration/book.tsx b/web/src/pages/dataset/setting/configuration/book.tsx index 28261e2d9..39f58f03f 100644 --- a/web/src/pages/dataset/setting/configuration/book.tsx +++ b/web/src/pages/dataset/setting/configuration/book.tsx @@ -6,28 +6,38 @@ import { LayoutRecognizeFormField } from '@/components/layout-recognize-form-fie import PageRankFormField from '@/components/page-rank-form-field'; import GraphRagItems from '@/components/parse-configuration/graph-rag-form-fields'; import RaptorFormFields from '@/components/parse-configuration/raptor-form-fields'; +import { + ConfigurationFormContainer, + MainContainer, +} from '../configuration-form-container'; import { TagItems } from '../tag-item'; import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; export function BookConfiguration() { return ( - <> - - - + + + + + - + + - <> + - + - + + + - + - - + + + + ); } diff --git a/web/src/pages/dataset/setting/configuration/email.tsx b/web/src/pages/dataset/setting/configuration/email.tsx index 4d4e730e0..03f4cfcad 100644 --- a/web/src/pages/dataset/setting/configuration/email.tsx +++ b/web/src/pages/dataset/setting/configuration/email.tsx @@ -5,14 +5,15 @@ import { import PageRankFormField from '@/components/page-rank-form-field'; import GraphRagItems from '@/components/parse-configuration/graph-rag-form-fields'; import RaptorFormFields from '@/components/parse-configuration/raptor-form-fields'; +import { ConfigurationFormContainer } from '../configuration-form-container'; import { TagItems } from '../tag-item'; import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; export function EmailConfiguration() { return ( - <> - + + @@ -26,6 +27,6 @@ export function EmailConfiguration() { - + ); } diff --git a/web/src/pages/dataset/setting/configuration/knowledge-graph.tsx b/web/src/pages/dataset/setting/configuration/knowledge-graph.tsx index 8e82b9490..5e2170e97 100644 --- a/web/src/pages/dataset/setting/configuration/knowledge-graph.tsx +++ b/web/src/pages/dataset/setting/configuration/knowledge-graph.tsx @@ -7,8 +7,8 @@ import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; export function KnowledgeGraphConfiguration() { return ( <> - + diff --git a/web/src/pages/dataset/setting/configuration/laws.tsx b/web/src/pages/dataset/setting/configuration/laws.tsx index e6201c3b7..76e819bef 100644 --- a/web/src/pages/dataset/setting/configuration/laws.tsx +++ b/web/src/pages/dataset/setting/configuration/laws.tsx @@ -6,28 +6,38 @@ import { LayoutRecognizeFormField } from '@/components/layout-recognize-form-fie import PageRankFormField from '@/components/page-rank-form-field'; import GraphRagItems from '@/components/parse-configuration/graph-rag-form-fields'; import RaptorFormFields from '@/components/parse-configuration/raptor-form-fields'; +import { + ConfigurationFormContainer, + MainContainer, +} from '../configuration-form-container'; import { TagItems } from '../tag-item'; import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; export function LawsConfiguration() { return ( - <> - - - + + + + + - + + - <> + - + - + + + - - + + + + ); } diff --git a/web/src/pages/dataset/setting/configuration/manual.tsx b/web/src/pages/dataset/setting/configuration/manual.tsx index f82756e27..da5e24c5a 100644 --- a/web/src/pages/dataset/setting/configuration/manual.tsx +++ b/web/src/pages/dataset/setting/configuration/manual.tsx @@ -6,28 +6,35 @@ import { LayoutRecognizeFormField } from '@/components/layout-recognize-form-fie import PageRankFormField from '@/components/page-rank-form-field'; import GraphRagItems from '@/components/parse-configuration/graph-rag-form-fields'; import RaptorFormFields from '@/components/parse-configuration/raptor-form-fields'; +import { + ConfigurationFormContainer, + MainContainer, +} from '../configuration-form-container'; import { TagItems } from '../tag-item'; import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; export function ManualConfiguration() { return ( - <> - - - + + + + + - + + - <> + - - - + + + + - + ); } diff --git a/web/src/pages/dataset/setting/configuration/naive.tsx b/web/src/pages/dataset/setting/configuration/naive.tsx index 2423642c6..c5997c0aa 100644 --- a/web/src/pages/dataset/setting/configuration/naive.tsx +++ b/web/src/pages/dataset/setting/configuration/naive.tsx @@ -4,36 +4,39 @@ import { } from '@/components/auto-keywords-form-field'; import { DelimiterFormField } from '@/components/delimiter-form-field'; import { ExcelToHtmlFormField } from '@/components/excel-to-html-form-field'; -import { FormContainer } from '@/components/form-container'; import { LayoutRecognizeFormField } from '@/components/layout-recognize-form-field'; import { MaxTokenNumberFormField } from '@/components/max-token-number-from-field'; import PageRankFormField from '@/components/page-rank-form-field'; import GraphRagItems from '@/components/parse-configuration/graph-rag-form-fields'; import RaptorFormFields from '@/components/parse-configuration/raptor-form-fields'; +import { + ConfigurationFormContainer, + MainContainer, +} from '../configuration-form-container'; import { TagItems } from '../tag-item'; import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; export function NaiveConfiguration() { return ( -
- + + + - - - + + - - + + - + -
+ ); } diff --git a/web/src/pages/dataset/setting/configuration/one.tsx b/web/src/pages/dataset/setting/configuration/one.tsx index 3a9f6efc2..bd9c166de 100644 --- a/web/src/pages/dataset/setting/configuration/one.tsx +++ b/web/src/pages/dataset/setting/configuration/one.tsx @@ -5,15 +5,16 @@ import { import { LayoutRecognizeFormField } from '@/components/layout-recognize-form-field'; import PageRankFormField from '@/components/page-rank-form-field'; import GraphRagItems from '@/components/parse-configuration/graph-rag-form-fields'; +import { ConfigurationFormContainer } from '../configuration-form-container'; import { TagItems } from '../tag-item'; import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; export function OneConfiguration() { return ( - <> + + - @@ -25,6 +26,6 @@ export function OneConfiguration() { - + ); } diff --git a/web/src/pages/dataset/setting/configuration/paper.tsx b/web/src/pages/dataset/setting/configuration/paper.tsx index 9e1922a7a..3157bb141 100644 --- a/web/src/pages/dataset/setting/configuration/paper.tsx +++ b/web/src/pages/dataset/setting/configuration/paper.tsx @@ -6,28 +6,38 @@ import { LayoutRecognizeFormField } from '@/components/layout-recognize-form-fie import PageRankFormField from '@/components/page-rank-form-field'; import GraphRagItems from '@/components/parse-configuration/graph-rag-form-fields'; import RaptorFormFields from '@/components/parse-configuration/raptor-form-fields'; +import { + ConfigurationFormContainer, + MainContainer, +} from '../configuration-form-container'; import { TagItems } from '../tag-item'; import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; export function PaperConfiguration() { return ( - <> - - - + + + + + - + + - <> + - + - + + + - - + + + + ); } diff --git a/web/src/pages/dataset/setting/configuration/picture.tsx b/web/src/pages/dataset/setting/configuration/picture.tsx index 3720d1920..bb908896f 100644 --- a/web/src/pages/dataset/setting/configuration/picture.tsx +++ b/web/src/pages/dataset/setting/configuration/picture.tsx @@ -3,14 +3,15 @@ import { AutoQuestionsFormField, } from '@/components/auto-keywords-form-field'; import PageRankFormField from '@/components/page-rank-form-field'; +import { ConfigurationFormContainer } from '../configuration-form-container'; import { TagItems } from '../tag-item'; import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; export function PictureConfiguration() { return ( - <> - + + @@ -19,6 +20,6 @@ export function PictureConfiguration() { - + ); } diff --git a/web/src/pages/dataset/setting/configuration/presentation.tsx b/web/src/pages/dataset/setting/configuration/presentation.tsx index 6db4c5aea..f2a38c2c3 100644 --- a/web/src/pages/dataset/setting/configuration/presentation.tsx +++ b/web/src/pages/dataset/setting/configuration/presentation.tsx @@ -6,28 +6,37 @@ import { LayoutRecognizeFormField } from '@/components/layout-recognize-form-fie import PageRankFormField from '@/components/page-rank-form-field'; import GraphRagItems from '@/components/parse-configuration/graph-rag-form-fields'; import RaptorFormFields from '@/components/parse-configuration/raptor-form-fields'; +import { + ConfigurationFormContainer, + MainContainer, +} from '../configuration-form-container'; import { TagItems } from '../tag-item'; import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; export function PresentationConfiguration() { return ( - <> - - - + + + + + - + + - <> + - + - + + + - - - + + + + ); } diff --git a/web/src/pages/dataset/setting/configuration/qa.tsx b/web/src/pages/dataset/setting/configuration/qa.tsx index f76074307..0f5d76f39 100644 --- a/web/src/pages/dataset/setting/configuration/qa.tsx +++ b/web/src/pages/dataset/setting/configuration/qa.tsx @@ -1,16 +1,17 @@ import PageRankFormField from '@/components/page-rank-form-field'; +import { ConfigurationFormContainer } from '../configuration-form-container'; import { TagItems } from '../tag-item'; import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; export function QAConfiguration() { return ( - <> - + + - + ); } diff --git a/web/src/pages/dataset/setting/configuration/resume.tsx b/web/src/pages/dataset/setting/configuration/resume.tsx index 8a67d9af3..a5b3be198 100644 --- a/web/src/pages/dataset/setting/configuration/resume.tsx +++ b/web/src/pages/dataset/setting/configuration/resume.tsx @@ -1,16 +1,17 @@ import PageRankFormField from '@/components/page-rank-form-field'; +import { ConfigurationFormContainer } from '../configuration-form-container'; import { TagItems } from '../tag-item'; import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; export function ResumeConfiguration() { return ( - <> - + + - + ); } diff --git a/web/src/pages/dataset/setting/configuration/table.tsx b/web/src/pages/dataset/setting/configuration/table.tsx index 0e6aecd37..947a633a9 100644 --- a/web/src/pages/dataset/setting/configuration/table.tsx +++ b/web/src/pages/dataset/setting/configuration/table.tsx @@ -1,13 +1,14 @@ import PageRankFormField from '@/components/page-rank-form-field'; +import { ConfigurationFormContainer } from '../configuration-form-container'; import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; export function TableConfiguration() { return ( - <> - + + - + ); } diff --git a/web/src/pages/dataset/setting/configuration/tag.tsx b/web/src/pages/dataset/setting/configuration/tag.tsx index 65ce9cb99..5e6b3a2b9 100644 --- a/web/src/pages/dataset/setting/configuration/tag.tsx +++ b/web/src/pages/dataset/setting/configuration/tag.tsx @@ -1,13 +1,14 @@ import PageRankFormField from '@/components/page-rank-form-field'; +import { ConfigurationFormContainer } from '../configuration-form-container'; import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; export function TagConfiguration() { return ( - <> - + + - + ); } diff --git a/web/src/pages/dataset/setting/form-schema.ts b/web/src/pages/dataset/setting/form-schema.ts new file mode 100644 index 000000000..8df749802 --- /dev/null +++ b/web/src/pages/dataset/setting/form-schema.ts @@ -0,0 +1,41 @@ +import { z } from 'zod'; + +export const formSchema = z.object({ + name: z.string().min(1, { + message: 'Username must be at least 2 characters.', + }), + description: z.string().min(2, { + message: 'Username must be at least 2 characters.', + }), + avatar: z.instanceof(File), + permission: z.string(), + parser_id: z.string(), + embd_id: z.string(), + parser_config: z.object({ + layout_recognize: z.string(), + chunk_token_num: z.number(), + delimiter: z.string(), + auto_keywords: z.number(), + auto_questions: z.number(), + html4excel: z.boolean(), + tag_kb_ids: z.array(z.string()), + topn_tags: z.number(), + raptor: z.object({ + use_raptor: z.boolean(), + prompt: z.string(), + max_token: z.number(), + threshold: z.number(), + max_cluster: z.number(), + random_seed: z.number(), + }), + graphrag: z.object({ + use_graphrag: z.boolean(), + entity_types: z.array(z.string()), + method: z.string(), + resolution: z.boolean(), + community: z.boolean(), + }), + }), + pagerank: z.number(), + // icon: z.array(z.instanceof(File)), +}); diff --git a/web/src/pages/dataset/setting/general-form.tsx b/web/src/pages/dataset/setting/general-form.tsx index c298ce707..d20eba9af 100644 --- a/web/src/pages/dataset/setting/general-form.tsx +++ b/web/src/pages/dataset/setting/general-form.tsx @@ -17,7 +17,7 @@ export function GeneralForm() { const { t } = useTranslation(); return ( - + { const { saveKnowledgeConfiguration, loading } = useUpdateKnowledge(); @@ -59,13 +61,17 @@ export function useHasParsedDocument() { return knowledgeDetails.chunk_num > 0; } -export const useFetchKnowledgeConfigurationOnMount = (form: UseFormReturn) => { +export const useFetchKnowledgeConfigurationOnMount = ( + form: UseFormReturn, any, undefined>, +) => { const { data: knowledgeDetails } = useFetchKnowledgeBaseConfiguration(); useEffect(() => { const fileList: UploadFile[] = getUploadFileListFromBase64( knowledgeDetails.avatar, ); + + console.log('🚀 ~ useEffect ~ fileList:', fileList); form.reset({ ...pick(knowledgeDetails, [ 'description', diff --git a/web/src/pages/dataset/setting/index.tsx b/web/src/pages/dataset/setting/index.tsx index bbbb73ee6..21af68879 100644 --- a/web/src/pages/dataset/setting/index.tsx +++ b/web/src/pages/dataset/setting/index.tsx @@ -1,12 +1,15 @@ +import { ButtonLoading } from '@/components/ui/button'; import { Form } from '@/components/ui/form'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { DocumentParserType } from '@/constants/knowledge'; import { zodResolver } from '@hookform/resolvers/zod'; -import { useForm } from 'react-hook-form'; +import { useForm, useWatch } from 'react-hook-form'; import { z } from 'zod'; import CategoryPanel from './category-panel'; import { ChunkMethodForm } from './chunk-method-form'; +import { formSchema } from './form-schema'; import { GeneralForm } from './general-form'; +import { useFetchKnowledgeConfigurationOnMount } from './hooks'; const enum DocumentType { DeepDOC = 'DeepDOC', @@ -27,45 +30,6 @@ const enum MethodValue { } export default function DatasetSettings() { - const formSchema = z.object({ - name: z.string().min(1, { - message: 'Username must be at least 2 characters.', - }), - description: z.string().min(2, { - message: 'Username must be at least 2 characters.', - }), - avatar: z.instanceof(File), - permission: z.string(), - parser_id: z.string(), - parser_config: z.object({ - layout_recognize: z.string(), - chunk_token_num: z.number(), - delimiter: z.string(), - auto_keywords: z.number(), - auto_questions: z.number(), - html4excel: z.boolean(), - tag_kb_ids: z.array(z.string()), - topn_tags: z.number(), - raptor: z.object({ - use_raptor: z.boolean(), - prompt: z.string(), - max_token: z.number(), - threshold: z.number(), - max_cluster: z.number(), - random_seed: z.number(), - }), - graphrag: z.object({ - use_graphrag: z.boolean(), - entity_types: z.array(z.string()), - method: z.string(), - resolution: z.boolean(), - community: z.boolean(), - }), - }), - pagerank: z.number(), - // icon: z.array(z.instanceof(File)), - }); - const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { @@ -97,6 +61,13 @@ export default function DatasetSettings() { }, }); + useFetchKnowledgeConfigurationOnMount(form); + + const parserId = useWatch({ + control: form.control, + name: 'parser_id', + }); + async function onSubmit(data: z.infer) { console.log('🚀 ~ DatasetSettings ~ data:', data); } @@ -128,9 +99,13 @@ export default function DatasetSettings() { +
+ Submit +
- + +
);