import MaxTokenNumber from '@/components/max-token-number'; import { IModalManagerChildrenProps } from '@/components/modal-manager'; import { IKnowledgeFileParserConfig } from '@/interfaces/database/knowledge'; import { IChangeParserConfigRequestBody } from '@/interfaces/request/document'; import { MinusCircleOutlined, PlusOutlined, QuestionCircleOutlined, } from '@ant-design/icons'; import { Button, Divider, Form, InputNumber, Modal, Select, Space, Tooltip, } from 'antd'; import omit from 'lodash/omit'; import React, { useEffect, useMemo } from 'react'; import { useFetchParserListOnMount } from './hooks'; import { useTranslate } from '@/hooks/common-hooks'; import EntityTypesItem from '../entity-types-item'; import LayoutRecognize from '../layout-recognize'; import ParseConfiguration, { showRaptorParseConfiguration, } from '../parse-configuration'; import styles from './index.less'; interface IProps extends Omit { loading: boolean; onOk: ( parserId: string, parserConfig: IChangeParserConfigRequestBody, ) => void; showModal?(): void; parserId: string; parserConfig: IKnowledgeFileParserConfig; documentExtension: string; documentId: string; } const hidePagesChunkMethods = [ 'qa', 'table', 'picture', 'resume', 'one', 'knowledge_graph', ]; const ChunkMethodModal: React.FC = ({ documentId, parserId, onOk, hideModal, visible, documentExtension, parserConfig, loading, }) => { const { parserList, handleChange, selectedTag } = useFetchParserListOnMount( documentId, parserId, documentExtension, ); const [form] = Form.useForm(); const { t } = useTranslate('knowledgeDetails'); const handleOk = async () => { const values = await form.validateFields(); const parser_config = { ...values.parser_config, pages: values.pages?.map((x: any) => [x.from, x.to]) ?? [], }; onOk(selectedTag, parser_config); }; const isPdf = documentExtension === 'pdf'; const showPages = useMemo(() => { return isPdf && hidePagesChunkMethods.every((x) => x !== selectedTag); }, [selectedTag, isPdf]); const showOne = useMemo(() => { return ( isPdf && hidePagesChunkMethods .filter((x) => x !== 'one' && x !== 'knowledge_graph') .every((x) => x !== selectedTag) ); }, [selectedTag, isPdf]); const showMaxTokenNumber = selectedTag === 'naive'; const hideDivider = [showPages, showOne, showMaxTokenNumber].every( (x) => x === false, ); const showEntityTypes = selectedTag === 'knowledge_graph'; const afterClose = () => { form.resetFields(); }; useEffect(() => { if (visible) { const pages = parserConfig.pages?.map((x) => ({ from: x[0], to: x[1] })) ?? []; form.setFieldsValue({ pages: pages.length > 0 ? pages : [{ from: 1, to: 1024 }], parser_config: omit(parserConfig, 'pages'), }); } }, [form, parserConfig, visible]); return (