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,