From 5cc6a2bf335d685047155a9e592b22ba20f195a2 Mon Sep 17 00:00:00 2001 From: twwu Date: Tue, 17 Jun 2025 14:41:06 +0800 Subject: [PATCH 1/3] refactor: update toast notification handling and improve context usage in DocumentDetail --- .../datasets/documents/detail/index.tsx | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/web/app/components/datasets/documents/detail/index.tsx b/web/app/components/datasets/documents/detail/index.tsx index bca54b62a4..533e1105d8 100644 --- a/web/app/components/datasets/documents/detail/index.tsx +++ b/web/app/components/datasets/documents/detail/index.tsx @@ -1,7 +1,7 @@ 'use client' import type { FC } from 'react' import React, { useMemo, useState } from 'react' -import { createContext, useContext, useContextSelector } from 'use-context-selector' +import { createContext, useContextSelector } from 'use-context-selector' import { useTranslation } from 'react-i18next' import { useRouter } from 'next/navigation' import { RiArrowLeftLine, RiLayoutLeft2Line, RiLayoutRight2Line } from '@remixicon/react' @@ -17,9 +17,9 @@ import style from './style.module.css' import cn from '@/utils/classnames' import Divider from '@/app/components/base/divider' import Loading from '@/app/components/base/loading' -import { ToastContext } from '@/app/components/base/toast' +import Toast from '@/app/components/base/toast' import type { ChunkingMode, ParentMode, ProcessMode } from '@/models/datasets' -import { useDatasetDetailContext } from '@/context/dataset-detail' +import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail' import FloatRightContainer from '@/app/components/base/float-right-container' import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints' import { useCheckSegmentBatchImportProgress, useChildSegmentListKey, useSegmentBatchImport, useSegmentListKey } from '@/service/knowledge/use-segment' @@ -83,8 +83,7 @@ const DocumentDetail: FC = ({ datasetId, documentId }) => { const media = useBreakpoints() const isMobile = media === MediaType.mobile - const { notify } = useContext(ToastContext) - const { dataset } = useDatasetDetailContext() + const dataset = useDatasetDetailContextWithSelector(s => s.dataset) const embeddingAvailable = !!dataset?.embedding_available const [showMetadata, setShowMetadata] = useState(!isMobile) const [newSegmentModalVisible, setNewSegmentModalVisible] = useState(false) @@ -103,10 +102,10 @@ const DocumentDetail: FC = ({ datasetId, documentId }) => { if (res.job_status === ProcessStatus.WAITING || res.job_status === ProcessStatus.PROCESSING) setTimeout(() => checkProcess(res.job_id), 2500) if (res.job_status === ProcessStatus.ERROR) - notify({ type: 'error', message: `${t('datasetDocuments.list.batchModal.runError')}` }) + Toast.notify({ type: 'error', message: `${t('datasetDocuments.list.batchModal.runError')}` }) }, onError: (e) => { - notify({ type: 'error', message: `${t('datasetDocuments.list.batchModal.runError')}${'message' in e ? `: ${e.message}` : ''}` }) + Toast.notify({ type: 'error', message: `${t('datasetDocuments.list.batchModal.runError')}${'message' in e ? `: ${e.message}` : ''}` }) }, }) } @@ -124,7 +123,7 @@ const DocumentDetail: FC = ({ datasetId, documentId }) => { checkProcess(res.job_id) }, onError: (e) => { - notify({ type: 'error', message: `${t('datasetDocuments.list.batchModal.runError')}${'message' in e ? `: ${e.message}` : ''}` }) + Toast.notify({ type: 'error', message: `${t('datasetDocuments.list.batchModal.runError')}${'message' in e ? `: ${e.message}` : ''}` }) }, }) } @@ -171,12 +170,12 @@ const DocumentDetail: FC = ({ datasetId, documentId }) => { } const mode = useMemo(() => { - return documentDetail?.document_process_rule?.mode - }, [documentDetail?.document_process_rule]) + return documentDetail?.document_process_rule?.mode || documentDetail?.dataset_process_rule?.mode + }, [documentDetail?.document_process_rule?.mode, documentDetail?.dataset_process_rule?.mode]) const parentMode = useMemo(() => { - return documentDetail?.document_process_rule?.rules?.parent_mode - }, [documentDetail?.document_process_rule]) + return documentDetail?.document_process_rule?.rules?.parent_mode || documentDetail?.dataset_process_rule?.rules?.parent_mode || 'paragraph' + }, [documentDetail?.document_process_rule?.rules?.parent_mode, documentDetail?.dataset_process_rule?.rules?.parent_mode]) const isFullDocMode = useMemo(() => { return mode === 'hierarchical' && parentMode === 'full-doc' @@ -260,7 +259,8 @@ const DocumentDetail: FC = ({ datasetId, documentId }) => { {isDetailLoading ? :
{embedding ? Date: Tue, 17 Jun 2025 16:13:49 +0800 Subject: [PATCH 2/3] feat: enhance processing components by adding runDisabled state and fetching indicators --- .../process-documents/actions.tsx | 3 +++ .../create-from-pipeline/process-documents/hooks.ts | 3 ++- .../create-from-pipeline/process-documents/index.tsx | 7 ++++--- .../data-source/website-crawl/base/crawler.tsx | 11 +++++++---- .../data-source/website-crawl/base/options/index.tsx | 4 +++- .../panel/test-run/document-processing/actions.tsx | 4 +++- .../panel/test-run/document-processing/hooks.ts | 3 ++- .../panel/test-run/document-processing/index.tsx | 10 +++++----- 8 files changed, 29 insertions(+), 16 deletions(-) diff --git a/web/app/components/datasets/documents/create-from-pipeline/process-documents/actions.tsx b/web/app/components/datasets/documents/create-from-pipeline/process-documents/actions.tsx index 072ab61a98..301a2d97e7 100644 --- a/web/app/components/datasets/documents/create-from-pipeline/process-documents/actions.tsx +++ b/web/app/components/datasets/documents/create-from-pipeline/process-documents/actions.tsx @@ -5,11 +5,13 @@ import { RiArrowLeftLine } from '@remixicon/react' type ActionsProps = { onBack: () => void + runDisabled?: boolean onProcess: () => void } const Actions = ({ onBack, + runDisabled, onProcess, }: ActionsProps) => { const { t } = useTranslation() @@ -26,6 +28,7 @@ const Actions = ({
) } -export default ProcessDocuments +export default React.memo(ProcessDocuments) diff --git a/web/app/components/rag-pipeline/components/panel/test-run/data-source/website-crawl/base/crawler.tsx b/web/app/components/rag-pipeline/components/panel/test-run/data-source/website-crawl/base/crawler.tsx index 622b16bae7..f85208dbc5 100644 --- a/web/app/components/rag-pipeline/components/panel/test-run/data-source/website-crawl/base/crawler.tsx +++ b/web/app/components/rag-pipeline/components/panel/test-run/data-source/website-crawl/base/crawler.tsx @@ -54,7 +54,7 @@ const Crawler = ({ const pipelineId = useDatasetDetailContextWithSelector(s => s.dataset?.pipeline_id) const usePreProcessingParams = useRef(!isInPipeline ? usePublishedPipelinePreProcessingParams : useDraftPipelinePreProcessingParams) - const { data: paramsConfig } = usePreProcessingParams.current({ + const { data: paramsConfig, isFetching: isFetchingParams } = usePreProcessingParams.current({ pipeline_id: pipelineId!, node_id: nodeId, }, !!pipelineId && !!nodeId) @@ -129,6 +129,10 @@ const Crawler = ({ setCrawlErrorMessage('') }, [runDatasourceNode, nodeId, pipelineId, onCheckedCrawlResultChange, checkCrawlStatus, t]) + const handleSubmit = useCallback((value: Record) => { + handleRun(value) + }, [handleRun]) + return (
{ - handleRun(value) - }} + onSubmit={handleSubmit} />
{!isInit && ( diff --git a/web/app/components/rag-pipeline/components/panel/test-run/data-source/website-crawl/base/options/index.tsx b/web/app/components/rag-pipeline/components/panel/test-run/data-source/website-crawl/base/options/index.tsx index 537ca5bf7a..53ba3fc7f4 100644 --- a/web/app/components/rag-pipeline/components/panel/test-run/data-source/website-crawl/base/options/index.tsx +++ b/web/app/components/rag-pipeline/components/panel/test-run/data-source/website-crawl/base/options/index.tsx @@ -17,6 +17,7 @@ const I18N_PREFIX = 'datasetCreation.stepOne.website' type OptionsProps = { variables: RAGPipelineVariables isRunning: boolean + runDisabled?: boolean controlFoldOptions?: number onSubmit: (data: Record) => void } @@ -24,6 +25,7 @@ type OptionsProps = { const Options = ({ variables, isRunning, + runDisabled, controlFoldOptions, onSubmit, }: OptionsProps) => { @@ -90,7 +92,7 @@ const Options = ({