mirror of
https://github.com/langgenius/dify.git
synced 2025-12-06 15:54:57 +00:00
fix: add isRunning prop to ProcessDocuments and related components for better processing state management
This commit is contained in:
parent
a919e3e135
commit
405139c377
@ -416,6 +416,7 @@ const CreateFormPipeline = () => {
|
|||||||
<ProcessDocuments
|
<ProcessDocuments
|
||||||
ref={formRef}
|
ref={formRef}
|
||||||
dataSourceNodeId={datasource!.nodeId}
|
dataSourceNodeId={datasource!.nodeId}
|
||||||
|
isRunning={isPending}
|
||||||
onProcess={onClickProcess}
|
onProcess={onClickProcess}
|
||||||
onPreview={onClickPreview}
|
onPreview={onClickPreview}
|
||||||
onSubmit={handleSubmit}
|
onSubmit={handleSubmit}
|
||||||
|
|||||||
@ -13,6 +13,7 @@ type OptionsProps = {
|
|||||||
onSubmit: (data: Record<string, any>) => void
|
onSubmit: (data: Record<string, any>) => void
|
||||||
onPreview: () => void
|
onPreview: () => void
|
||||||
ref: React.RefObject<any>
|
ref: React.RefObject<any>
|
||||||
|
isRunning: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
const Form = ({
|
const Form = ({
|
||||||
@ -22,6 +23,7 @@ const Form = ({
|
|||||||
onSubmit,
|
onSubmit,
|
||||||
onPreview,
|
onPreview,
|
||||||
ref,
|
ref,
|
||||||
|
isRunning,
|
||||||
}: OptionsProps) => {
|
}: OptionsProps) => {
|
||||||
const form = useAppForm({
|
const form = useAppForm({
|
||||||
defaultValues: initialData,
|
defaultValues: initialData,
|
||||||
@ -74,6 +76,7 @@ const Form = ({
|
|||||||
onReset={handleReset}
|
onReset={handleReset}
|
||||||
resetDisabled={!isDirty}
|
resetDisabled={!isDirty}
|
||||||
onPreview={onPreview}
|
onPreview={onPreview}
|
||||||
|
previewDisabled={isRunning}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@ -6,12 +6,14 @@ import { RiSearchEyeLine } from '@remixicon/react'
|
|||||||
type HeaderProps = {
|
type HeaderProps = {
|
||||||
onReset: () => void
|
onReset: () => void
|
||||||
resetDisabled: boolean
|
resetDisabled: boolean
|
||||||
|
previewDisabled: boolean
|
||||||
onPreview?: () => void
|
onPreview?: () => void
|
||||||
}
|
}
|
||||||
|
|
||||||
const Header = ({
|
const Header = ({
|
||||||
onReset,
|
onReset,
|
||||||
resetDisabled,
|
resetDisabled,
|
||||||
|
previewDisabled,
|
||||||
onPreview,
|
onPreview,
|
||||||
}: HeaderProps) => {
|
}: HeaderProps) => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
@ -28,6 +30,7 @@ const Header = ({
|
|||||||
variant='secondary-accent'
|
variant='secondary-accent'
|
||||||
onClick={onPreview}
|
onClick={onPreview}
|
||||||
className='gap-x-0.5'
|
className='gap-x-0.5'
|
||||||
|
disabled={previewDisabled}
|
||||||
>
|
>
|
||||||
<RiSearchEyeLine className='size-4' />
|
<RiSearchEyeLine className='size-4' />
|
||||||
<span className='px-0.5'>{t('datasetPipeline.addDocuments.stepTwo.previewChunks')}</span>
|
<span className='px-0.5'>{t('datasetPipeline.addDocuments.stepTwo.previewChunks')}</span>
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import { useConfigurations, useInitialData } from '@/app/components/rag-pipeline
|
|||||||
type ProcessDocumentsProps = {
|
type ProcessDocumentsProps = {
|
||||||
dataSourceNodeId: string
|
dataSourceNodeId: string
|
||||||
ref: React.RefObject<any>
|
ref: React.RefObject<any>
|
||||||
|
isRunning: boolean
|
||||||
onProcess: () => void
|
onProcess: () => void
|
||||||
onPreview: () => void
|
onPreview: () => void
|
||||||
onSubmit: (data: Record<string, any>) => void
|
onSubmit: (data: Record<string, any>) => void
|
||||||
@ -16,6 +17,7 @@ type ProcessDocumentsProps = {
|
|||||||
|
|
||||||
const ProcessDocuments = ({
|
const ProcessDocuments = ({
|
||||||
dataSourceNodeId,
|
dataSourceNodeId,
|
||||||
|
isRunning,
|
||||||
onProcess,
|
onProcess,
|
||||||
onPreview,
|
onPreview,
|
||||||
onSubmit,
|
onSubmit,
|
||||||
@ -36,8 +38,9 @@ const ProcessDocuments = ({
|
|||||||
schema={schema}
|
schema={schema}
|
||||||
onSubmit={onSubmit}
|
onSubmit={onSubmit}
|
||||||
onPreview={onPreview}
|
onPreview={onPreview}
|
||||||
|
isRunning={isRunning}
|
||||||
/>
|
/>
|
||||||
<Actions runDisabled={isFetchingParams} onBack={onBack} onProcess={onProcess} />
|
<Actions runDisabled={isFetchingParams || isRunning} onBack={onBack} onProcess={onProcess} />
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,12 +8,13 @@ import Loading from '@/app/components/base/loading'
|
|||||||
import ProcessDocuments from './process-documents'
|
import ProcessDocuments from './process-documents'
|
||||||
import LeftHeader from './left-header'
|
import LeftHeader from './left-header'
|
||||||
import { usePipelineExecutionLog, useRunPublishedPipeline } from '@/service/use-pipeline'
|
import { usePipelineExecutionLog, useRunPublishedPipeline } from '@/service/use-pipeline'
|
||||||
import type { PublishedPipelineRunPreviewResponse } from '@/models/pipeline'
|
import type { OnlineDriveFile, PublishedPipelineRunPreviewResponse } from '@/models/pipeline'
|
||||||
import { DatasourceType } from '@/models/pipeline'
|
import { DatasourceType, OnlineDriveFileType } from '@/models/pipeline'
|
||||||
import { noop } from 'lodash-es'
|
import { noop } from 'lodash-es'
|
||||||
import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail'
|
import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail'
|
||||||
import { useRouter } from 'next/navigation'
|
import { useRouter } from 'next/navigation'
|
||||||
import { useInvalidDocumentDetail, useInvalidDocumentList } from '@/service/knowledge/use-document'
|
import { useInvalidDocumentDetail, useInvalidDocumentList } from '@/service/knowledge/use-document'
|
||||||
|
import { isFile } from '../../../create-from-pipeline/data-source/online-drive/utils'
|
||||||
|
|
||||||
type PipelineSettingsProps = {
|
type PipelineSettingsProps = {
|
||||||
datasetId: string
|
datasetId: string
|
||||||
@ -76,6 +77,21 @@ const PipelineSettings = ({
|
|||||||
return onlineDocuments
|
return onlineDocuments
|
||||||
}, [lastRunData])
|
}, [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 { mutateAsync: runPublishedPipeline, isIdle, isPending } = useRunPublishedPipeline()
|
||||||
|
|
||||||
const handlePreviewChunks = useCallback(async (data: Record<string, any>) => {
|
const handlePreviewChunks = useCallback(async (data: Record<string, any>) => {
|
||||||
@ -117,10 +133,10 @@ const PipelineSettings = ({
|
|||||||
onSuccess: () => {
|
onSuccess: () => {
|
||||||
invalidDocumentList()
|
invalidDocumentList()
|
||||||
invalidDocumentDetail()
|
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(() => {
|
const onClickProcess = useCallback(() => {
|
||||||
isPreview.current = false
|
isPreview.current = false
|
||||||
@ -160,6 +176,7 @@ const PipelineSettings = ({
|
|||||||
onProcess={onClickProcess}
|
onProcess={onClickProcess}
|
||||||
onPreview={onClickPreview}
|
onPreview={onClickPreview}
|
||||||
onSubmit={handleSubmit}
|
onSubmit={handleSubmit}
|
||||||
|
isRunning={isPending}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -169,9 +186,10 @@ const PipelineSettings = ({
|
|||||||
<div className='flex h-full flex-col pl-2 pt-2'>
|
<div className='flex h-full flex-col pl-2 pt-2'>
|
||||||
<ChunkPreview
|
<ChunkPreview
|
||||||
dataSourceType={lastRunData!.datasource_type}
|
dataSourceType={lastRunData!.datasource_type}
|
||||||
files={files}
|
localFiles={files}
|
||||||
onlineDocuments={onlineDocuments}
|
onlineDocuments={onlineDocuments}
|
||||||
websitePages={websitePages}
|
websitePages={websitePages}
|
||||||
|
onlineDriveFiles={onlineDriveFiles}
|
||||||
isIdle={isIdle}
|
isIdle={isIdle}
|
||||||
isPending={isPending && isPreview.current}
|
isPending={isPending && isPreview.current}
|
||||||
estimateData={estimateData}
|
estimateData={estimateData}
|
||||||
@ -179,6 +197,7 @@ const PipelineSettings = ({
|
|||||||
handlePreviewFileChange={noop}
|
handlePreviewFileChange={noop}
|
||||||
handlePreviewOnlineDocumentChange={noop}
|
handlePreviewOnlineDocumentChange={noop}
|
||||||
handlePreviewWebsitePageChange={noop}
|
handlePreviewWebsitePageChange={noop}
|
||||||
|
handlePreviewOnlineDriveFileChange={noop}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import { useConfigurations, useInitialData } from '@/app/components/rag-pipeline
|
|||||||
type ProcessDocumentsProps = {
|
type ProcessDocumentsProps = {
|
||||||
datasourceNodeId: string
|
datasourceNodeId: string
|
||||||
lastRunInputData: Record<string, any>
|
lastRunInputData: Record<string, any>
|
||||||
|
isRunning: boolean
|
||||||
ref: React.RefObject<any>
|
ref: React.RefObject<any>
|
||||||
onProcess: () => void
|
onProcess: () => void
|
||||||
onPreview: () => void
|
onPreview: () => void
|
||||||
@ -16,6 +17,7 @@ type ProcessDocumentsProps = {
|
|||||||
const ProcessDocuments = ({
|
const ProcessDocuments = ({
|
||||||
datasourceNodeId,
|
datasourceNodeId,
|
||||||
lastRunInputData,
|
lastRunInputData,
|
||||||
|
isRunning,
|
||||||
onProcess,
|
onProcess,
|
||||||
onPreview,
|
onPreview,
|
||||||
onSubmit,
|
onSubmit,
|
||||||
@ -35,8 +37,9 @@ const ProcessDocuments = ({
|
|||||||
schema={schema}
|
schema={schema}
|
||||||
onSubmit={onSubmit}
|
onSubmit={onSubmit}
|
||||||
onPreview={onPreview}
|
onPreview={onPreview}
|
||||||
|
isRunning={isRunning}
|
||||||
/>
|
/>
|
||||||
<Actions runDisabled={isFetchingParams} onProcess={onProcess} />
|
<Actions runDisabled={isFetchingParams || isRunning} onProcess={onProcess} />
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user