From aa3dc9002c574dbfe88f1f424de84cb0e3205789 Mon Sep 17 00:00:00 2001 From: zxhlyh Date: Mon, 10 Feb 2025 11:15:56 +0800 Subject: [PATCH] fix: workflow chat preview (#13455) --- .../workflow/panel/debug-and-preview/hooks.ts | 125 ++++++++++-------- 1 file changed, 67 insertions(+), 58 deletions(-) diff --git a/web/app/components/workflow/panel/debug-and-preview/hooks.ts b/web/app/components/workflow/panel/debug-and-preview/hooks.ts index ae7855fc69..9079f9e534 100644 --- a/web/app/components/workflow/panel/debug-and-preview/hooks.ts +++ b/web/app/components/workflow/panel/debug-and-preview/hooks.ts @@ -30,7 +30,6 @@ import { } 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 = { @@ -359,21 +358,7 @@ export const useChat = ( 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, @@ -382,20 +367,19 @@ export const useChat = ( }) }, onIterationFinish: ({ data }) => { - 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.Succeeded, - } as any - updateCurrentQAOnTree({ - placeholderQuestionId, - questionItem, - responseItem, - parentId: params.parent_message_id, - }) + 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) @@ -416,15 +400,7 @@ export const useChat = ( 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] + responseItem.workflowProcess!.tracing!.push(data) updateCurrentQAOnTree({ placeholderQuestionId, @@ -437,26 +413,59 @@ export const useChat = ( 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, - }) + 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, + }) + } }, }, )