From 4ef17da6f4924e327389eb77efc07929099155d5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E5=AD=90=E9=BB=98?= <925456043@qq.com>
Date: Sat, 28 Feb 2026 21:37:49 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E5=B7=A5=E4=BD=9C?=
=?UTF-8?q?=E6=B5=81=E5=8F=82=E6=95=B0=E7=BC=96=E8=BE=91=E4=B8=8E=E5=91=8A?=
=?UTF-8?q?=E8=AD=A6=E4=BA=A4=E4=BA=92?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 新增 ParamTokenEditor,支持参数选择插入、token 高亮、整段删除与光标避让
- 参数候选改为动态监测,未映射参数可选择并在下拉与输入框顶部告警
- 接入知识库/搜索引擎/LLM/动态代码/HTTP Body 及 SQL、查询数据自定义节点
- 优化 Http 节点布局并补充参数解析工具与单测
---
.../workflow/customNode/searchDatacenter.ts | 1 +
.../views/ai/workflow/customNode/sqlNode.ts | 1 +
.../components/core/ParamTokenEditor.svelte | 748 ++++++++++++++++++
.../components/core/RefParameterItem.svelte | 3 +-
.../src/components/nodes/CodeNode.svelte | 22 +-
.../src/components/nodes/CustomNode.svelte | 52 +-
.../src/components/nodes/HttpNode.svelte | 224 ++++--
.../src/components/nodes/KnowledgeNode.svelte | 32 +-
.../src/components/nodes/LLMNode.svelte | 21 +-
.../components/nodes/SearchEngineNode.svelte | 33 +-
.../src/components/utils/paramToken.test.ts | 175 ++++
.../src/components/utils/paramToken.ts | 272 +++++++
.../packages/tinyflow-ui/src/types.ts | 1 +
13 files changed, 1465 insertions(+), 120 deletions(-)
create mode 100644 easyflow-ui-admin/packages/tinyflow-ui/src/components/core/ParamTokenEditor.svelte
create mode 100644 easyflow-ui-admin/packages/tinyflow-ui/src/components/utils/paramToken.test.ts
create mode 100644 easyflow-ui-admin/packages/tinyflow-ui/src/components/utils/paramToken.ts
diff --git a/easyflow-ui-admin/app/src/views/ai/workflow/customNode/searchDatacenter.ts b/easyflow-ui-admin/app/src/views/ai/workflow/customNode/searchDatacenter.ts
index 9422777..13cb551 100644
--- a/easyflow-ui-admin/app/src/views/ai/workflow/customNode/searchDatacenter.ts
+++ b/easyflow-ui-admin/app/src/views/ai/workflow/customNode/searchDatacenter.ts
@@ -47,6 +47,7 @@ export const SearchDatacenterNode = async () => {
},
{
type: 'textarea',
+ templateSupport: true,
label: "如:name='张三' and age=21 or field = {{流程变量}}",
description: '',
name: 'where',
diff --git a/easyflow-ui-admin/app/src/views/ai/workflow/customNode/sqlNode.ts b/easyflow-ui-admin/app/src/views/ai/workflow/customNode/sqlNode.ts
index 7806bd6..cb3e406 100644
--- a/easyflow-ui-admin/app/src/views/ai/workflow/customNode/sqlNode.ts
+++ b/easyflow-ui-admin/app/src/views/ai/workflow/customNode/sqlNode.ts
@@ -16,6 +16,7 @@ export default {
{
name: 'sql',
type: 'textarea',
+ templateSupport: true,
label: 'SQL',
placeholder: $t('aiWorkflow.descriptions.enterSQL'),
},
diff --git a/easyflow-ui-admin/packages/tinyflow-ui/src/components/core/ParamTokenEditor.svelte b/easyflow-ui-admin/packages/tinyflow-ui/src/components/core/ParamTokenEditor.svelte
new file mode 100644
index 0000000..87c4cb2
--- /dev/null
+++ b/easyflow-ui-admin/packages/tinyflow-ui/src/components/core/ParamTokenEditor.svelte
@@ -0,0 +1,748 @@
+
+
+
+ {#if showInlineHint}
+
+ {#if unresolvedTokensInEditor.length > 0}
+
+
+
+
+
+ 未映射参数:{unresolvedTokensInEditor.join('、')}
+
+
+ {/if}
+ {#if undefinedTokensInEditor.length > 0}
+
+
+
+
+
+ 未定义参数:{undefinedTokensInEditor.join('、')}
+
+
+ {/if}
+
+ {/if}
+
+
+
+ {@html highlightedHtml}
+
+
+ {#if mode === 'input'}
+
+ {:else}
+
+ {/if}
+
+
+
+
+ {#snippet floating()}
+
+ {#if hasParams}
+ {#each paramCandidates as candidate}
+
+ {/each}
+ {:else}
+
请先在输入参数中定义参数
+ {/if}
+
+ {/snippet}
+
+
+
+
+
+
diff --git a/easyflow-ui-admin/packages/tinyflow-ui/src/components/core/RefParameterItem.svelte b/easyflow-ui-admin/packages/tinyflow-ui/src/components/core/RefParameterItem.svelte
index 37f671e..266ff40 100644
--- a/easyflow-ui-admin/packages/tinyflow-ui/src/components/core/RefParameterItem.svelte
+++ b/easyflow-ui-admin/packages/tinyflow-ui/src/components/core/RefParameterItem.svelte
@@ -42,7 +42,7 @@
[key]: value
};
return {
- [dataKeyName]: parameters
+ [dataKeyName]: [...parameters]
};
});
};
@@ -172,4 +172,3 @@
-
diff --git a/easyflow-ui-admin/packages/tinyflow-ui/src/components/nodes/CodeNode.svelte b/easyflow-ui-admin/packages/tinyflow-ui/src/components/nodes/CodeNode.svelte
index db357c8..5e50b10 100644
--- a/easyflow-ui-admin/packages/tinyflow-ui/src/components/nodes/CodeNode.svelte
+++ b/easyflow-ui-admin/packages/tinyflow-ui/src/components/nodes/CodeNode.svelte
@@ -1,14 +1,14 @@
@@ -89,9 +103,10 @@
- URL 地址
-
-
+
+
请求配置
+
+
-
- {
+
+
+ {
updateNodeData(currentNodeId, ()=>{
return {
url: e.target.value
}
})
- }} value={data.url as string||""} />
+ }}
+ />
+
-
-
Http 头信息
-