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} + +
+ + + {#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 头信息 - + + + + +
+
- - {#if data.method === 'post' || data.method === 'put' || data.method === 'delete' || data.method === 'patch'} - - Body -
- - - - - + {#if showBodyConfig} +
+
Body 类型
+
+ {#each bodyTypeOptions as option} + + {/each} +
{/if} {#if data.bodyType === 'form-data'} -
+
+
参数 +
+
- {/if} {#if data.bodyType === 'x-www-form-urlencoded'} -
+
+
Body 参数 +
+
- {/if} {#if data.bodyType === 'json'} -
-