节点上级模型参数的引用和调整

This commit is contained in:
2026-06-05 09:15:40 +08:00
parent 48a4636a81
commit c52d31c16e

View File

@@ -1133,6 +1133,19 @@ const availableParentParams = computed(() => {
// 如果是判断节点,跳过不添加其字段
if (isJudge) return;
const modelOutputFields = Array.isArray(parentProps.modelOutputFields) ? parentProps.modelOutputFields : [];
if (modelOutputFields.length > 0) {
modelOutputFields.forEach((field: any) => {
const fieldName = String(field || '').trim();
if (!fieldName) return;
params.push({
label: `${parentNodeName}.${fieldName}`,
value: `\${${parentId}.${fieldName}}`,
});
});
return;
}
// 只添加可引用字段HTTP节点仅允许结果返回结构其他节点维持原逻辑
if (parentProps.formConfig && Array.isArray(parentProps.formConfig)) {
if (nodeCode === 'http') {
@@ -1193,6 +1206,7 @@ const workflowDsl = computed(() => ({
y: n.y || 0,
},
inputSource: n.properties?.inputSource || null,
modelOutputFields: Array.isArray(n.properties?.modelOutputFields) ? n.properties.modelOutputFields : null,
formConfig: (() => {
const cfg = n.properties?.formConfig;
if (!Array.isArray(cfg)) return null;
@@ -1651,7 +1665,7 @@ const useWorkflow = async (workflow: WorkflowItem) => {
// 初始化其他配置字段(从 config 中读取)
if (node.config) {
Object.keys(node.config).forEach((key) => {
if (!['nodeCode', 'width', 'height', 'x', 'y', 'formConfig', 'inputSource', 'fieldMetadata', 'selectedModel'].includes(key)) {
if (!['nodeCode', 'width', 'height', 'x', 'y', 'formConfig', 'inputSource', 'fieldMetadata', 'selectedModel', 'modelOutputFields'].includes(key)) {
const fieldKey = `${node.id}_${key}`;
creationFormValues[fieldKey] = node.config[key];
}
@@ -2227,7 +2241,7 @@ const handleTreeNodeClick = async (data: TreeNode) => {
// 初始化其他配置字段(从 config 中读取)
if (node.config) {
Object.keys(node.config).forEach((key) => {
if (!['nodeCode', 'width', 'height', 'x', 'y', 'formConfig', 'inputSource', 'fieldMetadata', 'selectedModel'].includes(key)) {
if (!['nodeCode', 'width', 'height', 'x', 'y', 'formConfig', 'inputSource', 'fieldMetadata', 'selectedModel', 'modelOutputFields'].includes(key)) {
const fieldKey = `${node.id}_${key}`;
creationFormValues[fieldKey] = node.config[key];
}
@@ -2311,7 +2325,7 @@ const handleTreeNodeClick = async (data: TreeNode) => {
// 初始化其他配置字段(从 config 中读取)
if (node.config) {
Object.keys(node.config).forEach((key) => {
if (!['nodeCode', 'width', 'height', 'x', 'y', 'formConfig', 'inputSource', 'fieldMetadata', 'selectedModel'].includes(key)) {
if (!['nodeCode', 'width', 'height', 'x', 'y', 'formConfig', 'inputSource', 'fieldMetadata', 'selectedModel', 'modelOutputFields'].includes(key)) {
const fieldKey = `${node.id}_${key}`;
creationFormValues[fieldKey] = node.config[key];
}
@@ -3378,6 +3392,7 @@ const applySelected = () => {
'nodeCode',
'fieldMetadata',
'modelConfig',
'modelOutputFields',
'inputSource',
'formConfig',
'skillName',
@@ -3399,6 +3414,11 @@ const applySelected = () => {
// 获取模型的 responseBody必须来自 responseBody
const responseBody = selectedModelData.value?.responseBody || {};
const responseMapping = selectedModelData.value?.responseMapping;
const modelOutputFields =
responseMapping && typeof responseMapping === 'object' && !Array.isArray(responseMapping)
? Object.keys(responseMapping).filter((key) => String(key || '').trim() !== '')
: [];
// 保存到 modelConfig包含 modelResponse
p.modelConfig = {
@@ -3408,12 +3428,19 @@ const applySelected = () => {
modelResponse: responseBody, // 将 modelResponse 放在 modelConfig 内部
};
if (modelOutputFields.length > 0) {
p.modelOutputFields = modelOutputFields;
} else {
delete p.modelOutputFields;
}
// 保存模型选择状态
p.selectedModel = selectedModel.value;
p.modelData = selectedModelData.value;
} else {
// 如果没有选择模型,删除 modelConfig 和模型状态
delete p.modelConfig;
delete p.modelOutputFields;
delete p.selectedModel;
delete p.modelData;
}