From f000fbb19d124e357ab6cfc9997dc972f06f7b60 Mon Sep 17 00:00:00 2001 From: heheer Date: Wed, 16 Jul 2025 13:09:16 +0800 Subject: [PATCH] compatible with old enums (#5219) * compatible with old enums\ * add id --- packages/global/core/workflow/utils.ts | 8 +++++++- .../components/common/Textarea/PromptEditor/type.d.ts | 1 + projects/app/src/components/core/app/VariableEdit.tsx | 2 +- .../app/src/components/core/app/formRender/index.tsx | 7 +++++-- .../app/src/components/core/app/formRender/type.d.ts | 3 +++ .../WorkflowComponents/Flow/nodes/NodeHttp/index.tsx | 4 ++++ .../Flow/nodes/NodeVariableUpdate.tsx | 1 + .../render/RenderInput/templates/CommonInputForm.tsx | 1 + .../RenderInput/templates/SettingQuotePrompt.tsx | 10 ++++++++-- .../app/detail/WorkflowComponents/utils.tsx | 2 ++ projects/app/src/web/core/app/utils.ts | 6 ++++++ projects/app/src/web/core/workflow/adapt.ts | 2 +- 12 files changed, 40 insertions(+), 7 deletions(-) diff --git a/packages/global/core/workflow/utils.ts b/packages/global/core/workflow/utils.ts index 2756f4537..49b4fba83 100644 --- a/packages/global/core/workflow/utils.ts +++ b/packages/global/core/workflow/utils.ts @@ -341,7 +341,13 @@ export const toolSetData2FlowNodeIO = ({ }; export const formatEditorVariablePickerIcon = ( - variables: { key: string; label: string; type?: `${VariableInputEnum}`; required?: boolean }[] + variables: { + id: string; + key: string; + label: string; + type?: `${VariableInputEnum}`; + required?: boolean; + }[] ): EditorVariablePickerType[] => { return variables.map((item) => ({ ...item, diff --git a/packages/web/components/common/Textarea/PromptEditor/type.d.ts b/packages/web/components/common/Textarea/PromptEditor/type.d.ts index 66cf23916..f6d39f85d 100644 --- a/packages/web/components/common/Textarea/PromptEditor/type.d.ts +++ b/packages/web/components/common/Textarea/PromptEditor/type.d.ts @@ -1,6 +1,7 @@ import type { WorkflowIOValueTypeEnum } from '@fastgpt/global/core/workflow/constants'; export type EditorVariablePickerType = { + id: string; key: string; label: string; required?: boolean; diff --git a/projects/app/src/components/core/app/VariableEdit.tsx b/projects/app/src/components/core/app/VariableEdit.tsx index 3ea40a800..7cdeeacf6 100644 --- a/projects/app/src/components/core/app/VariableEdit.tsx +++ b/projects/app/src/components/core/app/VariableEdit.tsx @@ -385,7 +385,7 @@ const TableItem = ({ onClick={() => { const formattedItem = { ...item, - list: item.enums || [] + list: item.enums?.map((item) => ({ label: item.value, value: item.value })) || [] }; reset(formattedItem); }} diff --git a/projects/app/src/components/core/app/formRender/index.tsx b/projects/app/src/components/core/app/formRender/index.tsx index a4b04e718..eb751e467 100644 --- a/projects/app/src/components/core/app/formRender/index.tsx +++ b/projects/app/src/components/core/app/formRender/index.tsx @@ -100,11 +100,14 @@ const InputRender = (props: InputRenderProps) => { } if (inputType === InputTypeEnum.select) { - return ; + const list = + props.list || props.enums?.map((item) => ({ label: item.value, value: item.value })) || []; + return ; } if (inputType === InputTypeEnum.multipleSelect) { - const { list = [] } = props; + const list = + props.list || props.enums?.map((item) => ({ label: item.value, value: item.value })) || []; return ( {...commonProps} diff --git a/projects/app/src/components/core/app/formRender/type.d.ts b/projects/app/src/components/core/app/formRender/type.d.ts index a31fcab5b..e8462c8c8 100644 --- a/projects/app/src/components/core/app/formRender/type.d.ts +++ b/projects/app/src/components/core/app/formRender/type.d.ts @@ -40,6 +40,9 @@ type SpecificProps = // select & multipleSelect inputType: InputTypeEnum.select | InputTypeEnum.multipleSelect; list?: { label: string; value: string }[]; + + // old version + enums?: { value: string }[]; } | { // JSONEditor diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeHttp/index.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeHttp/index.tsx index 31e23700f..3069ac83a 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeHttp/index.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeHttp/index.tsx @@ -174,6 +174,7 @@ const RenderHttpMethodAndUrl = React.memo(function RenderHttpMethodAndUrl({ return ( feConfigs?.externalProviderWorkflowVariables?.map((item) => ({ key: item.key, + id: item.key, label: item.name })) || [] ); @@ -294,6 +295,7 @@ export function RenderHttpProps({ return ( feConfigs?.externalProviderWorkflowVariables?.map((item) => ({ key: item.key, + id: item.key, label: item.name })) || [] ); @@ -498,6 +500,7 @@ const RenderForm = ({ input: FlowNodeInputItemType; variables: EditorVariableLabelPickerType[]; externalProviderWorkflowVariables: { + id: string; key: string; label: string; }[]; @@ -684,6 +687,7 @@ const RenderBody = ({ typeInput: FlowNodeInputItemType | undefined; variables: EditorVariableLabelPickerType[]; externalProviderWorkflowVariables: { + id: string; key: string; label: string; }[]; diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeVariableUpdate.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeVariableUpdate.tsx index f513831cc..09ac28098 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeVariableUpdate.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeVariableUpdate.tsx @@ -67,6 +67,7 @@ const NodeVariableUpdate = ({ data, selected }: NodeProps) => const externalProviderWorkflowVariables = useMemo(() => { return ( feConfigs?.externalProviderWorkflowVariables?.map((item) => ({ + id: item.key, key: item.key, label: item.name })) || [] diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/CommonInputForm.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/CommonInputForm.tsx index c0ccac74e..efab444bd 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/CommonInputForm.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/CommonInputForm.tsx @@ -51,6 +51,7 @@ const CommonInputForm = ({ item, nodeId }: RenderInputProps) => { const externalVariables = useMemo(() => { return ( feConfigs?.externalProviderWorkflowVariables?.map((item) => ({ + id: item.key, key: item.key, label: item.name })) || [] diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SettingQuotePrompt.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SettingQuotePrompt.tsx index 6978c5a21..b32cdd4de 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SettingQuotePrompt.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/SettingQuotePrompt.tsx @@ -247,7 +247,10 @@ const EditModal = ({ onClose, ...props }: RenderInputProps & { onClose: () => vo ({ + ...item, + id: item.key + }))} minH={160} title={t('common:core.app.Quote templates')} placeholder={t('workflow:quote_content_placeholder')} @@ -268,7 +271,10 @@ const EditModal = ({ onClose, ...props }: RenderInputProps & { onClose: () => vo /> ({ + ...item, + id: item.key + }))} title={t('common:core.app.Quote prompt')} minH={300} placeholder={t('workflow:quote_prompt_tip', { diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/utils.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/utils.tsx index 2ad07e67c..c5d237ef8 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/utils.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/utils.tsx @@ -107,6 +107,7 @@ export const getEditorVariables = ({ const nodeVariables = currentNode.inputs .filter((input) => input.canEdit) .map((item) => ({ + id: item.key, key: item.key, label: item.label, parent: { @@ -137,6 +138,7 @@ export const getEditorVariables = ({ ) .map((output) => { return { + id: output.id, label: t((output.label as any) || ''), key: output.id, parent: { diff --git a/projects/app/src/web/core/app/utils.ts b/projects/app/src/web/core/app/utils.ts index 2ce8058ab..7cbab0403 100644 --- a/projects/app/src/web/core/app/utils.ts +++ b/projects/app/src/web/core/app/utils.ts @@ -582,30 +582,35 @@ export function filterSensitiveFormData(appForm: AppSimpleEditFormType) { export const workflowSystemVariables: EditorVariablePickerType[] = [ { + id: 'userId', key: 'userId', label: i18nT('workflow:use_user_id'), required: true, valueType: WorkflowIOValueTypeEnum.string }, { + id: 'appId', key: 'appId', label: i18nT('common:core.module.http.AppId'), required: true, valueType: WorkflowIOValueTypeEnum.string }, { + id: 'chatId', key: 'chatId', label: i18nT('common:core.module.http.ChatId'), valueType: WorkflowIOValueTypeEnum.string, required: true }, { + id: 'responseChatItemId', key: 'responseChatItemId', label: i18nT('common:core.module.http.ResponseChatItemId'), valueType: WorkflowIOValueTypeEnum.string, required: true }, { + id: 'histories', key: 'histories', label: i18nT('common:core.module.http.Histories'), required: true, @@ -613,6 +618,7 @@ export const workflowSystemVariables: EditorVariablePickerType[] = [ valueDesc: chatHistoryValueDesc }, { + id: 'cTime', key: 'cTime', label: i18nT('common:core.module.http.Current time'), required: true, diff --git a/projects/app/src/web/core/workflow/adapt.ts b/projects/app/src/web/core/workflow/adapt.ts index a9828757c..ec9e90b62 100644 --- a/projects/app/src/web/core/workflow/adapt.ts +++ b/projects/app/src/web/core/workflow/adapt.ts @@ -54,7 +54,7 @@ export const getGlobalVariableNode = ({ nodeId: VARIABLE_NODE_ID, ...template, outputs: globalVariables.map((item) => ({ - id: item.key, + id: item.id, type: FlowNodeOutputTypeEnum.static, label: item.label, key: item.key,