ソースを参照

fix: add isRunning prop to ProcessDocuments and related components for better processing state management

tags/2.0.0-beta.1
twwu 3ヶ月前
コミット
405139c377

+ 1
- 0
web/app/components/datasets/documents/create-from-pipeline/index.tsx ファイルの表示

@@ -416,6 +416,7 @@ const CreateFormPipeline = () => {
<ProcessDocuments
ref={formRef}
dataSourceNodeId={datasource!.nodeId}
isRunning={isPending}
onProcess={onClickProcess}
onPreview={onClickPreview}
onSubmit={handleSubmit}

+ 3
- 0
web/app/components/datasets/documents/create-from-pipeline/process-documents/form.tsx ファイルの表示

@@ -13,6 +13,7 @@ type OptionsProps = {
onSubmit: (data: Record<string, any>) => void
onPreview: () => void
ref: React.RefObject<any>
isRunning: boolean
}

const Form = ({
@@ -22,6 +23,7 @@ const Form = ({
onSubmit,
onPreview,
ref,
isRunning,
}: OptionsProps) => {
const form = useAppForm({
defaultValues: initialData,
@@ -74,6 +76,7 @@ const Form = ({
onReset={handleReset}
resetDisabled={!isDirty}
onPreview={onPreview}
previewDisabled={isRunning}
/>
)}
/>

+ 3
- 0
web/app/components/datasets/documents/create-from-pipeline/process-documents/header.tsx ファイルの表示

@@ -6,12 +6,14 @@ import { RiSearchEyeLine } from '@remixicon/react'
type HeaderProps = {
onReset: () => void
resetDisabled: boolean
previewDisabled: boolean
onPreview?: () => void
}

const Header = ({
onReset,
resetDisabled,
previewDisabled,
onPreview,
}: HeaderProps) => {
const { t } = useTranslation()
@@ -28,6 +30,7 @@ const Header = ({
variant='secondary-accent'
onClick={onPreview}
className='gap-x-0.5'
disabled={previewDisabled}
>
<RiSearchEyeLine className='size-4' />
<span className='px-0.5'>{t('datasetPipeline.addDocuments.stepTwo.previewChunks')}</span>

+ 4
- 1
web/app/components/datasets/documents/create-from-pipeline/process-documents/index.tsx ファイルの表示

@@ -8,6 +8,7 @@ import { useConfigurations, useInitialData } from '@/app/components/rag-pipeline
type ProcessDocumentsProps = {
dataSourceNodeId: string
ref: React.RefObject<any>
isRunning: boolean
onProcess: () => void
onPreview: () => void
onSubmit: (data: Record<string, any>) => void
@@ -16,6 +17,7 @@ type ProcessDocumentsProps = {

const ProcessDocuments = ({
dataSourceNodeId,
isRunning,
onProcess,
onPreview,
onSubmit,
@@ -36,8 +38,9 @@ const ProcessDocuments = ({
schema={schema}
onSubmit={onSubmit}
onPreview={onPreview}
isRunning={isRunning}
/>
<Actions runDisabled={isFetchingParams} onBack={onBack} onProcess={onProcess} />
<Actions runDisabled={isFetchingParams || isRunning} onBack={onBack} onProcess={onProcess} />
</div>
)
}

+ 24
- 5
web/app/components/datasets/documents/detail/settings/pipeline-settings/index.tsx ファイルの表示

@@ -8,12 +8,13 @@ import Loading from '@/app/components/base/loading'
import ProcessDocuments from './process-documents'
import LeftHeader from './left-header'
import { usePipelineExecutionLog, useRunPublishedPipeline } from '@/service/use-pipeline'
import type { PublishedPipelineRunPreviewResponse } from '@/models/pipeline'
import { DatasourceType } from '@/models/pipeline'
import type { OnlineDriveFile, PublishedPipelineRunPreviewResponse } from '@/models/pipeline'
import { DatasourceType, OnlineDriveFileType } from '@/models/pipeline'
import { noop } from 'lodash-es'
import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail'
import { useRouter } from 'next/navigation'
import { useInvalidDocumentDetail, useInvalidDocumentList } from '@/service/knowledge/use-document'
import { isFile } from '../../../create-from-pipeline/data-source/online-drive/utils'

type PipelineSettingsProps = {
datasetId: string
@@ -76,6 +77,21 @@ const PipelineSettings = ({
return onlineDocuments
}, [lastRunData])

const onlineDriveFiles = useMemo(() => {
const onlineDriveFiles: OnlineDriveFile[] = []
if (lastRunData?.datasource_type === DatasourceType.onlineDrive) {
const { key } = lastRunData.datasource_info
const isFileType = isFile(key)
const filePathList = key.split('/')
onlineDriveFiles.push({
key,
displayName: `${isFileType ? filePathList.pop() : filePathList[filePathList.length - 2]}${isFileType ? '' : '/'}`,
type: isFileType ? OnlineDriveFileType.file : OnlineDriveFileType.folder,
})
}
return onlineDriveFiles
}, [lastRunData])

const { mutateAsync: runPublishedPipeline, isIdle, isPending } = useRunPublishedPipeline()

const handlePreviewChunks = useCallback(async (data: Record<string, any>) => {
@@ -117,10 +133,10 @@ const PipelineSettings = ({
onSuccess: () => {
invalidDocumentList()
invalidDocumentDetail()
push(`/datasets/${datasetId}/documents/${documentId}`)
push(`/datasets/${datasetId}/documents`)
},
})
}, [datasetId, documentId, invalidDocumentDetail, invalidDocumentList, lastRunData, pipelineId, push, runPublishedPipeline])
}, [datasetId, invalidDocumentDetail, invalidDocumentList, lastRunData, pipelineId, push, runPublishedPipeline])

const onClickProcess = useCallback(() => {
isPreview.current = false
@@ -160,6 +176,7 @@ const PipelineSettings = ({
onProcess={onClickProcess}
onPreview={onClickPreview}
onSubmit={handleSubmit}
isRunning={isPending}
/>
</div>
</div>
@@ -169,9 +186,10 @@ const PipelineSettings = ({
<div className='flex h-full flex-col pl-2 pt-2'>
<ChunkPreview
dataSourceType={lastRunData!.datasource_type}
files={files}
localFiles={files}
onlineDocuments={onlineDocuments}
websitePages={websitePages}
onlineDriveFiles={onlineDriveFiles}
isIdle={isIdle}
isPending={isPending && isPreview.current}
estimateData={estimateData}
@@ -179,6 +197,7 @@ const PipelineSettings = ({
handlePreviewFileChange={noop}
handlePreviewOnlineDocumentChange={noop}
handlePreviewWebsitePageChange={noop}
handlePreviewOnlineDriveFileChange={noop}
/>
</div>
</div>

+ 4
- 1
web/app/components/datasets/documents/detail/settings/pipeline-settings/process-documents/index.tsx ファイルの表示

@@ -7,6 +7,7 @@ import { useConfigurations, useInitialData } from '@/app/components/rag-pipeline
type ProcessDocumentsProps = {
datasourceNodeId: string
lastRunInputData: Record<string, any>
isRunning: boolean
ref: React.RefObject<any>
onProcess: () => void
onPreview: () => void
@@ -16,6 +17,7 @@ type ProcessDocumentsProps = {
const ProcessDocuments = ({
datasourceNodeId,
lastRunInputData,
isRunning,
onProcess,
onPreview,
onSubmit,
@@ -35,8 +37,9 @@ const ProcessDocuments = ({
schema={schema}
onSubmit={onSubmit}
onPreview={onPreview}
isRunning={isRunning}
/>
<Actions runDisabled={isFetchingParams} onProcess={onProcess} />
<Actions runDisabled={isFetchingParams || isRunning} onProcess={onProcess} />
</div>
)
}

読み込み中…
キャンセル
保存