feat: add flatten_output configuration to iteration node (#27502)

This commit is contained in:
Novice
2025-10-27 16:04:24 +08:00
committed by GitHub
parent 43bcf40f80
commit b6e0abadab
11 changed files with 649 additions and 0 deletions

View File

@@ -22,6 +22,7 @@ const nodeDefault: NodeDefault<IterationNodeType> = {
is_parallel: false,
parallel_nums: 10,
error_handle_mode: ErrorHandleMode.Terminated,
flatten_output: true,
},
checkValid(payload: IterationNodeType, t: any) {
let errorMessages = ''

View File

@@ -46,6 +46,7 @@ const Panel: FC<NodePanelProps<IterationNodeType>> = ({
changeParallel,
changeErrorResponseMode,
changeParallelNums,
changeFlattenOutput,
} = useConfig(id, data)
return (
@@ -117,6 +118,18 @@ const Panel: FC<NodePanelProps<IterationNodeType>> = ({
<Select items={responseMethod} defaultValue={inputs.error_handle_mode} onSelect={changeErrorResponseMode} allowSearch={false} />
</Field>
</div>
<Split />
<div className='px-4 py-2'>
<Field
title={t(`${i18nPrefix}.flattenOutput`)}
tooltip={<div className='w-[230px]'>{t(`${i18nPrefix}.flattenOutputDesc`)}</div>}
inline
>
<Switch defaultValue={inputs.flatten_output} onChange={changeFlattenOutput} />
</Field>
</div>
</div>
)
}

View File

@@ -17,5 +17,6 @@ export type IterationNodeType = CommonNodeType & {
is_parallel: boolean // open the parallel mode or not
parallel_nums: number // the numbers of parallel
error_handle_mode: ErrorHandleMode // how to handle error in the iteration
flatten_output: boolean // whether to flatten the output array if all elements are lists
_isShowTips: boolean // when answer node in parallel mode iteration show tips
}

View File

@@ -98,6 +98,14 @@ const useConfig = (id: string, payload: IterationNodeType) => {
})
setInputs(newInputs)
}, [inputs, setInputs])
const changeFlattenOutput = useCallback((value: boolean) => {
const newInputs = produce(inputs, (draft) => {
draft.flatten_output = value
})
setInputs(newInputs)
}, [inputs, setInputs])
return {
readOnly,
inputs,
@@ -109,6 +117,7 @@ const useConfig = (id: string, payload: IterationNodeType) => {
changeParallel,
changeErrorResponseMode,
changeParallelNums,
changeFlattenOutput,
}
}