From c5371ae886114565f2287096a9694f64efeb2851 Mon Sep 17 00:00:00 2001 From: gaga0714 <140368447+gaga0714@users.noreply.github.com> Date: Tue, 31 Mar 2026 16:56:32 +0800 Subject: [PATCH] fix: deal with undefined valueType (#6684) * fix: deal with undefined valueType * fix * fix * fix key --- packages/global/core/workflow/node/constant.ts | 10 ++++++++++ .../RenderInput/templates/DynamicInputs/index.tsx | 4 ++-- .../Flow/nodes/render/RenderOutput/DynamicOutputs.tsx | 10 ++++++---- .../Flow/nodes/render/ValueTypeLabel.tsx | 5 ++--- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/packages/global/core/workflow/node/constant.ts b/packages/global/core/workflow/node/constant.ts index 840ef84f3b..a15bd6b13f 100644 --- a/packages/global/core/workflow/node/constant.ts +++ b/packages/global/core/workflow/node/constant.ts @@ -232,6 +232,16 @@ export const FlowValueTypeMap: Record< } }; +export const getFlowValueTypeMeta = ( + valueType?: WorkflowIOValueTypeEnum | string | null +): (typeof FlowValueTypeMap)[WorkflowIOValueTypeEnum] => { + if (valueType == null || valueType === '') { + return FlowValueTypeMap[WorkflowIOValueTypeEnum.any]; + } + const meta = FlowValueTypeMap[valueType as WorkflowIOValueTypeEnum]; + return meta ?? FlowValueTypeMap[WorkflowIOValueTypeEnum.any]; +}; + export const EDGE_TYPE = 'default'; export const chatHistoryValueDesc = `{ diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/DynamicInputs/index.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/DynamicInputs/index.tsx index 3bb0d05a0c..55d271edff 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/DynamicInputs/index.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/DynamicInputs/index.tsx @@ -14,7 +14,7 @@ import MyIconButton from '@fastgpt/web/components/common/Icon/button'; import { useToast } from '@fastgpt/web/hooks/useToast'; import { FlowNodeInputTypeEnum, - FlowValueTypeMap + getFlowValueTypeMeta } from '@fastgpt/global/core/workflow/node/constant'; import { WorkflowIOValueTypeEnum } from '@fastgpt/global/core/workflow/constants'; import { useMemoEnhance } from '@fastgpt/web/hooks/useMemoEnhance'; @@ -255,7 +255,7 @@ const Reference = ({ fontSize={'sm'} fontWeight={'medium'} > - {t(FlowValueTypeMap[inputChildren.valueType || WorkflowIOValueTypeEnum.any].label)} + {t(getFlowValueTypeMeta(inputChildren.valueType).label)} {!isEmptyItem && ( diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderOutput/DynamicOutputs.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderOutput/DynamicOutputs.tsx index 22f72c7b43..27043cb0ae 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderOutput/DynamicOutputs.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderOutput/DynamicOutputs.tsx @@ -3,7 +3,7 @@ import type { FlowNodeOutputItemType } from '@fastgpt/global/core/workflow/type/ import { Box, Flex, Input, HStack } from '@chakra-ui/react'; import { FlowNodeOutputTypeEnum, - FlowValueTypeMap + getFlowValueTypeMeta } from '@fastgpt/global/core/workflow/node/constant'; import { WorkflowIOValueTypeEnum } from '@fastgpt/global/core/workflow/constants'; import { useTranslation } from 'next-i18next'; @@ -90,7 +90,7 @@ const DynamicOutputs = ({ nodeId, outputs, addOutput }: DynamicOutputsProps) => {outputs.length > 0 && } {[...outputs, defaultOutput].map((output, index) => ( - + ({ - label: t(FlowValueTypeMap[item].label), + label: t(getFlowValueTypeMeta(item).label), value: item })); }, [t]); @@ -178,6 +178,8 @@ const DynamicOutputItem = ({ [output, onUpdate, onAdd, isEmptyItem, outputs] ); + const selectValueType = getFlowValueTypeMeta(output?.valueType).value; + return ( @@ -198,7 +200,7 @@ const DynamicOutputItem = ({ h={10} borderLeftRadius={'none'} borderColor={'myGray.200'} - value={output?.valueType} + value={selectValueType} list={valueTypeList} onChange={onChangeValueType} isDisabled={isEmptyItem} diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/ValueTypeLabel.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/ValueTypeLabel.tsx index ebe4fe21c2..e95c5e05cf 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/ValueTypeLabel.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/ValueTypeLabel.tsx @@ -1,4 +1,4 @@ -import { FlowValueTypeMap } from '@fastgpt/global/core/workflow/node/constant'; +import { getFlowValueTypeMeta } from '@fastgpt/global/core/workflow/node/constant'; import type { BoxProps } from '@chakra-ui/react'; import { Box } from '@chakra-ui/react'; import type { WorkflowIOValueTypeEnum } from '@fastgpt/global/core/workflow/constants'; @@ -14,9 +14,8 @@ const ValueTypeLabel = ({ valueType?: WorkflowIOValueTypeEnum; valueDesc?: string; } & BoxProps) => { - const valueTypeData = valueType ? FlowValueTypeMap[valueType] : undefined; const { t } = useTranslation(); - const label = valueTypeData?.label || ''; + const label = valueType ? getFlowValueTypeMeta(valueType).label : ''; return !!label ? (