weaver-e10-builder 1.1.6 → 1.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/dist/commands/actionflow.d.ts.map +1 -1
  2. package/dist/commands/actionflow.js +93 -10
  3. package/dist/commands/actionflow.js.map +1 -1
  4. package/dist/commands/designer-common.d.ts +12 -2
  5. package/dist/commands/designer-common.d.ts.map +1 -1
  6. package/dist/commands/designer-common.js +89 -22
  7. package/dist/commands/designer-common.js.map +1 -1
  8. package/dist/commands/designer.d.ts.map +1 -1
  9. package/dist/commands/designer.js +7 -2
  10. package/dist/commands/designer.js.map +1 -1
  11. package/dist/commands/form-association-manage.js +1 -1
  12. package/dist/commands/form-association-manage.js.map +1 -1
  13. package/dist/commands/form-association.d.ts.map +1 -1
  14. package/dist/commands/form-association.js +1 -6
  15. package/dist/commands/form-association.js.map +1 -1
  16. package/dist/commands/form-field-lang.d.ts +3 -0
  17. package/dist/commands/form-field-lang.d.ts.map +1 -0
  18. package/dist/commands/form-field-lang.js +148 -0
  19. package/dist/commands/form-field-lang.js.map +1 -0
  20. package/dist/commands/form-table-view.d.ts.map +1 -1
  21. package/dist/commands/form-table-view.js +28 -9
  22. package/dist/commands/form-table-view.js.map +1 -1
  23. package/dist/commands/form.d.ts.map +1 -1
  24. package/dist/commands/form.js +10 -4
  25. package/dist/commands/form.js.map +1 -1
  26. package/dist/commands/interface.d.ts.map +1 -1
  27. package/dist/commands/interface.js +7 -3
  28. package/dist/commands/interface.js.map +1 -1
  29. package/dist/commands/matrix.d.ts.map +1 -1
  30. package/dist/commands/matrix.js +78 -16
  31. package/dist/commands/matrix.js.map +1 -1
  32. package/dist/commands/skill.d.ts.map +1 -1
  33. package/dist/commands/skill.js +4 -2
  34. package/dist/commands/skill.js.map +1 -1
  35. package/dist/commands/workflow-create-workflow.d.ts.map +1 -1
  36. package/dist/commands/workflow-create-workflow.js +20 -5
  37. package/dist/commands/workflow-create-workflow.js.map +1 -1
  38. package/dist/commands/workflow-odoc.d.ts +3 -0
  39. package/dist/commands/workflow-odoc.d.ts.map +1 -0
  40. package/dist/commands/workflow-odoc.js +288 -0
  41. package/dist/commands/workflow-odoc.js.map +1 -0
  42. package/dist/index.js +4 -0
  43. package/dist/index.js.map +1 -1
  44. package/dist/services/actionflow/build_workflow_draft.d.ts.map +1 -1
  45. package/dist/services/actionflow/build_workflow_draft.js +17 -7
  46. package/dist/services/actionflow/build_workflow_draft.js.map +1 -1
  47. package/dist/services/actionflow/command_output.d.ts +4 -0
  48. package/dist/services/actionflow/command_output.d.ts.map +1 -1
  49. package/dist/services/actionflow/command_output.js +92 -1
  50. package/dist/services/actionflow/command_output.js.map +1 -1
  51. package/dist/services/actionflow/component_registry.d.ts.map +1 -1
  52. package/dist/services/actionflow/component_registry.js +11 -2
  53. package/dist/services/actionflow/component_registry.js.map +1 -1
  54. package/dist/services/actionflow/components/action_eb_add.js +1 -1
  55. package/dist/services/actionflow/components/action_eb_add.js.map +1 -1
  56. package/dist/services/actionflow/components/action_eb_update.js +1 -1
  57. package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
  58. package/dist/services/actionflow/components/dml_execute.d.ts +11 -0
  59. package/dist/services/actionflow/components/dml_execute.d.ts.map +1 -0
  60. package/dist/services/actionflow/components/dml_execute.js +172 -0
  61. package/dist/services/actionflow/components/dml_execute.js.map +1 -0
  62. package/dist/services/actionflow/components/enquiry_form.d.ts +7 -0
  63. package/dist/services/actionflow/components/enquiry_form.d.ts.map +1 -1
  64. package/dist/services/actionflow/components/enquiry_form.js +57 -7
  65. package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
  66. package/dist/services/actionflow/components/http.d.ts +12 -0
  67. package/dist/services/actionflow/components/http.d.ts.map +1 -0
  68. package/dist/services/actionflow/components/http.js +216 -0
  69. package/dist/services/actionflow/components/http.js.map +1 -0
  70. package/dist/services/actionflow/components/index.d.ts.map +1 -1
  71. package/dist/services/actionflow/components/index.js +7 -0
  72. package/dist/services/actionflow/components/index.js.map +1 -1
  73. package/dist/services/actionflow/components/send_message.d.ts.map +1 -1
  74. package/dist/services/actionflow/components/send_message.js +9 -1
  75. package/dist/services/actionflow/components/send_message.js.map +1 -1
  76. package/dist/services/actionflow/context_preflight.d.ts +2 -0
  77. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  78. package/dist/services/actionflow/context_preflight.js +127 -16
  79. package/dist/services/actionflow/context_preflight.js.map +1 -1
  80. package/dist/services/actionflow/datasource_source.d.ts +18 -0
  81. package/dist/services/actionflow/datasource_source.d.ts.map +1 -0
  82. package/dist/services/actionflow/datasource_source.js +19 -0
  83. package/dist/services/actionflow/datasource_source.js.map +1 -0
  84. package/dist/services/actionflow/design_client.d.ts +0 -2
  85. package/dist/services/actionflow/design_client.d.ts.map +1 -1
  86. package/dist/services/actionflow/design_client.js +0 -19
  87. package/dist/services/actionflow/design_client.js.map +1 -1
  88. package/dist/services/actionflow/dynamic_resources.d.ts +69 -0
  89. package/dist/services/actionflow/dynamic_resources.d.ts.map +1 -0
  90. package/dist/services/actionflow/dynamic_resources.js +259 -0
  91. package/dist/services/actionflow/dynamic_resources.js.map +1 -0
  92. package/dist/services/actionflow/form_source.d.ts +6 -0
  93. package/dist/services/actionflow/form_source.d.ts.map +1 -1
  94. package/dist/services/actionflow/form_source.js +16 -0
  95. package/dist/services/actionflow/form_source.js.map +1 -1
  96. package/dist/services/actionflow/formula_service.d.ts +2 -0
  97. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  98. package/dist/services/actionflow/formula_service.js +126 -6
  99. package/dist/services/actionflow/formula_service.js.map +1 -1
  100. package/dist/services/actionflow/generation_service.d.ts +17 -1
  101. package/dist/services/actionflow/generation_service.d.ts.map +1 -1
  102. package/dist/services/actionflow/generation_service.js +105 -8
  103. package/dist/services/actionflow/generation_service.js.map +1 -1
  104. package/dist/services/actionflow/http_input_params.d.ts +17 -0
  105. package/dist/services/actionflow/http_input_params.d.ts.map +1 -0
  106. package/dist/services/actionflow/http_input_params.js +98 -0
  107. package/dist/services/actionflow/http_input_params.js.map +1 -0
  108. package/dist/services/actionflow/http_source.d.ts +41 -0
  109. package/dist/services/actionflow/http_source.d.ts.map +1 -0
  110. package/dist/services/actionflow/http_source.js +261 -0
  111. package/dist/services/actionflow/http_source.js.map +1 -0
  112. package/dist/services/actionflow/plan_constraints.d.ts.map +1 -1
  113. package/dist/services/actionflow/plan_constraints.js +4 -2
  114. package/dist/services/actionflow/plan_constraints.js.map +1 -1
  115. package/dist/services/actionflow/preflight_service.d.ts +8 -0
  116. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  117. package/dist/services/actionflow/preflight_service.js +105 -27
  118. package/dist/services/actionflow/preflight_service.js.map +1 -1
  119. package/dist/services/actionflow/readback_verifier.d.ts.map +1 -1
  120. package/dist/services/actionflow/readback_verifier.js +34 -1
  121. package/dist/services/actionflow/readback_verifier.js.map +1 -1
  122. package/dist/services/actionflow/save_workflow_draft.d.ts +1 -0
  123. package/dist/services/actionflow/save_workflow_draft.d.ts.map +1 -1
  124. package/dist/services/actionflow/save_workflow_draft.js +61 -16
  125. package/dist/services/actionflow/save_workflow_draft.js.map +1 -1
  126. package/dist/services/actionflow/step_branches.d.ts +18 -0
  127. package/dist/services/actionflow/step_branches.d.ts.map +1 -0
  128. package/dist/services/actionflow/step_branches.js +26 -0
  129. package/dist/services/actionflow/step_branches.js.map +1 -0
  130. package/dist/services/actionflow/update_service.d.ts.map +1 -1
  131. package/dist/services/actionflow/update_service.js +24 -53
  132. package/dist/services/actionflow/update_service.js.map +1 -1
  133. package/dist/services/actionflow/workflow_compiler.d.ts +1 -1
  134. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  135. package/dist/services/actionflow/workflow_compiler.js +47 -11
  136. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  137. package/dist/services/esb-interface/document-parser.d.ts.map +1 -1
  138. package/dist/services/esb-interface/document-parser.js +17 -1
  139. package/dist/services/esb-interface/document-parser.js.map +1 -1
  140. package/dist/services/esb-interface/importer.d.ts +4 -1
  141. package/dist/services/esb-interface/importer.d.ts.map +1 -1
  142. package/dist/services/esb-interface/importer.js +10 -4
  143. package/dist/services/esb-interface/importer.js.map +1 -1
  144. package/dist/services/esb-interface/postman-collection.d.ts +6 -0
  145. package/dist/services/esb-interface/postman-collection.d.ts.map +1 -1
  146. package/dist/services/esb-interface/postman-collection.js +12 -1
  147. package/dist/services/esb-interface/postman-collection.js.map +1 -1
  148. package/dist/services/esb-interface/types.d.ts +1 -0
  149. package/dist/services/esb-interface/types.d.ts.map +1 -1
  150. package/dist/services/form-association.d.ts +1 -0
  151. package/dist/services/form-association.d.ts.map +1 -1
  152. package/dist/services/form-association.js +28 -4
  153. package/dist/services/form-association.js.map +1 -1
  154. package/dist/services/form-table-view.d.ts +24 -4
  155. package/dist/services/form-table-view.d.ts.map +1 -1
  156. package/dist/services/form-table-view.js +144 -133
  157. package/dist/services/form-table-view.js.map +1 -1
  158. package/dist/services/rich-types.d.ts.map +1 -1
  159. package/dist/services/rich-types.js +149 -9
  160. package/dist/services/rich-types.js.map +1 -1
  161. package/dist/services/skill-provision.d.ts +9 -3
  162. package/dist/services/skill-provision.d.ts.map +1 -1
  163. package/dist/services/skill-provision.js +36 -7
  164. package/dist/services/skill-provision.js.map +1 -1
  165. package/package.json +3 -2
  166. package/skill-docs/SKILL.md +261 -252
  167. package/skill-docs/_catalog.md +66 -0
  168. package/skill-docs/actionflows/CONTEXT.md +71 -0
  169. package/skill-docs/actionflows/SKILL.md +159 -0
  170. package/skill-docs/actionflows/references/components/database/DMLExecute.md +38 -0
  171. package/skill-docs/actionflows/references/components/ebuilder/ActionEbAdd.md +2 -0
  172. package/skill-docs/actionflows/references/components/ebuilder/ActionEbUpdate.md +2 -0
  173. package/skill-docs/actionflows/references/components/ebuilder/EnquiryForm.md +2 -2
  174. package/skill-docs/actionflows/references/components/http/Http.md +77 -0
  175. package/skill-docs/actionflows/references/components/message/SendMessage.md +14 -1
  176. package/skill-docs/actionflows/references/condition_rules.md +1 -0
  177. package/skill-docs/actionflows/references/dynamic_resources.md +41 -0
  178. package/skill-docs/actionflows/references/function_rules.md +15 -13
  179. package/skill-docs/references/common/guide-plan-template.md +21 -7
  180. package/skill-docs/references/common/ref-cli-commands.md +13 -6
  181. package/skill-docs/references/esb-interface/guide-import.md +31 -0
  182. package/skill-docs/references/form/guide-create-form.md +126 -376
  183. package/skill-docs/references/form/guide-form-association.md +6 -3
  184. package/skill-docs/references/form/guide-form-layout-planning.md +68 -0
  185. package/skill-docs/references/form/guide-form-serial-mark.md +47 -0
  186. package/skill-docs/references/form/guide-form-view.md +22 -3
  187. package/skill-docs/references/form/ref-form-fields.md +147 -0
  188. package/skill-docs/references/hrm/guide-matrix.md +54 -3
  189. package/skill-docs/references/workflow/guide-workflow-action.md +2 -0
  190. package/skill-docs/references/workflow/guide-workflow-condition.md +48 -6
  191. package/skill-docs/references/workflow/guide-workflow-odoc.md +76 -0
  192. package/skill-docs/references/workflow/guide-workflow.md +467 -461
  193. package/skill-docs/references/workflow/operator-matrix.md +2 -0
@@ -0,0 +1,261 @@
1
+ import { validateHttpInputParams } from './http_input_params.js';
2
+ import { getStepBranches } from './step_branches.js';
3
+ function base(client) {
4
+ return client.getBaseUrl();
5
+ }
6
+ function query(values) {
7
+ return new URLSearchParams(values).toString();
8
+ }
9
+ function rows(response) {
10
+ const data = response?.data ?? response;
11
+ if (Array.isArray(data))
12
+ return data;
13
+ if (!data || typeof data !== 'object')
14
+ return [];
15
+ for (const key of ['data', 'displayData', 'rows', 'records', 'list']) {
16
+ if (Array.isArray(data[key]))
17
+ return data[key];
18
+ }
19
+ return [];
20
+ }
21
+ function detailData(response) {
22
+ const data = response?.data ?? response;
23
+ return data && typeof data === 'object' && !Array.isArray(data) ? data : {};
24
+ }
25
+ function idOf(item, ...keys) {
26
+ for (const key of keys) {
27
+ const value = item?.[key];
28
+ if (value !== undefined && value !== null && String(value).trim())
29
+ return String(value);
30
+ }
31
+ return '';
32
+ }
33
+ function nameOf(item) {
34
+ return String(item?.name ?? item?.content ?? item?.showName ?? item?.title ?? '').trim();
35
+ }
36
+ function httpResponseField(response, paramKey) {
37
+ const wanted = String(paramKey || '').trim();
38
+ if (!wanted)
39
+ return null;
40
+ for (const table of response?.tables || []) {
41
+ const tableName = String(table?.name || '').toLowerCase();
42
+ const group = tableName === 'body' ? 'responseBody' : tableName === 'header' ? 'responseHeader' : tableName === 'cookie' ? 'responseCookie' : String(table?.name || 'responseBody');
43
+ for (const field of table?.tableData || []) {
44
+ const key = String(field?.paramKey || '');
45
+ if (wanted === key || wanted === `${group}.${key}`)
46
+ return { field, group };
47
+ }
48
+ }
49
+ return null;
50
+ }
51
+ /** 校验并用接口详情中的真实名称回填 HTTP 上下文引用。 */
52
+ export function normalizeHttpContextReferences(actions) {
53
+ const responses = new Map();
54
+ const collect = (steps) => {
55
+ for (const step of steps || []) {
56
+ if (!step || typeof step !== 'object')
57
+ continue;
58
+ if (step.type === 'Http') {
59
+ const response = step.params?.response;
60
+ for (const key of [step.ref, step.id]) {
61
+ if (key !== undefined && key !== null && String(key))
62
+ responses.set(String(key), response);
63
+ }
64
+ }
65
+ collect(Array.isArray(step.actions) ? step.actions : []);
66
+ for (const branch of getStepBranches(step))
67
+ collect(Array.isArray(branch?.actions) ? branch.actions : []);
68
+ }
69
+ };
70
+ collect(actions);
71
+ const validate = (steps, path) => {
72
+ for (const [index, step] of (steps || []).entries()) {
73
+ if (!step || typeof step !== 'object')
74
+ continue;
75
+ const stepPath = `${path}[${index}]`;
76
+ if (step.type === 'Http') {
77
+ for (const [paramIndex, item] of (step.params?.inputParams || []).entries()) {
78
+ const value = item?.value;
79
+ if (!value || value.kind !== 'context')
80
+ continue;
81
+ const source = String(value.source || '').trim();
82
+ const field = httpResponseField(responses.get(source), String(value.paramKey || ''));
83
+ if (!field) {
84
+ throw new Error(`${stepPath}.params.inputParams[${paramIndex}] 引用了 ${source || '上游 HTTP 节点'} 的不存在响应字段 '${String(value.paramKey || '')}';不能自行编造登录Token等字段,请以 interface-detail.response 为准`);
85
+ }
86
+ const live = field.field;
87
+ value.label = String(live.showName || live.paramName || live.paramKey);
88
+ value.responseFieldId = live.id !== undefined ? String(live.id) : undefined;
89
+ }
90
+ }
91
+ validate(Array.isArray(step.actions) ? step.actions : [], `${stepPath}.actions`);
92
+ for (const [branchIndex, branch] of getStepBranches(step).entries()) {
93
+ validate(Array.isArray(branch?.actions) ? branch.actions : [], `${stepPath}.branches[${branchIndex}].actions`);
94
+ }
95
+ }
96
+ };
97
+ validate(actions, 'actions');
98
+ }
99
+ /** 设计器 connector.icon 有时是 JSON 字符串,有时直接是对象/图标名。 */
100
+ export function resolveHttpConnectorIcon(value) {
101
+ let icon = value;
102
+ if (typeof icon === 'string') {
103
+ const raw = icon.trim();
104
+ if (!raw)
105
+ return '';
106
+ try {
107
+ icon = JSON.parse(raw);
108
+ }
109
+ catch {
110
+ return raw;
111
+ }
112
+ }
113
+ if (icon && typeof icon === 'object') {
114
+ return String(icon.path ?? icon.icon ?? icon.name ?? '').trim();
115
+ }
116
+ return String(icon ?? '').trim();
117
+ }
118
+ /**
119
+ * 按当前租户解析完整 HTTP 绑定。名称/图标只来自当前 connector 列表,
120
+ * request/response/address/method 只来自当前 interface detail;不根据“E9”等名称猜 ID。
121
+ */
122
+ export async function resolveHttpBinding(client, params) {
123
+ const systemId = String(params?.systemId ?? '').trim();
124
+ const resourceId = String(params?.resourceId ?? '').trim();
125
+ const interfaceId = String(params?.interfaceId ?? '').trim();
126
+ if (!systemId || !resourceId || !interfaceId) {
127
+ throw new Error('Http 必须同时提供当前租户的 systemId、resourceId、interfaceId,不能只填连接器/资源名称');
128
+ }
129
+ const connectorResponse = await httpConnectors(client);
130
+ const connectorRaw = rows(connectorResponse).find((item) => idOf(item, 'id', 'systemId', 'systemPk') === systemId);
131
+ if (!connectorRaw)
132
+ throw new Error(`当前租户 HTTP 连接器不存在: systemId=${systemId};请重新读取 http-connectors,不能复用其他环境的连接器 ID`);
133
+ const resourceResponse = await httpResources(client, systemId);
134
+ const resourceRaw = rows(resourceResponse).find((item) => {
135
+ const rowId = idOf(item, 'id', 'resourceId', 'linkInfoId');
136
+ const owner = idOf(item, 'systemPk', 'systemId', 'system');
137
+ return rowId === resourceId && (!owner || owner === systemId);
138
+ });
139
+ if (!resourceRaw)
140
+ throw new Error(`连接器 '${nameOf(connectorRaw) || systemId}' 下不存在资源: resourceId=${resourceId};当前环境可能没有这条连接信息`);
141
+ const interfaceResponse = await httpInterfaces(client, systemId, resourceId, interfaceId);
142
+ const interfaceRaw = rows(interfaceResponse).find((item) => idOf(item, 'id', 'interfaceId') === interfaceId);
143
+ if (!interfaceRaw)
144
+ throw new Error(`资源 '${nameOf(resourceRaw) || resourceId}' 下不存在接口: interfaceId=${interfaceId};请重新读取 http-interfaces`);
145
+ const detailResponse = await httpInterfaceDetail(client, interfaceId);
146
+ const detail = detailData(detailResponse);
147
+ const detailSystemId = idOf(detail, 'systemId', 'systemPk');
148
+ const detailInterfaceId = idOf(detail, 'interfaceId', 'id');
149
+ if (detailSystemId && detailSystemId !== systemId)
150
+ throw new Error(`HTTP 接口详情归属异常: interfaceId=${interfaceId} 不属于 systemId=${systemId}`);
151
+ if (detailInterfaceId && detailInterfaceId !== interfaceId)
152
+ throw new Error(`HTTP 接口详情 ID 不一致: 请求=${interfaceId},返回=${detailInterfaceId}`);
153
+ if (!detail.request || typeof detail.request !== 'object' || Array.isArray(detail.request)) {
154
+ throw new Error(`HTTP 接口 '${nameOf(interfaceRaw) || interfaceId}' 缺少原生 request 参数映射,已停止生成`);
155
+ }
156
+ return {
157
+ connector: { id: systemId, name: nameOf(connectorRaw), icon: resolveHttpConnectorIcon(connectorRaw.icon), raw: connectorRaw },
158
+ resource: { id: resourceId, name: nameOf(resourceRaw), raw: resourceRaw },
159
+ endpoint: { id: interfaceId, name: nameOf(interfaceRaw), raw: interfaceRaw },
160
+ detail,
161
+ };
162
+ }
163
+ /** 遍历动作分支并把当前租户 HTTP 目录信息写回计划,供预检与画布节点后处理使用。 */
164
+ export async function resolveHttpBindings(plan, client) {
165
+ const records = [];
166
+ const walk = async (steps, path) => {
167
+ for (const [index, step] of (steps || []).entries()) {
168
+ if (!step || typeof step !== 'object')
169
+ continue;
170
+ const stepPath = `${path}[${index}]`;
171
+ if (String(step.type || '') === 'Http') {
172
+ const params = step.params && typeof step.params === 'object' ? step.params : (step.params = {});
173
+ const live = await resolveHttpBinding(client, params);
174
+ const detail = live.detail;
175
+ const sameNativeObject = (field) => {
176
+ const supplied = params[field];
177
+ const liveValue = detail[field];
178
+ if (supplied === undefined || supplied === null || supplied === '')
179
+ return true;
180
+ if (!supplied || typeof supplied !== 'object' || Array.isArray(supplied)) {
181
+ throw new Error(`${stepPath}.params.${field} 必须是当前接口详情返回的平台原生对象`);
182
+ }
183
+ const suppliedId = idOf(supplied, 'id', 'mappingId');
184
+ const liveId = idOf(liveValue, 'id', 'mappingId');
185
+ if (liveId && suppliedId !== liveId) {
186
+ throw new Error(`${stepPath}.params.${field} 不属于当前接口详情;请重新读取 interface-detail,禁止混用其他环境的原生映射`);
187
+ }
188
+ return true;
189
+ };
190
+ sameNativeObject('request');
191
+ sameNativeObject('response');
192
+ // 这些字段是接口详情的回显值,不能信任计划里残留的旧环境地址/方法。
193
+ params.address = detail.address;
194
+ params.requestMethod = detail.requestMethod;
195
+ params.type = detail.type || live.endpoint.raw.interfaceType || 'http';
196
+ if (detail.selectMethod !== undefined)
197
+ params.selectMethod = detail.selectMethod;
198
+ if (detail.soapVersion !== undefined)
199
+ params.soapVersion = detail.soapVersion;
200
+ params.request ??= detail.request;
201
+ params.response ??= detail.response;
202
+ validateHttpInputParams(params.request, params.inputParams, `${stepPath}.params.inputParams`);
203
+ params._httpLive = {
204
+ connectorName: live.connector.name,
205
+ connectorIcon: live.connector.icon,
206
+ resourceName: live.resource.name,
207
+ interfaceName: live.endpoint.name,
208
+ interfaceType: detail.type || live.endpoint.raw.type || '',
209
+ };
210
+ records.push({
211
+ path: `${stepPath}.params`, resourceType: 'http_binding',
212
+ value: { systemId: live.connector.id, systemName: live.connector.name, resourceId: live.resource.id, resourceName: live.resource.name, interfaceId: live.endpoint.id, interfaceName: live.endpoint.name },
213
+ reason: 'HTTP 连接器、资源、接口及接口详情均从当前租户实时读取;标题和图标使用当前连接器目录',
214
+ });
215
+ }
216
+ if (String(step.type || '') === 'Condition') {
217
+ const branches = getStepBranches(step);
218
+ for (const [branchIndex, branch] of branches.entries()) {
219
+ await walk(branch?.actions || [], `${stepPath}.branches[${branchIndex}].actions`);
220
+ }
221
+ }
222
+ if (Array.isArray(step.actions))
223
+ await walk(step.actions, `${stepPath}.actions`);
224
+ }
225
+ };
226
+ await walk(plan.actions || [], 'actions');
227
+ // 上下文引用必须落到上游接口详情真实存在的 response 字段;同时丢弃计划里
228
+ // 可能写入的臆造显示名,避免画布显示一个平台不存在的“登录Token”。
229
+ normalizeHttpContextReferences(plan.actions || []);
230
+ if (records.length)
231
+ (plan._autoResources ??= []).push(...records);
232
+ return records;
233
+ }
234
+ /** 当前租户的 HTTP 连接器,前端路径 connector/getConnetorNoPage?target=http。 */
235
+ export async function httpConnectors(client) {
236
+ return client.get(`${base(client)}/api/bs/esb/setting/connector/getConnetorNoPage?target=http`);
237
+ }
238
+ /** 连接器下的连接信息/资源,原样返回平台分页 DTO。 */
239
+ export async function httpResources(client, systemId) {
240
+ if (!String(systemId || '').trim())
241
+ throw new Error('http-resources 缺少 systemId');
242
+ return client.get(`${base(client)}/api/bs/esb/setting/resource/getResourceListPage?${query({
243
+ systemPk: String(systemId), status: '0', showDefalt: 'true', interfaceId: '', current: '1', pageSize: '100',
244
+ })}`);
245
+ }
246
+ /** 连接器/资源下的接口列表,原样返回平台分页 DTO。 */
247
+ export async function httpInterfaces(client, systemId, resourceId = '', interfaceId = '') {
248
+ if (!String(systemId || '').trim())
249
+ throw new Error('http-interfaces 缺少 systemId');
250
+ return client.get(`${base(client)}/api/bs/esb/setting/interface/list?${query({
251
+ systemId: String(systemId), status: '0', showDefalt: 'true', current: '1', pageSize: '200',
252
+ linkInfoId: String(resourceId || ''), interfaceId: String(interfaceId || ''),
253
+ })}`);
254
+ }
255
+ /** 接口详情,包含 address/requestMethod/request/response/type 等 HTTP 组件原生字段。 */
256
+ export async function httpInterfaceDetail(client, interfaceId) {
257
+ if (!String(interfaceId || '').trim())
258
+ throw new Error('http-interface-detail 缺少 interfaceId');
259
+ return client.get(`${base(client)}/api/bs/esb/setting/interface/getInterfaceInfo/${encodeURIComponent(String(interfaceId))}`);
260
+ }
261
+ //# sourceMappingURL=http_source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http_source.js","sourceRoot":"","sources":["../../../src/services/actionflow/http_source.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plan_constraints.d.ts","sourceRoot":"","sources":["../../../src/services/actionflow/plan_constraints.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAiClB,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAM9F;AAED,kCAAkC;AAClC,wBAAgB,sCAAsC,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAMhG"}
1
+ {"version":3,"file":"plan_constraints.d.ts","sourceRoot":"","sources":["../../../src/services/actionflow/plan_constraints.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAoClB,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAM9F;AAED,kCAAkC;AAClC,wBAAgB,sCAAsC,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAMhG"}
@@ -1,4 +1,5 @@
1
1
  /** 动作流级别的组合约束。 */
2
+ import { getStepBranches } from './step_branches.js';
2
3
  const INNER_MQ_LISTENER = 'InnerMQListener';
3
4
  const INNER_MQ_SEND = 'InnerMQSend';
4
5
  function visitNode(node, types) {
@@ -10,8 +11,9 @@ function visitNode(node, types) {
10
11
  types.add(node.comType);
11
12
  if (Array.isArray(node.actions))
12
13
  node.actions.forEach((child) => visitNode(child, types));
13
- if (Array.isArray(node.branches)) {
14
- node.branches.forEach((branch) => {
14
+ const branches = getStepBranches(node);
15
+ if (branches.length) {
16
+ branches.forEach((branch) => {
15
17
  if (branch && typeof branch === 'object') {
16
18
  if (Array.isArray(branch.actions))
17
19
  branch.actions.forEach((child) => visitNode(child, types));
@@ -1 +1 @@
1
- {"version":3,"file":"plan_constraints.js","sourceRoot":"","sources":["../../../src/services/actionflow/plan_constraints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan_constraints.js","sourceRoot":"","sources":["../../../src/services/actionflow/plan_constraints.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,14 @@ export declare function syncFormReferencesToDraft(draft: Record<string, any>, pl
32
32
  /** 将预检阶段补齐的“查询字段默认全选”同步到已归一化的 Draft。
33
33
  * 查询节点的 dataSource 会在编译器中改成服务 DTO,不能再依赖编译期缓存二次推导字段。 */
34
34
  export declare function syncQueryFieldsToDraft(draft: Record<string, any>, plan: Record<string, any>): void;
35
+ /**
36
+ * 归一化 showDataSourceFields 的返回值。
37
+ *
38
+ * 设计器前端直接把该接口返回值当作数组使用;部分网关/旧版本则会包成
39
+ * { data: [...] }。生成器之前只读取 response.data,导致真实业务字段被
40
+ * 误判为不存在,查询节点最终只保存系统字段,后续动态赋值便显示“已删除”。
41
+ */
42
+ export declare function normalizeShowDataSourceFields(response: any, formId: string): any[];
35
43
  export declare function syncEventResourcesToDraft(draft: Record<string, any>, plan: Record<string, any>): void;
36
44
  export declare function syncFixedPeopleToDraft(draft: Record<string, any>, plan: Record<string, any>): void;
37
45
  export declare function syncBizFieldsToDraft(draft: Record<string, any>, plan: Record<string, any>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"preflight_service.d.ts","sourceRoot":"","sources":["../../../src/services/actionflow/preflight_service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAgHtD,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAKjF;AAED,uEAAuE;AACvE,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAyC1H;AAgCD,4EAA4E;AAC5E,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA2LxG;AAED,+BAA+B;AAC/B,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAe9G;AAoBD,iCAAiC;AACjC,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CA4CrG;AAED,0CAA0C;AAC1C,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCxH;AAED,mDAAmD;AACnD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgEnK;AAED,4CAA4C;AAC5C,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CA+ElH;AAoFD,mCAAmC;AACnC,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG,IAAI,CAgD/F;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG,IAAI,CAwD5G;AAID,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CASnG;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAsBrG;AAED;uDACuD;AACvD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAgBlG;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAMrG;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAsClG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAYhG;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAcpG;AAED,uDAAuD;AACvD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CActG;AAqDD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;CACvB;AAED,kCAAkC;AAClC,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,CAuS5H"}
1
+ {"version":3,"file":"preflight_service.d.ts","sourceRoot":"","sources":["../../../src/services/actionflow/preflight_service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAwGtD,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAKjF;AAED,uEAAuE;AACvE,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAyC1H;AAgCD,4EAA4E;AAC5E,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA2LxG;AAED,+BAA+B;AAC/B,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAe9G;AAoBD,iCAAiC;AACjC,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CA4CrG;AAED,0CAA0C;AAC1C,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCxH;AAED,mDAAmD;AACnD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgEnK;AAED,4CAA4C;AAC5C,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CA4FlH;AAoFD,mCAAmC;AACnC,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG,IAAI,CAgD/F;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG,IAAI,CAwD5G;AAID,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CASnG;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAsBrG;AAED;uDACuD;AACvD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAgBlG;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,CAkClF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAMrG;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAsClG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAYhG;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAcpG;AAED,uDAAuD;AACvD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CActG;AAqDD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;CACvB;AAED,kCAAkC;AAClC,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,CAiU5H"}
@@ -3,22 +3,15 @@ import * as workflowSource from './workflow_source.js';
3
3
  import * as personSource from './person_source.js';
4
4
  import * as contextSource from './context_source.js';
5
5
  import * as hrmSource from './hrm_source.js';
6
+ import { resolveHttpBindings } from './http_source.js';
6
7
  import { registerTargetFormFields, registerTargetDetailFields, registerWorkflowFieldIds, registerWorkflowContextFields, getWorkflowFieldIds, getWorkflowDetailFields, getWorkflowDetailNames, getTargetFormFields, } from './runtime_metadata.js';
7
8
  // workflow_id → 目标表单 id(进程缓存)
8
9
  const FORM_ID_CACHE = {};
9
10
  import { ContextStore, PlatformContextProvider } from './context_provider.js';
10
- import { queryNodeContext } from './context_preflight.js';
11
+ import { hydrateQueryResultReferences, queryNodeContext } from './context_preflight.js';
11
12
  import { get as getComponent } from './components/index.js';
12
13
  import { defaultQueryFieldsAll } from './query_field_defaults.js';
13
- /** 计划 Condition 步骤的分支:兼容顶层 branches 与 params.branches(组件契约 params.branches)。
14
- * 编译器已认 params.branches,预检此前只读顶层导致漏检/误拒(D04)。 */
15
- function getStepBranches(step) {
16
- const top = step && getStepBranches(step);
17
- if (Array.isArray(top))
18
- return top;
19
- const inner = step && step.params && step.params.branches;
20
- return Array.isArray(inner) ? inner : [];
21
- }
14
+ import { getStepBranches } from './step_branches.js';
22
15
  // 表单字段进程缓存
23
16
  const FORM_FIELDS_CACHE = {};
24
17
  const FORM_LIST_CACHE = {};
@@ -678,7 +671,22 @@ export function checkSourceReferences(plan, eventContextFields, errors) {
678
671
  const path = `${prefix}[${idx}]`;
679
672
  if (['ActionEbAdd', 'ActionEbUpdate', 'ActionEbDelete', 'ActionEbRecover', 'ActionEbSaveVersion', 'EbGetDataById'].includes(step.type)) {
680
673
  if (params && typeof params === 'object') {
681
- checkMapping(params.mapping, `${path}.mapping`);
674
+ const mapping = params.mapping;
675
+ if (mapping && typeof mapping === 'object' && !Array.isArray(mapping)) {
676
+ // 循环体字段来自 MultipleExecution 的 CycleParams,不属于最外层
677
+ // 触发器流程上下文;它由循环节点查询后的 hydrateCurrentLoopReferences
678
+ // 单独校验和补全,不能再按 workflowId 源字段检查。
679
+ const topLevelMapping = Object.fromEntries(Object.entries(mapping).filter(([, value]) => {
680
+ if (!value || typeof value !== 'object' || Array.isArray(value))
681
+ return true;
682
+ return String(value.scope ?? value.contextScope ?? '') !== 'current_loop'
683
+ && String(value.assignment?.scope ?? value.assignment?.contextScope ?? '') !== 'current_loop';
684
+ }));
685
+ checkMapping(topLevelMapping, `${path}.mapping`);
686
+ }
687
+ else {
688
+ checkMapping(mapping, `${path}.mapping`);
689
+ }
682
690
  const bv = params.basisValue;
683
691
  if (bv && typeof bv === 'object') {
684
692
  if (String(bv.kind || bv.assignmentKind || '') !== 'query_result') {
@@ -958,7 +966,7 @@ export function syncFormReferencesToDraft(draft, plan) {
958
966
  dp[key] = { ...ref };
959
967
  }
960
968
  }
961
- const pb = planStep.branches, db = draftStep.branches;
969
+ const pb = getStepBranches(planStep), db = getStepBranches(draftStep);
962
970
  if (Array.isArray(pb) && Array.isArray(db)) {
963
971
  for (let i = 0; i < pb.length && i < db.length; i++) {
964
972
  const pa2 = pb[i]?.actions || [], da2 = db[i]?.actions || [];
@@ -983,7 +991,7 @@ export function syncQueryFieldsToDraft(draft, plan) {
983
991
  if (Array.isArray(queryFields) && queryFields.length && draftStep.params && typeof draftStep.params === 'object') {
984
992
  draftStep.params.queryFields = queryFields.map((field) => ({ ...field }));
985
993
  }
986
- const pb = planStep.branches || [], db = draftStep.branches || [];
994
+ const pb = getStepBranches(planStep), db = getStepBranches(draftStep);
987
995
  for (let i = 0; i < pb.length && i < db.length; i++) {
988
996
  const pa = pb[i]?.actions || [], da = db[i]?.actions || [];
989
997
  for (let j = 0; j < pa.length && j < da.length; j++)
@@ -995,6 +1003,51 @@ export function syncQueryFieldsToDraft(draft, plan) {
995
1003
  for (let i = 0; i < pa.length && i < da.length; i++)
996
1004
  syncStep(pa[i], da[i]);
997
1005
  }
1006
+ /**
1007
+ * 归一化 showDataSourceFields 的返回值。
1008
+ *
1009
+ * 设计器前端直接把该接口返回值当作数组使用;部分网关/旧版本则会包成
1010
+ * { data: [...] }。生成器之前只读取 response.data,导致真实业务字段被
1011
+ * 误判为不存在,查询节点最终只保存系统字段,后续动态赋值便显示“已删除”。
1012
+ */
1013
+ export function normalizeShowDataSourceFields(response, formId) {
1014
+ const root = Array.isArray(response)
1015
+ ? response
1016
+ : Array.isArray(response?.data)
1017
+ ? response.data
1018
+ : Array.isArray(response?.result)
1019
+ ? response.result
1020
+ : [];
1021
+ const fields = [];
1022
+ const visit = (items, inheritedFormId = String(formId), inheritedGroup = undefined) => {
1023
+ for (const item of items || []) {
1024
+ if (!item || typeof item !== 'object')
1025
+ continue;
1026
+ const itemFormId = String(item.formId || inheritedFormId || formId);
1027
+ const group = item.fieldGroup || inheritedGroup || {
1028
+ name: String(item.text || item.formName || item.name || ''),
1029
+ id: itemFormId,
1030
+ };
1031
+ if (Array.isArray(item.fields)) {
1032
+ for (const field of item.fields) {
1033
+ if (!field || typeof field !== 'object' || !field.id)
1034
+ continue;
1035
+ fields.push({
1036
+ ...field,
1037
+ formId: String(field.formId || itemFormId),
1038
+ // 接口返回的 fieldGroup 常只有 id;设计器保存业务字段还需要分组名称。
1039
+ // 合并而不是直接透传,避免平台把业务字段静默过滤成仅剩系统字段。
1040
+ fieldGroup: { ...(group || {}), ...(field.fieldGroup || {}) },
1041
+ });
1042
+ }
1043
+ }
1044
+ if (Array.isArray(item.groups))
1045
+ visit(item.groups, itemFormId, group);
1046
+ }
1047
+ };
1048
+ visit(root);
1049
+ return fields;
1050
+ }
998
1051
  export function syncEventResourcesToDraft(draft, plan) {
999
1052
  const pe = plan.event, de = draft.event;
1000
1053
  if (!pe || !de || typeof pe !== 'object' || typeof de !== 'object')
@@ -1034,8 +1087,8 @@ export function syncFixedPeopleToDraft(draft, plan) {
1034
1087
  }
1035
1088
  }
1036
1089
  }
1037
- const planBranches = planStep.branches || [];
1038
- const draftBranches = draftStep.branches || [];
1090
+ const planBranches = getStepBranches(planStep);
1091
+ const draftBranches = getStepBranches(draftStep);
1039
1092
  for (let i = 0; i < planBranches.length && i < draftBranches.length; i++) {
1040
1093
  const planActions = planBranches[i]?.actions || [];
1041
1094
  const draftActions = draftBranches[i]?.actions || [];
@@ -1076,8 +1129,8 @@ export function syncEntrustFieldsToDraft(draft, plan) {
1076
1129
  if (planStep.type === 'ApproveEntrust' && planStep.params?._entrustFields && draftStep.params) {
1077
1130
  draftStep.params._entrustFields = planStep.params._entrustFields;
1078
1131
  }
1079
- const planBranches = planStep.branches || [];
1080
- const draftBranches = draftStep.branches || [];
1132
+ const planBranches = getStepBranches(planStep);
1133
+ const draftBranches = getStepBranches(draftStep);
1081
1134
  for (let i = 0; i < planBranches.length && i < draftBranches.length; i++) {
1082
1135
  const pa = planBranches[i]?.actions || [], da = draftBranches[i]?.actions || [];
1083
1136
  for (let j = 0; j < pa.length && j < da.length; j++)
@@ -1095,7 +1148,7 @@ export function syncHrmFieldSchemasToDraft(draft, plan) {
1095
1148
  if (['PersonnelOnboarding', 'HrmEmployeeUpdate'].includes(String(planStep.type)) && planStep.params?._hrmFieldSchema && draftStep.params) {
1096
1149
  draftStep.params._hrmFieldSchema = planStep.params._hrmFieldSchema;
1097
1150
  }
1098
- const planBranches = planStep.branches || [], draftBranches = draftStep.branches || [];
1151
+ const planBranches = getStepBranches(planStep), draftBranches = getStepBranches(draftStep);
1099
1152
  for (let i = 0; i < planBranches.length && i < draftBranches.length; i++)
1100
1153
  syncSteps(planBranches[i]?.actions || [], draftBranches[i]?.actions || []);
1101
1154
  if (Array.isArray(planStep.actions) && Array.isArray(draftStep.actions))
@@ -1187,6 +1240,14 @@ export async function preflightContext(plan, appId, client) {
1187
1240
  await resolveFixedPeople(plan, client);
1188
1241
  await resolveEntrustFields(plan, client, errors);
1189
1242
  await resolveHrmFieldAssignments(plan, client, errors);
1243
+ try {
1244
+ await resolveHttpBindings(plan, client);
1245
+ }
1246
+ catch (e) {
1247
+ errors.push(`HTTP 连接器实时校验失败: ${String(e?.message || e)}`);
1248
+ }
1249
+ if (errors.length)
1250
+ return { valid: false, errors, warnings, contextStore: store.asDict() };
1190
1251
  // 回填 targetForm 缺失的 groupId/name
1191
1252
  try {
1192
1253
  const unresolvedForms = await resolveTargetForms(plan, client);
@@ -1212,23 +1273,35 @@ export async function preflightContext(plan, appId, client) {
1212
1273
  // 查询组件偶尔会只保留系统字段,筛选编辑器因此把业务字段标成“已删除”。
1213
1274
  const params = step.params && typeof step.params === 'object' ? step.params : (step.params = {});
1214
1275
  if (['EnquiryForm', 'TimeBatchTrigger', 'DateTrigger'].includes(step.type)) {
1215
- // getEbField 用于类型/筛选校验;queryFields 必须以设计器自身
1216
- // showDataSourceFields 的完整对象保存,否则后端会静默丢弃业务字段。
1276
+ // getEbField 用于类型/筛选校验;queryFields 必须采用设计器字段选择器
1277
+ // showDataSourceFields 返回的对象和字段 ID(业务字段通常是 field_<真实ID>),
1278
+ // 否则后端会静默丢弃业务字段。
1217
1279
  let selectable = [];
1218
1280
  try {
1219
- const resp = await formSource.showDataSourceFields(client, formId, String(tf.groupId || ''), String(tf.type || 'FORM'));
1220
- const groups = Array.isArray(resp?.data) ? resp.data : [];
1221
- selectable = groups.flatMap((group) => Array.isArray(group?.fields)
1222
- ? group.fields.map((field) => ({ ...field, formId: String(field.formId || group.formId || formId) }))
1223
- : []);
1281
+ // EnquiryForm 编译后数据源的服务组固定为 weaver-ebuilder-form-service;
1282
+ // tf.groupId 是业务应用 ID,传它会得到空字段列表,进而把 queryFields 留成不完整的 plan 对象。
1283
+ const resp = await formSource.showDataSourceFields(client, formId, 'weaver-ebuilder-form-service', 'LOGIC');
1284
+ selectable = normalizeShowDataSourceFields(resp, formId);
1224
1285
  }
1225
1286
  catch {
1226
1287
  // 接口异常时保留下方基于 getEbField 的降级;最终保存仍由平台严格校验。
1227
1288
  }
1228
- const byId = new Map(selectable.map((field) => [String(field.id || ''), field]));
1289
+ const byId = new Map();
1290
+ for (const field of selectable) {
1291
+ const id = String(field?.id || '');
1292
+ if (!id)
1293
+ continue;
1294
+ byId.set(id, field);
1295
+ // 兼容旧 plan/API 返回不带 field_ 前缀的裸字段 ID,
1296
+ // 但最终一定替换成当前租户字段选择器的真实 ID。
1297
+ byId.set(id.startsWith('field_') ? id.slice('field_'.length) : `field_${id}`, field);
1298
+ }
1229
1299
  const requested = Array.isArray(params.queryFields) && params.queryFields.length ? params.queryFields : null;
1230
1300
  if (requested) {
1231
- params.queryFields = requested.map((field) => ({ ...(byId.get(String(field?.id || '')) || {}), ...field }));
1301
+ params.queryFields = requested.map((field) => {
1302
+ const live = byId.get(String(field?.id || ''));
1303
+ return live ? { ...live, ...field, id: String(live.id) } : { ...field };
1304
+ });
1232
1305
  }
1233
1306
  else if (selectable.length) {
1234
1307
  params.queryFields = selectable;
@@ -1447,6 +1520,11 @@ export async function preflightContext(plan, appId, client) {
1447
1520
  errors.push(...result.errors);
1448
1521
  if (result.errors.length)
1449
1522
  return;
1523
+ if (step.type === 'EnquiryForm') {
1524
+ // 预检拿到的上下文包含平台生成的字段实例 id;回填到后续
1525
+ // query_result,编译 HTTP FormulaBean 时复用手工配置协议。
1526
+ hydrateQueryResultReferences(steps.slice(index + 1), result.context, String(step.ref || step.name || step.id || ''));
1527
+ }
1450
1528
  if (step.type === 'Condition') {
1451
1529
  for (const [bi, branch] of (getStepBranches(step) || []).entries()) {
1452
1530
  if (branch && typeof branch === 'object') {