From 1e168235552f33cbafc04ea099b14218ab6fef62 Mon Sep 17 00:00:00 2001 From: Joel Date: Wed, 30 Apr 2025 16:46:58 +0800 Subject: [PATCH] feat: iteration support single run --- .../_base/components/before-run-form/form.tsx | 2 + .../workflow-panel/last-run/use-last-run.ts | 15 +- .../workflow/nodes/iteration/panel.tsx | 55 +----- .../workflow/nodes/iteration/use-config.ts | 157 +----------------- .../iteration/use-single-run-form-params.ts | 132 +++++++++++++++ 5 files changed, 145 insertions(+), 216 deletions(-) create mode 100644 web/app/components/workflow/nodes/iteration/use-single-run-form-params.ts diff --git a/web/app/components/workflow/nodes/_base/components/before-run-form/form.tsx b/web/app/components/workflow/nodes/_base/components/before-run-form/form.tsx index 884729c39a..56700606b5 100644 --- a/web/app/components/workflow/nodes/_base/components/before-run-form/form.tsx +++ b/web/app/components/workflow/nodes/_base/components/before-run-form/form.tsx @@ -65,6 +65,8 @@ const Form: FC = ({ const handleAddContext = useCallback(() => { const newValues = produce(values, (draft: any) => { const key = inputs[0].variable + if (!draft[key]) + draft[key] = [] draft[key].push(isContext ? RETRIEVAL_OUTPUT_STRUCT : '') }) onChange(newValues) diff --git a/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/use-last-run.ts b/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/use-last-run.ts index 379e8ef79c..0322720fca 100644 --- a/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/use-last-run.ts +++ b/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/use-last-run.ts @@ -9,6 +9,7 @@ import useKnowledgeRetrievalSingleRunFormParams from '../../../../knowledge-retr import useCodeSingleRunFormParams from '../../../../code/use-single-run-form-params' import useTemplateTransformSingleRunFormParams from '../../../../template-transform/use-single-run-form-params' import useQuestionClassifierSingleRunFormParams from '../../../../question-classifier/use-single-run-form-params' +import useIterationSingleRunFormParams from '../../../../iteration/use-single-run-form-params' import { BlockEnum } from '@/app/components/workflow/types' import { useNodesSyncDraft, @@ -20,22 +21,22 @@ const singleRunFormParamsHooks: Record = { [BlockEnum.Code]: useCodeSingleRunFormParams, [BlockEnum.TemplateTransform]: useTemplateTransformSingleRunFormParams, [BlockEnum.QuestionClassifier]: useQuestionClassifierSingleRunFormParams, + [BlockEnum.HttpRequest]: undefined, + [BlockEnum.Tool]: undefined, + [BlockEnum.ParameterExtractor]: undefined, + [BlockEnum.Iteration]: useIterationSingleRunFormParams, + [BlockEnum.Agent]: undefined, + [BlockEnum.DocExtractor]: undefined, + [BlockEnum.Loop]: undefined, [BlockEnum.Start]: undefined, [BlockEnum.End]: undefined, [BlockEnum.Answer]: undefined, [BlockEnum.IfElse]: undefined, - [BlockEnum.HttpRequest]: undefined, [BlockEnum.VariableAssigner]: undefined, [BlockEnum.VariableAggregator]: undefined, - [BlockEnum.Tool]: undefined, - [BlockEnum.ParameterExtractor]: undefined, - [BlockEnum.Iteration]: undefined, - [BlockEnum.DocExtractor]: undefined, [BlockEnum.ListFilter]: undefined, [BlockEnum.IterationStart]: undefined, [BlockEnum.Assigner]: undefined, - [BlockEnum.Agent]: undefined, - [BlockEnum.Loop]: undefined, [BlockEnum.LoopStart]: undefined, [BlockEnum.LoopEnd]: undefined, } diff --git a/web/app/components/workflow/nodes/iteration/panel.tsx b/web/app/components/workflow/nodes/iteration/panel.tsx index 67e67988b2..5e470d28bd 100644 --- a/web/app/components/workflow/nodes/iteration/panel.tsx +++ b/web/app/components/workflow/nodes/iteration/panel.tsx @@ -3,20 +3,15 @@ import React from 'react' import { useTranslation } from 'react-i18next' import VarReferencePicker from '../_base/components/variable/var-reference-picker' import Split from '../_base/components/split' -import ResultPanel from '../../run/result-panel' import { MAX_ITERATION_PARALLEL_NUM, MIN_ITERATION_PARALLEL_NUM } from '../../constants' import type { IterationNodeType } from './types' import useConfig from './use-config' -import { ErrorHandleMode, InputVarType, type NodePanelProps } from '@/app/components/workflow/types' +import { ErrorHandleMode, type NodePanelProps } from '@/app/components/workflow/types' import Field from '@/app/components/workflow/nodes/_base/components/field' -import BeforeRunForm from '@/app/components/workflow/nodes/_base/components/before-run-form' import Switch from '@/app/components/base/switch' import Select from '@/app/components/base/select' import Slider from '@/app/components/base/slider' import Input from '@/app/components/base/input' -import formatTracing from '@/app/components/workflow/run/utils/format-log' - -import { useLogs } from '@/app/components/workflow/run/hooks' const i18nPrefix = 'workflow.nodes.iteration' @@ -47,27 +42,11 @@ const Panel: FC> = ({ childrenNodeVars, iterationChildrenNodes, handleOutputVarChange, - isShowSingleRun, - hideSingleRun, - runningStatus, - handleRun, - handleStop, - runResult, - inputVarValues, - setInputVarValues, - usedOutVars, - iterator, - setIterator, - iteratorInputKey, - iterationRunResult, changeParallel, changeErrorResponseMode, changeParallelNums, } = useConfig(id, data) - const nodeInfo = formatTracing(iterationRunResult, t)[0] - const logsParams = useLogs() - return (
@@ -135,38 +114,6 @@ const Panel: FC> = ({