import { useFetchNextChunkList } from '@/hooks/use-chunk-request'; import { useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import DocumentPreview from './components/document-preview'; import { useFetchPipelineFileLogDetail, useGetChunkHighlights, useHandleChunkCardClick, useRerunDataflow, useTimelineDataFlow, } from './hooks'; import DocumentHeader from './components/document-preview/document-header'; import { TimelineNode } from '@/components/originui/timeline'; import { PageHeader } from '@/components/page-header'; import Spotlight from '@/components/spotlight'; import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from '@/components/ui/breadcrumb'; import { Button } from '@/components/ui/button'; import { Modal } from '@/components/ui/modal/modal'; import { QueryStringMap, useNavigatePage, } from '@/hooks/logic-hooks/navigate-hooks'; import { useGetKnowledgeSearchParams } from '@/hooks/route-hook'; import { useGetDocumentUrl } from './components/document-preview/hooks'; import TimelineDataFlow from './components/time-line'; import { TimelineNodeType } from './constant'; import styles from './index.less'; import { IDslComponent } from './interface'; import ParserContainer from './parser'; const Chunk = () => { const { data: { documentInfo }, } = useFetchNextChunkList(); const { selectedChunkId } = useHandleChunkCardClick(); const [activeStepId, setActiveStepId] = useState(2); const { data: dataset } = useFetchPipelineFileLogDetail(); const { t } = useTranslation(); const { timelineNodes } = useTimelineDataFlow(dataset); const { navigateToDataset, getQueryString, navigateToDatasetList } = useNavigatePage(); const fileUrl = useGetDocumentUrl(); const { highlights, setWidthAndHeight } = useGetChunkHighlights(selectedChunkId); const fileType = useMemo(() => { switch (documentInfo?.type) { case 'doc': return documentInfo?.name.split('.').pop() || 'doc'; case 'visual': case 'docx': case 'txt': case 'md': case 'pdf': return documentInfo?.type; } return 'unknown'; }, [documentInfo]); const { handleReRunFunc, isChange, setIsChange, loading: reRunLoading, } = useRerunDataflow({ data: dataset, }); const handleStepChange = (id: number | string, step: TimelineNode) => { if (isChange) { Modal.show({ visible: true, className: '!w-[560px]', title: t('dataflowParser.changeStepModalTitle'), children: (
), onVisibleChange: () => { Modal.destroy(); }, footer: (
), }); } else { setActiveStepId(id); } }; const { type } = useGetKnowledgeSearchParams(); const currentTimeNode: TimelineNode = useMemo(() => { return ( timelineNodes.find((node) => node.id === activeStepId) || ({} as TimelineNode) ); }, [activeStepId, timelineNodes]); return ( <> {t('knowledgeDetails.dataset')} {t('knowledgeDetails.overview')} {documentInfo?.name} {type === 'dataflow' && (
)}
{/* {currentTimeNode?.type === TimelineNodeType.splitter && ( )} */} {/* {currentTimeNode?.type === TimelineNodeType.parser && ( */} {(currentTimeNode?.type === TimelineNodeType.parser || currentTimeNode?.type === TimelineNodeType.characterSplitter || currentTimeNode?.type === TimelineNodeType.titleSplitter) && ( )} {/* )} */}
); }; export default Chunk;