From 22974ea6b006c80074b3097b5f6953ea2e7918b3 Mon Sep 17 00:00:00 2001 From: zxhlyh Date: Mon, 19 Jan 2026 15:13:51 +0800 Subject: [PATCH] fix: preview chunk summary --- .../step-two/components/preview-panel.tsx | 3 +++ .../step-two/hooks/use-indexing-config.ts | 20 +------------------ .../step-two/hooks/use-segmentation-state.ts | 15 ++++++++++++-- .../datasets/create/step-two/index.tsx | 12 +++++------ web/models/datasets.ts | 2 +- 5 files changed, 24 insertions(+), 28 deletions(-) diff --git a/web/app/components/datasets/create/step-two/components/preview-panel.tsx b/web/app/components/datasets/create/step-two/components/preview-panel.tsx index 4f25cee5bd..5cb33f2d6d 100644 --- a/web/app/components/datasets/create/step-two/components/preview-panel.tsx +++ b/web/app/components/datasets/create/step-two/components/preview-panel.tsx @@ -14,6 +14,7 @@ import { ChunkingMode } from '@/models/datasets' import { cn } from '@/utils/classnames' import { ChunkContainer, QAPreview } from '../../../chunk' import PreviewDocumentPicker from '../../../common/document-picker/preview-document-picker' +import SummaryLabel from '../../../documents/detail/completed/common/summary-label' import { PreviewSlice } from '../../../formatted-text/flavours/preview-slice' import { FormattedText } from '../../../formatted-text/formatted' import PreviewContainer from '../../../preview/container' @@ -99,6 +100,7 @@ export const PreviewPanel: FC = ({ characterCount={item.content.length} > {item.content} + {item.summary && } )) )} @@ -131,6 +133,7 @@ export const PreviewPanel: FC = ({ ) })} + {item.summary && } ) }) diff --git a/web/app/components/datasets/create/step-two/hooks/use-indexing-config.ts b/web/app/components/datasets/create/step-two/hooks/use-indexing-config.ts index 881a9fb043..97fc9c260f 100644 --- a/web/app/components/datasets/create/step-two/hooks/use-indexing-config.ts +++ b/web/app/components/datasets/create/step-two/hooks/use-indexing-config.ts @@ -1,7 +1,6 @@ import type { DefaultModel } from '@/app/components/header/account-setting/model-provider-page/declarations' -import type { SummaryIndexSetting as SummaryIndexSettingType } from '@/models/datasets' import type { RetrievalConfig } from '@/types/app' -import { useCallback, useEffect, useMemo, useRef, useState } from 'react' +import { useEffect, useMemo, useState } from 'react' import { checkShowMultiModalTip } from '@/app/components/datasets/settings/utils' import { ModelTypeEnum } from '@/app/components/header/account-setting/model-provider-page/declarations' import { useDefaultModel, useModelList, useModelListAndDefaultModelAndCurrentProviderAndModel } from '@/app/components/header/account-setting/model-provider-page/hooks' @@ -30,7 +29,6 @@ export type UseIndexingConfigOptions = { initialRetrievalConfig?: RetrievalConfig isAPIKeySet: boolean hasSetIndexType: boolean - initialSummaryIndexSetting?: SummaryIndexSettingType } export const useIndexingConfig = (options: UseIndexingConfigOptions) => { @@ -40,7 +38,6 @@ export const useIndexingConfig = (options: UseIndexingConfigOptions) => { initialRetrievalConfig, isAPIKeySet, hasSetIndexType, - initialSummaryIndexSetting, } = options // Rerank model @@ -118,17 +115,6 @@ export const useIndexingConfig = (options: UseIndexingConfigOptions) => { // Get effective indexing technique const getIndexingTechnique = () => initialIndexType || indexType - // Summary index setting - const [summaryIndexSetting, setSummaryIndexSetting] = useState( - initialSummaryIndexSetting ?? undefined, - ) - const summaryIndexSettingRef = useRef(initialSummaryIndexSetting ?? undefined) - - const handleSummaryIndexSettingChange = useCallback((payload: SummaryIndexSettingType) => { - setSummaryIndexSetting({ ...summaryIndexSettingRef.current, ...payload }) - summaryIndexSettingRef.current = { ...summaryIndexSettingRef.current, ...payload } - }, []) - return { // Index type indexType, @@ -151,10 +137,6 @@ export const useIndexingConfig = (options: UseIndexingConfigOptions) => { // Computed showMultiModalTip, - - // Summary index setting - summaryIndexSetting, - handleSummaryIndexSettingChange, } } diff --git a/web/app/components/datasets/create/step-two/hooks/use-segmentation-state.ts b/web/app/components/datasets/create/step-two/hooks/use-segmentation-state.ts index 69cc089b4f..27dca8f48f 100644 --- a/web/app/components/datasets/create/step-two/hooks/use-segmentation-state.ts +++ b/web/app/components/datasets/create/step-two/hooks/use-segmentation-state.ts @@ -1,5 +1,5 @@ -import type { ParentMode, PreProcessingRule, ProcessRule, Rules } from '@/models/datasets' -import { useCallback, useState } from 'react' +import type { ParentMode, PreProcessingRule, ProcessRule, Rules, SummaryIndexSetting as SummaryIndexSettingType } from '@/models/datasets' +import { useCallback, useRef, useState } from 'react' import { ChunkingMode, ProcessMode } from '@/models/datasets' import escape from './escape' import unescape from './unescape' @@ -39,6 +39,7 @@ export const defaultParentChildConfig: ParentChildConfig = { export type UseSegmentationStateOptions = { initialSegmentationType?: ProcessMode + initialSummaryIndexSetting?: SummaryIndexSettingType } export const useSegmentationState = (options: UseSegmentationStateOptions = {}) => { @@ -58,6 +59,12 @@ export const useSegmentationState = (options: UseSegmentationStateOptions = {}) // Pre-processing rules const [rules, setRules] = useState([]) const [defaultConfig, setDefaultConfig] = useState() + const [summaryIndexSetting, setSummaryIndexSetting] = useState() + const summaryIndexSettingRef = useRef(summaryIndexSetting) + const handleSummaryIndexSettingChange = useCallback((payload: SummaryIndexSettingType) => { + setSummaryIndexSetting({ ...summaryIndexSettingRef.current, ...payload }) + summaryIndexSettingRef.current = { ...summaryIndexSettingRef.current, ...payload } + }, []) // Parent-child config const [parentChildConfig, setParentChildConfig] = useState(defaultParentChildConfig) @@ -134,6 +141,7 @@ export const useSegmentationState = (options: UseSegmentationStateOptions = {}) }, }, mode: 'hierarchical', + summary_index_setting: summaryIndexSettingRef.current, } as ProcessRule } @@ -147,6 +155,7 @@ export const useSegmentationState = (options: UseSegmentationStateOptions = {}) }, }, mode: segmentationType, + summary_index_setting: summaryIndexSettingRef.current, } as ProcessRule }, [rules, parentChildConfig, segmentIdentifier, maxChunkLength, overlap, segmentationType]) @@ -204,6 +213,8 @@ export const useSegmentationState = (options: UseSegmentationStateOptions = {}) defaultConfig, setDefaultConfig, toggleRule, + summaryIndexSetting, + handleSummaryIndexSettingChange, // Parent-child config parentChildConfig, diff --git a/web/app/components/datasets/create/step-two/index.tsx b/web/app/components/datasets/create/step-two/index.tsx index 4dfccb9381..f9f0ea03d7 100644 --- a/web/app/components/datasets/create/step-two/index.tsx +++ b/web/app/components/datasets/create/step-two/index.tsx @@ -65,6 +65,7 @@ const StepTwo: FC = ({ // Custom hooks const segmentation = useSegmentationState({ initialSegmentationType: currentDataset?.doc_form === ChunkingMode.parentChild ? ProcessMode.parentChild : ProcessMode.general, + initialSummaryIndexSetting: currentDataset?.summary_index_setting, }) const indexing = useIndexingConfig({ initialIndexType: propsIndexingType, @@ -72,7 +73,6 @@ const StepTwo: FC = ({ initialRetrievalConfig: currentDataset?.retrieval_model_dict, isAPIKeySet, hasSetIndexType, - initialSummaryIndexSetting: currentDataset?.summary_index_setting, }) const preview = usePreviewState({ dataSourceType, files, notionPages, websitePages, documentDetail, datasetId }) const creation = useDocumentCreation({ @@ -157,7 +157,7 @@ const StepTwo: FC = ({ }) if (!isValid) return - const params = creation.buildCreationParams(currentDocForm, docLanguage, segmentation.getProcessRule(currentDocForm), indexing.retrievalConfig, indexing.embeddingModel, indexing.getIndexingTechnique(), indexing.summaryIndexSetting) + const params = creation.buildCreationParams(currentDocForm, docLanguage, segmentation.getProcessRule(currentDocForm), indexing.retrievalConfig, indexing.embeddingModel, indexing.getIndexingTechnique(), segmentation.summaryIndexSetting) if (!params) return await creation.executeCreation(params, indexing.indexType, indexing.retrievalConfig) @@ -218,8 +218,8 @@ const StepTwo: FC = ({ onPreview={updatePreview} onReset={segmentation.resetToDefaults} locale={locale} - summaryIndexSetting={indexing.summaryIndexSetting} - onSummaryIndexSettingChange={indexing.handleSummaryIndexSettingChange} + summaryIndexSetting={segmentation.summaryIndexSetting} + onSummaryIndexSettingChange={segmentation.handleSummaryIndexSettingChange} /> )} {showParentChildOption && ( @@ -239,8 +239,8 @@ const StepTwo: FC = ({ onRuleToggle={segmentation.toggleRule} onPreview={updatePreview} onReset={segmentation.resetToDefaults} - summaryIndexSetting={indexing.summaryIndexSetting} - onSummaryIndexSettingChange={indexing.handleSummaryIndexSettingChange} + summaryIndexSetting={segmentation.summaryIndexSetting} + onSummaryIndexSettingChange={segmentation.handleSummaryIndexSettingChange} /> )} diff --git a/web/models/datasets.ts b/web/models/datasets.ts index 2d6a7842ba..ed16e1a67c 100644 --- a/web/models/datasets.ts +++ b/web/models/datasets.ts @@ -233,7 +233,7 @@ export type IndexingEstimateResponse = { total_price: number currency: string total_segments: number - preview: Array<{ content: string, child_chunks: string[] }> + preview: Array<{ content: string, child_chunks: string[], summary?: string }> qa_preview?: QA[] }