fix: 修正工作流试运行参数名称展示
- 默认字段标题回退为实际配置的参数名称 - 保留显式展示标题并统一表单与引用口径
This commit is contained in:
@@ -12,6 +12,8 @@ import { $t } from '#/locales';
|
|||||||
import WorkflowFormItem from '#/views/ai/workflow/components/WorkflowFormItem.vue';
|
import WorkflowFormItem from '#/views/ai/workflow/components/WorkflowFormItem.vue';
|
||||||
import { buildSingleRunModel } from '../../../../../../packages/tinyflow-ui/src/utils/workflowNodeFields';
|
import { buildSingleRunModel } from '../../../../../../packages/tinyflow-ui/src/utils/workflowNodeFields';
|
||||||
|
|
||||||
|
import { resolveWorkflowParameterDisplayName } from './workflowFormParameters';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
workflowId: any;
|
workflowId: any;
|
||||||
node: any;
|
node: any;
|
||||||
@@ -31,7 +33,7 @@ const parameterDisplayNameMap = computed(() => {
|
|||||||
return new Map(
|
return new Map(
|
||||||
singleRunParameters.value.map((parameter: any) => [
|
singleRunParameters.value.map((parameter: any) => [
|
||||||
String(parameter.name || ''),
|
String(parameter.name || ''),
|
||||||
String(parameter.displayName || parameter.formLabel || parameter.name || ''),
|
resolveWorkflowParameterDisplayName(parameter),
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import ChooseResource from '#/views/ai/resource/ChooseResource.vue';
|
|||||||
import WorkflowFileInput from '#/views/ai/workflow/components/WorkflowFileInput.vue';
|
import WorkflowFileInput from '#/views/ai/workflow/components/WorkflowFileInput.vue';
|
||||||
import WorkflowImageInput from '#/views/ai/workflow/components/WorkflowImageInput.vue';
|
import WorkflowImageInput from '#/views/ai/workflow/components/WorkflowImageInput.vue';
|
||||||
|
|
||||||
|
import { resolveWorkflowParameterLabel } from './workflowFormParameters';
|
||||||
import { hasWorkflowImageValue } from './workflowImageValue';
|
import { hasWorkflowImageValue } from './workflowImageValue';
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
@@ -103,7 +104,7 @@ function choose(data: any, propName: string) {
|
|||||||
v-for="(item, idx) in parameters"
|
v-for="(item, idx) in parameters"
|
||||||
:prop="`${propPrefix}${item.name}`"
|
:prop="`${propPrefix}${item.name}`"
|
||||||
:key="idx"
|
:key="idx"
|
||||||
:label="item.formLabel || item.name"
|
:label="resolveWorkflowParameterLabel(item)"
|
||||||
:rules="buildRules(item)"
|
:rules="buildRules(item)"
|
||||||
>
|
>
|
||||||
<template v-if="getContentType(item) === 'text'">
|
<template v-if="getContentType(item) === 'text'">
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
import { describe, expect, it } from 'vitest';
|
import { describe, expect, it } from 'vitest';
|
||||||
|
|
||||||
import { resolveWorkflowFormParameters } from '../workflowFormParameters';
|
import {
|
||||||
|
resolveWorkflowFormParameters,
|
||||||
|
resolveWorkflowParameterDisplayName,
|
||||||
|
resolveWorkflowParameterLabel,
|
||||||
|
} from '../workflowFormParameters';
|
||||||
|
|
||||||
describe('resolveWorkflowFormParameters', () => {
|
describe('resolveWorkflowFormParameters', () => {
|
||||||
it('uses the image parameter when a legacy schema still declares text', () => {
|
it('uses the image parameter when a legacy schema still declares text', () => {
|
||||||
@@ -73,4 +77,32 @@ describe('resolveWorkflowFormParameters', () => {
|
|||||||
formLabel: '背景资料',
|
formLabel: '背景资料',
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('uses the configured parameter name for a default trial-run label', () => {
|
||||||
|
expect(
|
||||||
|
resolveWorkflowParameterLabel({
|
||||||
|
name: 'customer_name',
|
||||||
|
formLabel: '新字段',
|
||||||
|
}),
|
||||||
|
).toBe('customer_name');
|
||||||
|
expect(
|
||||||
|
resolveWorkflowParameterDisplayName({
|
||||||
|
name: 'start_1.customer_name',
|
||||||
|
displayName: '开始节点 > 新字段',
|
||||||
|
}),
|
||||||
|
).toBe('开始节点 > customer_name');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('preserves an explicitly configured trial-run label', () => {
|
||||||
|
const parameter = {
|
||||||
|
name: 'customer_name',
|
||||||
|
formLabel: '客户名称',
|
||||||
|
displayName: '开始节点 > 客户名称',
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(resolveWorkflowParameterLabel(parameter)).toBe('客户名称');
|
||||||
|
expect(resolveWorkflowParameterDisplayName(parameter)).toBe(
|
||||||
|
'开始节点 > 客户名称',
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -17,6 +17,60 @@ const DEFAULT_FIELD_LABELS = new Set([
|
|||||||
const GENERATED_FIELD_KEY_PATTERN =
|
const GENERATED_FIELD_KEY_PATTERN =
|
||||||
/^(?:field_[A-Za-z0-9]+|(?:text|textarea|radio|checkbox|select|file)_field(?:_\d+)?)$/;
|
/^(?:field_[A-Za-z0-9]+|(?:text|textarea|radio|checkbox|select|file)_field(?:_\d+)?)$/;
|
||||||
|
|
||||||
|
function configuredParameterName(name: unknown) {
|
||||||
|
const normalizedName = String(name || '').trim();
|
||||||
|
const nameParts = normalizedName.split('.').filter(Boolean);
|
||||||
|
return nameParts[nameParts.length - 1] || normalizedName;
|
||||||
|
}
|
||||||
|
|
||||||
|
function replaceDefaultParameterLabel(label: unknown, name: unknown) {
|
||||||
|
const normalizedLabel = String(label || '').trim();
|
||||||
|
const normalizedName = String(name || '').trim();
|
||||||
|
if (!normalizedLabel || !normalizedName) {
|
||||||
|
return normalizedLabel;
|
||||||
|
}
|
||||||
|
const parts = normalizedLabel.split('>').map((part) => part.trim());
|
||||||
|
const lastPart = parts[parts.length - 1] || '';
|
||||||
|
if (!DEFAULT_FIELD_LABELS.has(lastPart)) {
|
||||||
|
return normalizedLabel;
|
||||||
|
}
|
||||||
|
const parameterName = configuredParameterName(normalizedName);
|
||||||
|
return parts.length > 1
|
||||||
|
? `${parts.slice(0, -1).join(' > ')} > ${parameterName}`
|
||||||
|
: parameterName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析工作流参数在表单中的展示名称。
|
||||||
|
*
|
||||||
|
* @param parameter 工作流运行参数
|
||||||
|
* @returns 用户可见的参数名称
|
||||||
|
*/
|
||||||
|
export function resolveWorkflowParameterLabel(parameter: any) {
|
||||||
|
const name = String(parameter?.name || '').trim();
|
||||||
|
const formLabel = replaceDefaultParameterLabel(parameter?.formLabel, name);
|
||||||
|
const displayName = replaceDefaultParameterLabel(
|
||||||
|
parameter?.displayName,
|
||||||
|
name,
|
||||||
|
);
|
||||||
|
return formLabel || displayName || name || '参数';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析工作流参数在引用内容中的展示名称。
|
||||||
|
*
|
||||||
|
* @param parameter 工作流运行参数
|
||||||
|
* @returns 用户可见的引用参数名称
|
||||||
|
*/
|
||||||
|
export function resolveWorkflowParameterDisplayName(parameter: any) {
|
||||||
|
const name = String(parameter?.name || '').trim();
|
||||||
|
const displayName = replaceDefaultParameterLabel(
|
||||||
|
parameter?.displayName,
|
||||||
|
name,
|
||||||
|
);
|
||||||
|
return displayName || resolveWorkflowParameterLabel(parameter);
|
||||||
|
}
|
||||||
|
|
||||||
function resolveFieldLabel(field: any) {
|
function resolveFieldLabel(field: any) {
|
||||||
const key = String(field?.key || '').trim();
|
const key = String(field?.key || '').trim();
|
||||||
const label = String(field?.label || '').trim();
|
const label = String(field?.label || '').trim();
|
||||||
|
|||||||
Reference in New Issue
Block a user