fix: global variable key repeat & value type (#2540)

This commit is contained in:
heheer
2024-08-27 16:04:00 +08:00
committed by GitHub
parent d3731d221a
commit 67445b40bc
5 changed files with 43 additions and 7 deletions

View File

@@ -1,7 +1,11 @@
import type { FlowNodeTemplateType, StoreNodeItemType } from '../workflow/type/node';
import { AppTypeEnum } from './constants';
import { PermissionTypeEnum } from '../../support/permission/constant';
import { NodeInputKeyEnum, VariableInputEnum } from '../workflow/constants';
import {
NodeInputKeyEnum,
VariableInputEnum,
WorkflowIOValueTypeEnum
} from '../workflow/constants';
import { SelectedDatasetType } from '../workflow/api';
import { DatasetSearchModeEnum } from '../dataset/constants';
import { TeamTagSchema as TeamTagsSchemaType } from '@fastgpt/global/support/user/team/type.d';
@@ -111,6 +115,7 @@ export type VariableItemType = {
required: boolean;
maxLen: number;
enums: { value: string }[];
valueType: WorkflowIOValueTypeEnum;
};
// tts
export type AppTTSConfigType = {

View File

@@ -914,6 +914,7 @@
"add option": "Add option",
"input type": "Text",
"key": "Variable key",
"key already exists": "Key already exist",
"key is required": "Variable key is required",
"select type": "Dropdown single select",
"text max length": "Maximum length",

View File

@@ -914,6 +914,7 @@
"add option": "添加选项",
"input type": "文本",
"key": "变量 key",
"key already exists": "Key 已经存在",
"key is required": "变量 key 是必须的",
"select type": "下拉单选",
"text max length": "最大长度",

View File

@@ -23,7 +23,11 @@ import {
useDisclosure
} from '@chakra-ui/react';
import { SmallAddIcon } from '@chakra-ui/icons';
import { VariableInputEnum, variableMap } from '@fastgpt/global/core/workflow/constants';
import {
VariableInputEnum,
variableMap,
WorkflowIOValueTypeEnum
} from '@fastgpt/global/core/workflow/constants';
import type { VariableItemType } from '@fastgpt/global/core/app/type.d';
import MyIcon from '@fastgpt/web/components/common/Icon';
import { useForm } from 'react-hook-form';
@@ -310,6 +314,27 @@ const VariableEdit = ({
return;
}
}
// check repeat key
const existingVariable = variables.find(
(item) => item.key === variable.key && item.id !== variable.id
);
if (existingVariable) {
toast({
status: 'warning',
title: t('common:core.module.variable.key already exists')
});
return;
}
// set valuetype based on variable.type
variable.valueType = valueTypeMap[variable.type];
// set default required value based on variableType
if (variable.type === VariableInputEnum.custom) {
variable.required = false;
}
const onChangeVariable = [...variables];
// update
if (variable.id) {
@@ -344,9 +369,16 @@ export const defaultVariable: VariableItemType = {
type: VariableInputEnum.input,
required: true,
maxLen: 50,
enums: [{ value: '' }]
enums: [{ value: '' }],
valueType: WorkflowIOValueTypeEnum.string
};
export const addVariable = () => {
const newVariable = { ...defaultVariable, key: '', id: '' };
return newVariable;
};
const valueTypeMap = {
[VariableInputEnum.input]: WorkflowIOValueTypeEnum.string,
[VariableInputEnum.select]: WorkflowIOValueTypeEnum.string,
[VariableInputEnum.textarea]: WorkflowIOValueTypeEnum.string,
[VariableInputEnum.custom]: WorkflowIOValueTypeEnum.any
};

View File

@@ -374,10 +374,7 @@ export const getWorkflowGlobalVariables = ({
systemConfigNode: getGuideModule(nodes),
isPublicFetch: true
})?.variables || []
).map((item) => ({
...item,
valueType: WorkflowIOValueTypeEnum.any
}));
);
const systemVariables = getSystemVariables(t);