From a430284aa21e3ae1f0d5654e55b2ad2852519cc2 Mon Sep 17 00:00:00 2001 From: wwf <yearningwang@iqtogether.com> Date: 星期三, 04 六月 2025 15:17:49 +0800 Subject: [PATCH] 初始化 --- app/components/workflow/panel/debug-and-preview/hooks.ts | 161 +++++++++++++++++++++-------------------------------- 1 files changed, 65 insertions(+), 96 deletions(-) diff --git a/app/components/workflow/panel/debug-and-preview/hooks.ts b/app/components/workflow/panel/debug-and-preview/hooks.ts index 4ef33a6..d3e4e90 100644 --- a/app/components/workflow/panel/debug-and-preview/hooks.ts +++ b/app/components/workflow/panel/debug-and-preview/hooks.ts @@ -11,7 +11,7 @@ import { useWorkflowRun } from '../../hooks' import { NodeRunningStatus, WorkflowRunningStatus } from '../../types' import { useWorkflowStore } from '../../store' -import { DEFAULT_ITER_TIMES, DEFAULT_LOOP_TIMES } from '../../constants' +import { DEFAULT_ITER_TIMES } from '../../constants' import type { ChatItem, ChatItemInTree, @@ -30,6 +30,7 @@ } from '@/app/components/base/file-uploader/utils' import type { FileEntity } from '@/app/components/base/file-uploader/types' import { getThreadMessages } from '@/app/components/base/chat/utils' +import type { NodeTracing } from '@/types/workflow' type GetAbortController = (abortController: AbortController) => void type SendCallback = { @@ -57,7 +58,6 @@ const suggestedQuestionsAbortControllerRef = useRef<AbortController | null>(null) const { setIterTimes, - setLoopTimes, } = workflowStore.getState() const handleResponding = useCallback((isResponding: boolean) => { @@ -129,23 +129,20 @@ if (stopChat && taskIdRef.current) stopChat(taskIdRef.current) setIterTimes(DEFAULT_ITER_TIMES) - setLoopTimes(DEFAULT_LOOP_TIMES) if (suggestedQuestionsAbortControllerRef.current) suggestedQuestionsAbortControllerRef.current.abort() - }, [handleResponding, setIterTimes, setLoopTimes, stopChat]) + }, [handleResponding, setIterTimes, stopChat]) const handleRestart = useCallback(() => { conversationId.current = '' taskIdRef.current = '' handleStop() setIterTimes(DEFAULT_ITER_TIMES) - setLoopTimes(DEFAULT_LOOP_TIMES) setChatTree([]) setSuggestQuestions([]) }, [ handleStop, setIterTimes, - setLoopTimes, ]) const updateCurrentQAOnTree = useCallback(({ @@ -311,7 +308,6 @@ ) setSuggestQuestions(data) } - // eslint-disable-next-line unused-imports/no-unused-vars catch (error) { setSuggestQuestions([]) } @@ -362,7 +358,21 @@ responseItem.workflowProcess!.tracing!.push({ ...data, status: NodeRunningStatus.Running, + details: [], + } as any) + updateCurrentQAOnTree({ + placeholderQuestionId, + questionItem, + responseItem, + parentId: params.parent_message_id, }) + }, + onIterationNext: ({ data }) => { + const tracing = responseItem.workflowProcess!.tracing! + const iterations = tracing.find(item => item.node_id === data.node_id + && (item.execution_metadata?.parallel_id === data.execution_metadata?.parallel_id || item.parallel_id === data.execution_metadata?.parallel_id))! + iterations.details!.push([]) + updateCurrentQAOnTree({ placeholderQuestionId, questionItem, @@ -371,25 +381,14 @@ }) }, onIterationFinish: ({ data }) => { - const currentTracingIndex = responseItem.workflowProcess!.tracing!.findIndex(item => item.id === data.id) - if (currentTracingIndex > -1) { - responseItem.workflowProcess!.tracing[currentTracingIndex] = { - ...responseItem.workflowProcess!.tracing[currentTracingIndex], - ...data, - } - updateCurrentQAOnTree({ - placeholderQuestionId, - questionItem, - responseItem, - parentId: params.parent_message_id, - }) - } - }, - onLoopStart: ({ data }) => { - responseItem.workflowProcess!.tracing!.push({ + const tracing = responseItem.workflowProcess!.tracing! + const iterationsIndex = tracing.findIndex(item => item.node_id === data.node_id + && (item.execution_metadata?.parallel_id === data.execution_metadata?.parallel_id || item.parallel_id === data.execution_metadata?.parallel_id))! + tracing[iterationsIndex] = { + ...tracing[iterationsIndex], ...data, - status: NodeRunningStatus.Running, - }) + status: NodeRunningStatus.Succeeded, + } as any updateCurrentQAOnTree({ placeholderQuestionId, questionItem, @@ -397,22 +396,10 @@ parentId: params.parent_message_id, }) }, - onLoopFinish: ({ data }) => { - const currentTracingIndex = responseItem.workflowProcess!.tracing!.findIndex(item => item.id === data.id) - if (currentTracingIndex > -1) { - responseItem.workflowProcess!.tracing[currentTracingIndex] = { - ...responseItem.workflowProcess!.tracing[currentTracingIndex], - ...data, - } - updateCurrentQAOnTree({ - placeholderQuestionId, - questionItem, - responseItem, - parentId: params.parent_message_id, - }) - } - }, onNodeStarted: ({ data }) => { + if (data.iteration_id) + return + responseItem.workflowProcess!.tracing!.push({ ...data, status: NodeRunningStatus.Running, @@ -425,69 +412,51 @@ }) }, onNodeRetry: ({ data }) => { - responseItem.workflowProcess!.tracing!.push(data) + if (data.iteration_id) + return + const currentIndex = responseItem.workflowProcess!.tracing!.findIndex((item) => { + if (!item.execution_metadata?.parallel_id) + return item.node_id === data.node_id + return item.node_id === data.node_id && (item.execution_metadata?.parallel_id === data.execution_metadata?.parallel_id || item.parallel_id === data.execution_metadata?.parallel_id) + }) + if (responseItem.workflowProcess!.tracing[currentIndex].retryDetail) + responseItem.workflowProcess!.tracing[currentIndex].retryDetail?.push(data as NodeTracing) + else + responseItem.workflowProcess!.tracing[currentIndex].retryDetail = [data as NodeTracing] + + handleUpdateChatList(produce(chatListRef.current, (draft) => { + const currentIndex = draft.findIndex(item => item.id === responseItem.id) + draft[currentIndex] = { + ...draft[currentIndex], + ...responseItem, + } + })) + }, + onNodeFinished: ({ data }) => { + if (data.iteration_id) + return + + const currentIndex = responseItem.workflowProcess!.tracing!.findIndex((item) => { + if (!item.execution_metadata?.parallel_id) + return item.node_id === data.node_id + return item.node_id === data.node_id && (item.execution_metadata?.parallel_id === data.execution_metadata?.parallel_id || item.parallel_id === data.execution_metadata?.parallel_id) + }) + responseItem.workflowProcess!.tracing[currentIndex] = { + ...(responseItem.workflowProcess!.tracing[currentIndex]?.extras + ? { extras: responseItem.workflowProcess!.tracing[currentIndex].extras } + : {}), + ...(responseItem.workflowProcess!.tracing[currentIndex]?.retryDetail + ? { retryDetail: responseItem.workflowProcess!.tracing[currentIndex].retryDetail } + : {}), + ...data, + } as any updateCurrentQAOnTree({ placeholderQuestionId, questionItem, responseItem, parentId: params.parent_message_id, }) - }, - onNodeFinished: ({ data }) => { - const currentTracingIndex = responseItem.workflowProcess!.tracing!.findIndex(item => item.id === data.id) - if (currentTracingIndex > -1) { - responseItem.workflowProcess!.tracing[currentTracingIndex] = { - ...responseItem.workflowProcess!.tracing[currentTracingIndex], - ...data, - } - updateCurrentQAOnTree({ - placeholderQuestionId, - questionItem, - responseItem, - parentId: params.parent_message_id, - }) - } - }, - onAgentLog: ({ data }) => { - const currentNodeIndex = responseItem.workflowProcess!.tracing!.findIndex(item => item.node_id === data.node_id) - if (currentNodeIndex > -1) { - const current = responseItem.workflowProcess!.tracing![currentNodeIndex] - - if (current.execution_metadata) { - if (current.execution_metadata.agent_log) { - const currentLogIndex = current.execution_metadata.agent_log.findIndex(log => log.id === data.id) - if (currentLogIndex > -1) { - current.execution_metadata.agent_log[currentLogIndex] = { - ...current.execution_metadata.agent_log[currentLogIndex], - ...data, - } - } - else { - current.execution_metadata.agent_log.push(data) - } - } - else { - current.execution_metadata.agent_log = [data] - } - } - else { - current.execution_metadata = { - agent_log: [data], - } as any - } - - responseItem.workflowProcess!.tracing[currentNodeIndex] = { - ...current, - } - - updateCurrentQAOnTree({ - placeholderQuestionId, - questionItem, - responseItem, - parentId: params.parent_message_id, - }) - } }, }, ) -- Gitblit v1.8.0