weaver-e10-builder 1.6.10 → 1.6.12

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 (289) hide show
  1. package/dist/commands/form-browser-definition.d.ts.map +1 -1
  2. package/dist/commands/form-browser-definition.js +108 -7
  3. package/dist/commands/form-browser-definition.js.map +1 -1
  4. package/dist/commands/form-browser-scope-rules.d.ts +27 -0
  5. package/dist/commands/form-browser-scope-rules.d.ts.map +1 -0
  6. package/dist/commands/form-browser-scope-rules.js +141 -0
  7. package/dist/commands/form-browser-scope-rules.js.map +1 -0
  8. package/dist/commands/form-browser-scope-tree.d.ts +14 -0
  9. package/dist/commands/form-browser-scope-tree.d.ts.map +1 -0
  10. package/dist/commands/form-browser-scope-tree.js +115 -0
  11. package/dist/commands/form-browser-scope-tree.js.map +1 -0
  12. package/dist/commands/matrix-maintainer.d.ts +3 -0
  13. package/dist/commands/matrix-maintainer.d.ts.map +1 -0
  14. package/dist/commands/matrix-maintainer.js +117 -0
  15. package/dist/commands/matrix-maintainer.js.map +1 -0
  16. package/dist/commands/matrix.d.ts.map +1 -1
  17. package/dist/commands/matrix.js +2 -0
  18. package/dist/commands/matrix.js.map +1 -1
  19. package/dist/commands/report-admin.d.ts.map +1 -1
  20. package/dist/commands/report-admin.js +378 -2
  21. package/dist/commands/report-admin.js.map +1 -1
  22. package/dist/commands/report-validate.d.ts.map +1 -1
  23. package/dist/commands/report-validate.js +1102 -3
  24. package/dist/commands/report-validate.js.map +1 -1
  25. package/dist/commands/report.d.ts.map +1 -1
  26. package/dist/commands/report.js +341 -3
  27. package/dist/commands/report.js.map +1 -1
  28. package/dist/commands/role.d.ts.map +1 -1
  29. package/dist/commands/role.js +354 -0
  30. package/dist/commands/role.js.map +1 -1
  31. package/dist/commands/special.d.ts.map +1 -1
  32. package/dist/commands/special.js +67 -31
  33. package/dist/commands/special.js.map +1 -1
  34. package/dist/commands/wf-form.d.ts.map +1 -1
  35. package/dist/commands/wf-form.js +1 -121
  36. package/dist/commands/wf-form.js.map +1 -1
  37. package/dist/commands/workflow-after-submit-comment.d.ts +3 -0
  38. package/dist/commands/workflow-after-submit-comment.d.ts.map +1 -0
  39. package/dist/commands/workflow-after-submit-comment.js +56 -0
  40. package/dist/commands/workflow-after-submit-comment.js.map +1 -0
  41. package/dist/commands/workflow-layout-components.d.ts +3 -0
  42. package/dist/commands/workflow-layout-components.d.ts.map +1 -0
  43. package/dist/commands/workflow-layout-components.js +36 -0
  44. package/dist/commands/workflow-layout-components.js.map +1 -0
  45. package/dist/commands/workflow-node-batch.d.ts +3 -0
  46. package/dist/commands/workflow-node-batch.d.ts.map +1 -0
  47. package/dist/commands/workflow-node-batch.js +136 -0
  48. package/dist/commands/workflow-node-batch.js.map +1 -0
  49. package/dist/commands/workflow-node-opinion.d.ts +3 -0
  50. package/dist/commands/workflow-node-opinion.d.ts.map +1 -0
  51. package/dist/commands/workflow-node-opinion.js +51 -0
  52. package/dist/commands/workflow-node-opinion.js.map +1 -0
  53. package/dist/commands/workflow-node-reject.js +1 -1
  54. package/dist/commands/workflow-node-reject.js.map +1 -1
  55. package/dist/commands/workflow-node.d.ts.map +1 -1
  56. package/dist/commands/workflow-node.js +4 -3
  57. package/dist/commands/workflow-node.js.map +1 -1
  58. package/dist/commands/workflow-setting.d.ts.map +1 -1
  59. package/dist/commands/workflow-setting.js +2 -67
  60. package/dist/commands/workflow-setting.js.map +1 -1
  61. package/dist/index.js +6 -2
  62. package/dist/index.js.map +1 -1
  63. package/dist/services/actionflow/components/send_message.d.ts.map +1 -1
  64. package/dist/services/actionflow/components/send_message.js +8 -3
  65. package/dist/services/actionflow/components/send_message.js.map +1 -1
  66. package/dist/services/actionflow/context_preflight.js +1 -1
  67. package/dist/services/actionflow/context_preflight.js.map +1 -1
  68. package/dist/services/actionflow/formula_service.d.ts +1 -0
  69. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  70. package/dist/services/actionflow/formula_service.js +107 -31
  71. package/dist/services/actionflow/formula_service.js.map +1 -1
  72. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  73. package/dist/services/actionflow/preflight_service.js +4 -1
  74. package/dist/services/actionflow/preflight_service.js.map +1 -1
  75. package/dist/services/form-layout-describe.d.ts.map +1 -1
  76. package/dist/services/form-layout-describe.js +3 -2
  77. package/dist/services/form-layout-describe.js.map +1 -1
  78. package/dist/services/form-layout-document.d.ts.map +1 -1
  79. package/dist/services/form-layout-document.js +2 -1
  80. package/dist/services/form-layout-document.js.map +1 -1
  81. package/dist/services/matrix-maintainer.d.ts +27 -0
  82. package/dist/services/matrix-maintainer.d.ts.map +1 -0
  83. package/dist/services/matrix-maintainer.js +142 -0
  84. package/dist/services/matrix-maintainer.js.map +1 -0
  85. package/dist/services/report/blueprint.d.ts +109 -0
  86. package/dist/services/report/blueprint.d.ts.map +1 -0
  87. package/dist/services/report/blueprint.js +322 -0
  88. package/dist/services/report/blueprint.js.map +1 -0
  89. package/dist/services/report/build.d.ts.map +1 -1
  90. package/dist/services/report/build.js +8 -3
  91. package/dist/services/report/build.js.map +1 -1
  92. package/dist/services/report/card.d.ts +65 -0
  93. package/dist/services/report/card.d.ts.map +1 -0
  94. package/dist/services/report/card.js +151 -0
  95. package/dist/services/report/card.js.map +1 -0
  96. package/dist/services/report/copy-health.d.ts +31 -0
  97. package/dist/services/report/copy-health.d.ts.map +1 -0
  98. package/dist/services/report/copy-health.js +87 -0
  99. package/dist/services/report/copy-health.js.map +1 -0
  100. package/dist/services/report/dataset-heal.d.ts +64 -0
  101. package/dist/services/report/dataset-heal.d.ts.map +1 -0
  102. package/dist/services/report/dataset-heal.js +89 -0
  103. package/dist/services/report/dataset-heal.js.map +1 -0
  104. package/dist/services/report/dataset-ids.d.ts +70 -0
  105. package/dist/services/report/dataset-ids.d.ts.map +1 -0
  106. package/dist/services/report/dataset-ids.js +149 -0
  107. package/dist/services/report/dataset-ids.js.map +1 -0
  108. package/dist/services/report/dataset.d.ts.map +1 -1
  109. package/dist/services/report/dataset.js +3 -1
  110. package/dist/services/report/dataset.js.map +1 -1
  111. package/dist/services/report/drill.d.ts +74 -0
  112. package/dist/services/report/drill.d.ts.map +1 -0
  113. package/dist/services/report/drill.js +259 -0
  114. package/dist/services/report/drill.js.map +1 -0
  115. package/dist/services/report/empty-dataset.d.ts +51 -0
  116. package/dist/services/report/empty-dataset.d.ts.map +1 -0
  117. package/dist/services/report/empty-dataset.js +213 -0
  118. package/dist/services/report/empty-dataset.js.map +1 -0
  119. package/dist/services/report/field-binding.d.ts +75 -0
  120. package/dist/services/report/field-binding.d.ts.map +1 -0
  121. package/dist/services/report/field-binding.js +160 -0
  122. package/dist/services/report/field-binding.js.map +1 -0
  123. package/dist/services/report/forms.d.ts +32 -0
  124. package/dist/services/report/forms.d.ts.map +1 -1
  125. package/dist/services/report/forms.js +90 -0
  126. package/dist/services/report/forms.js.map +1 -1
  127. package/dist/services/report/formula-parent.d.ts +25 -0
  128. package/dist/services/report/formula-parent.d.ts.map +1 -0
  129. package/dist/services/report/formula-parent.js +116 -0
  130. package/dist/services/report/formula-parent.js.map +1 -0
  131. package/dist/services/report/locate.d.ts +40 -0
  132. package/dist/services/report/locate.d.ts.map +1 -0
  133. package/dist/services/report/locate.js +122 -0
  134. package/dist/services/report/locate.js.map +1 -0
  135. package/dist/services/report/reports.d.ts +4 -0
  136. package/dist/services/report/reports.d.ts.map +1 -1
  137. package/dist/services/report/reports.js +4 -2
  138. package/dist/services/report/reports.js.map +1 -1
  139. package/dist/services/report/scene.d.ts +22 -0
  140. package/dist/services/report/scene.d.ts.map +1 -0
  141. package/dist/services/report/scene.js +145 -0
  142. package/dist/services/report/scene.js.map +1 -0
  143. package/dist/services/report/types.d.ts +28 -0
  144. package/dist/services/report/types.d.ts.map +1 -1
  145. package/dist/services/report/verify.d.ts +24 -0
  146. package/dist/services/report/verify.d.ts.map +1 -1
  147. package/dist/services/report/verify.js +115 -2
  148. package/dist/services/report/verify.js.map +1 -1
  149. package/dist/services/report/workbook.d.ts +12 -1
  150. package/dist/services/report/workbook.d.ts.map +1 -1
  151. package/dist/services/report/workbook.js +107 -8
  152. package/dist/services/report/workbook.js.map +1 -1
  153. package/dist/services/role-function-permission.d.ts +12 -0
  154. package/dist/services/role-function-permission.d.ts.map +1 -0
  155. package/dist/services/role-function-permission.js +46 -0
  156. package/dist/services/role-function-permission.js.map +1 -0
  157. package/dist/services/special-layout.d.ts +113 -0
  158. package/dist/services/special-layout.d.ts.map +1 -0
  159. package/dist/services/special-layout.js +178 -0
  160. package/dist/services/special-layout.js.map +1 -0
  161. package/dist/services/workflow-after-submit-comment.d.ts +20 -0
  162. package/dist/services/workflow-after-submit-comment.d.ts.map +1 -0
  163. package/dist/services/workflow-after-submit-comment.js +81 -0
  164. package/dist/services/workflow-after-submit-comment.js.map +1 -0
  165. package/dist/services/workflow-base-settings.d.ts +1 -10
  166. package/dist/services/workflow-base-settings.d.ts.map +1 -1
  167. package/dist/services/workflow-field-permission-route.d.ts +15 -41
  168. package/dist/services/workflow-field-permission-route.d.ts.map +1 -1
  169. package/dist/services/workflow-field-permission-route.js +23 -8
  170. package/dist/services/workflow-field-permission-route.js.map +1 -1
  171. package/dist/services/workflow-layout-components.d.ts +52 -0
  172. package/dist/services/workflow-layout-components.d.ts.map +1 -0
  173. package/dist/services/workflow-layout-components.js +66 -0
  174. package/dist/services/workflow-layout-components.js.map +1 -0
  175. package/dist/services/workflow-layout-draft.d.ts +49 -0
  176. package/dist/services/workflow-layout-draft.d.ts.map +1 -0
  177. package/dist/services/workflow-layout-draft.js +98 -0
  178. package/dist/services/workflow-layout-draft.js.map +1 -0
  179. package/dist/services/workflow-node-batch-spec.d.ts +122 -0
  180. package/dist/services/workflow-node-batch-spec.d.ts.map +1 -0
  181. package/dist/services/workflow-node-batch-spec.js +496 -0
  182. package/dist/services/workflow-node-batch-spec.js.map +1 -0
  183. package/dist/services/workflow-node-batch.d.ts +73 -0
  184. package/dist/services/workflow-node-batch.d.ts.map +1 -0
  185. package/dist/services/workflow-node-batch.js +328 -0
  186. package/dist/services/workflow-node-batch.js.map +1 -0
  187. package/dist/services/workflow-node-opinion-description.d.ts +12 -0
  188. package/dist/services/workflow-node-opinion-description.d.ts.map +1 -0
  189. package/dist/services/workflow-node-opinion-description.js +52 -0
  190. package/dist/services/workflow-node-opinion-description.js.map +1 -0
  191. package/dist/services/workflow-node-opinion-layout.d.ts +22 -0
  192. package/dist/services/workflow-node-opinion-layout.d.ts.map +1 -0
  193. package/dist/services/workflow-node-opinion-layout.js +113 -0
  194. package/dist/services/workflow-node-opinion-layout.js.map +1 -0
  195. package/dist/services/workflow-node-opinion-range.d.ts +21 -0
  196. package/dist/services/workflow-node-opinion-range.d.ts.map +1 -0
  197. package/dist/services/workflow-node-opinion-range.js +74 -0
  198. package/dist/services/workflow-node-opinion-range.js.map +1 -0
  199. package/dist/services/workflow-node-opinion.d.ts +43 -0
  200. package/dist/services/workflow-node-opinion.d.ts.map +1 -0
  201. package/dist/services/workflow-node-opinion.js +198 -0
  202. package/dist/services/workflow-node-opinion.js.map +1 -0
  203. package/dist/services/workflow-opinion-settings.d.ts +14 -0
  204. package/dist/services/workflow-opinion-settings.d.ts.map +1 -1
  205. package/dist/services/workflow-opinion-settings.js +18 -2
  206. package/dist/services/workflow-opinion-settings.js.map +1 -1
  207. package/ecodecmd/src/build.js +36 -12
  208. package/package.json +1 -1
  209. package/skill-docs/SKILL.md +164 -162
  210. package/skill-docs/_catalog.md +13 -3
  211. package/skill-docs/actionflows/references/components/message/SendMessage.md +32 -30
  212. package/skill-docs/references/coding/guide-page-code.md +95 -0
  213. package/skill-docs/references/common/guide-plan-template.md +4 -1
  214. package/skill-docs/references/common/map.md +28 -4
  215. package/skill-docs/references/common/ref-cli-commands.md +14 -4
  216. package/skill-docs/references/components/ref-component-common.md +98 -0
  217. package/skill-docs/references/form/guide-browser-definition.md +2 -219
  218. package/skill-docs/references/form/guide-browser-scope.md +285 -0
  219. package/skill-docs/references/form/guide-create-form.md +1 -1
  220. package/skill-docs/references/hrm/guide-matrix.md +276 -245
  221. package/skill-docs/references/hrm/guide-role.md +77 -0
  222. package/skill-docs/references/report/add-dataset-registration-guide.md +44 -22
  223. package/skill-docs/references/report/advanced-crosstab-tree-guide.md +82 -0
  224. package/skill-docs/references/report/ai-report-workflow.md +100 -100
  225. package/skill-docs/references/report/api-auth-headers.md +129 -0
  226. package/skill-docs/references/report/api-report-build-fast-path.md +274 -275
  227. package/skill-docs/references/report/app-datasource-lookup-guide.md +230 -230
  228. package/skill-docs/references/report/branch-scene-guide.md +293 -0
  229. package/skill-docs/references/report/build-resilience-guide.md +99 -0
  230. package/skill-docs/references/report/card-report-guide.md +110 -0
  231. package/skill-docs/references/report/cell-config-echo-guide.md +44 -9
  232. package/skill-docs/references/report/cell-transform-guide.md +9 -9
  233. package/skill-docs/references/report/column-split-report-guide.md +96 -0
  234. package/skill-docs/references/report/condition-format-guide.md +49 -24
  235. package/skill-docs/references/report/cross-dataset-filter-guide.md +180 -69
  236. package/skill-docs/references/report/crosstab-raw-workbook-guide.md +265 -0
  237. package/skill-docs/references/report/dataset-query-filter-guide.md +231 -235
  238. package/skill-docs/references/report/dataset-sidebar-ops-guide.md +75 -34
  239. package/skill-docs/references/report/dataset-table-field-contract-guide.md +196 -46
  240. package/skill-docs/references/report/datasource-metadata-guide.md +128 -119
  241. package/skill-docs/references/report/datasource-selection-and-parent-filter-guide.md +183 -148
  242. package/skill-docs/references/report/date-range-query-reference.md +97 -102
  243. package/skill-docs/references/report/default-header-style-guide.md +8 -8
  244. package/skill-docs/references/report/designer-blank-prevention-guide.md +8 -8
  245. package/skill-docs/references/report/dossier-report-guide.md +69 -0
  246. package/skill-docs/references/report/drilldown-report-guide.md +75 -0
  247. package/skill-docs/references/report/event-hreflink-guide.md +55 -47
  248. package/skill-docs/references/report/expansion-block-parent-config-guide.md +208 -0
  249. package/skill-docs/references/report/failure-cleanup-and-nonblocking-guide.md +183 -0
  250. package/skill-docs/references/report/field-bind-exact-match-guide.md +208 -208
  251. package/skill-docs/references/report/financial-stats-report-guide.md +89 -0
  252. package/skill-docs/references/report/formula-cell-api-guide.md +325 -258
  253. package/skill-docs/references/report/golden-case-summary-sheet.md +200 -0
  254. package/skill-docs/references/report/guide-report-build.md +6 -1
  255. package/skill-docs/references/report/hidden-row-and-header-merge-guide.md +10 -10
  256. package/skill-docs/references/report/layout-showlocation-freeze-guide.md +39 -10
  257. package/skill-docs/references/report/multi-report-crosstab-casebook.md +263 -0
  258. package/skill-docs/references/report/paged-group-report-guide.md +68 -0
  259. package/skill-docs/references/report/preaggregate-auto-disable-guide.md +24 -13
  260. package/skill-docs/references/report/query-condition-api-guide.md +174 -125
  261. package/skill-docs/references/report/ref-report-commands.md +41 -3
  262. package/skill-docs/references/report/report-baseinfo-defaults-guide.md +117 -117
  263. package/skill-docs/references/report/report-building-guide.md +52 -52
  264. package/skill-docs/references/report/report-case-prompts.md +104 -0
  265. package/skill-docs/references/report/report-config-schema.md +281 -281
  266. package/skill-docs/references/report/report-create-modes-guide.md +73 -35
  267. package/skill-docs/references/report/report-data-model.md +131 -131
  268. package/skill-docs/references/report/report-delivery-contract.md +23 -3
  269. package/skill-docs/references/report/report-designer-feature-map.md +30 -35
  270. package/skill-docs/references/report/report-help-guide.md +304 -0
  271. package/skill-docs/references/report/report-internal-error-guide.md +71 -0
  272. package/skill-docs/references/report/report-knowledge-base.md +27 -27
  273. package/skill-docs/references/report/report-lifecycle-api-guide.md +126 -94
  274. package/skill-docs/references/report/report-list-page-ops-guide.md +54 -8
  275. package/skill-docs/references/report/report-permission-guide.md +99 -102
  276. package/skill-docs/references/report/report-requirement-analysis-template.md +93 -29
  277. package/skill-docs/references/report/report-self-check-guide.md +164 -164
  278. package/skill-docs/references/report/report-verification-discipline-guide.md +203 -0
  279. package/skill-docs/references/report/safe-partial-save-guide.md +151 -151
  280. package/skill-docs/references/report/shard-freeze-report-guide.md +97 -0
  281. package/skill-docs/references/report/snowflake-id-precision-guide.md +84 -84
  282. package/skill-docs/references/report/spec-build-schema.md +71 -71
  283. package/skill-docs/references/report/targeted-fix-guide.md +155 -97
  284. package/skill-docs/references/report/user-request-scope-only-guide.md +23 -4
  285. package/skill-docs/references/workflow/guide-after-submit-comment.md +58 -0
  286. package/skill-docs/references/workflow/guide-layout-components.md +26 -0
  287. package/skill-docs/references/workflow/guide-node-opinion.md +58 -0
  288. package/skill-docs/references/workflow/guide-workflow.md +49 -0
  289. package/skill-docs/references/form/guide-ebuilder-scope.md +0 -82
@@ -0,0 +1,328 @@
1
+ import { listWorkflowNodes } from './workflow-assign-flow.js';
2
+ import { loadNodeFieldPermission, resolveFieldPermissionRoute, saveNodeFieldPermission, } from './workflow-field-permission-route.js';
3
+ import { readRejectForm, saveRejectSet } from '../commands/workflow-node-reject.js';
4
+ import { OpinionSettings, settings } from './workflow-opinion-settings.js';
5
+ import { applyFieldRule, diffFieldConfig, diffSign, expandSignRule, planReject, readRejectCurrent, resolveBatchTargets, REJECT_CURRENT_KEY, } from './workflow-node-batch-spec.js';
6
+ const SECTION_KEY = {
7
+ 'field-permission': 'fieldPermission',
8
+ reject: 'reject',
9
+ sign: 'sign',
10
+ };
11
+ const SECTION_LABEL = {
12
+ 'field-permission': 'field-permission',
13
+ reject: 'reject',
14
+ sign: 'sign',
15
+ };
16
+ function message(e) {
17
+ return e instanceof Error ? e.message : String(e);
18
+ }
19
+ function truthy(v) {
20
+ return v === true || v === 1 || v === '1';
21
+ }
22
+ function same(a, b) {
23
+ return JSON.stringify(a ?? null) === JSON.stringify(b ?? null);
24
+ }
25
+ function emptySection() {
26
+ return { status: 'unchanged', changes: [], warnings: [], readback: { status: 'skipped', mismatches: [] } };
27
+ }
28
+ /**
29
+ * 定位字段配置:ID 优先;名称必须唯一。
30
+ * 主表与明细表可能有同名字段(例如两处「备注」),名称命中多条时不能猜。
31
+ */
32
+ function findFieldConfig(configs, ref) {
33
+ const byId = configs.findIndex((c) => String(c.id) === ref);
34
+ if (byId >= 0)
35
+ return byId;
36
+ const byName = configs
37
+ .map((c, index) => ({ c, index }))
38
+ .filter(({ c }) => c.name === ref);
39
+ if (byName.length === 1)
40
+ return byName[0].index;
41
+ if (byName.length > 1) {
42
+ throw new Error(`字段名「${ref}」在节点表单中有多个:${byName.map(({ c }) => `${c.name}(${c.id})`).join(', ')};请改用字段 ID`);
43
+ }
44
+ return -1;
45
+ }
46
+ export async function runWorkflowNodeBatch(client, baseUrl, workflowId, spec, opts) {
47
+ const nodes = await listWorkflowNodes(client, baseUrl, workflowId);
48
+ const targets = resolveBatchTargets(spec.nodes, nodes);
49
+ const needsFieldPermission = spec.nodes.some((e) => !!e['field-permission']);
50
+ const route = needsFieldPermission
51
+ ? await resolveFieldPermissionRoute(client, baseUrl, workflowId)
52
+ : undefined;
53
+ const opinion = new OpinionSettings(client, baseUrl);
54
+ const nodeReports = [];
55
+ const pending = [];
56
+ const problems = [];
57
+ const allWarnings = [];
58
+ for (const target of targets) {
59
+ const { node, entry } = target;
60
+ const nodeReport = { nodeId: node.id, nodeName: node.name, sections: {} };
61
+ nodeReports.push(nodeReport);
62
+ const where = `${node.name}(${node.id})`;
63
+ // ── 字段权限 ──
64
+ if (entry['field-permission'] && route) {
65
+ const section = emptySection();
66
+ nodeReport.sections.fieldPermission = section;
67
+ try {
68
+ const snapshot = await loadNodeFieldPermission(client, baseUrl, workflowId, node.id, route);
69
+ const configs = structuredClone(snapshot.configs);
70
+ const changes = [];
71
+ const expectations = [];
72
+ for (const [ref, rule] of Object.entries(entry['field-permission'])) {
73
+ const idx = findFieldConfig(configs, ref);
74
+ if (idx < 0) {
75
+ throw new Error(`未找到字段「${ref}」;可用:${configs.map((c) => `${c.name || ''}(${c.id})`).join(', ')}`);
76
+ }
77
+ const current = configs[idx];
78
+ const applied = applyFieldRule(current, rule);
79
+ section.warnings.push(...applied.warnings);
80
+ const diff = diffFieldConfig(current, applied.config);
81
+ // 同名字段即使本次用 ID 指定,报告里也要带上 ID,否则看不出改的是哪一个。
82
+ if (configs.filter((c) => c.name === current.name).length > 1) {
83
+ diff.field = `${diff.field}(${diff.fieldId})`;
84
+ }
85
+ if (diff.keys.length) {
86
+ changes.push(diff);
87
+ expectations.push({
88
+ fieldId: String(applied.config.id ?? current.id),
89
+ fieldName: String(applied.config.name || current.name || ref),
90
+ keys: diff.keys.map((k) => k.key),
91
+ values: Object.fromEntries(diff.keys.map((k) => [k.key, applied.config[k.key]])),
92
+ });
93
+ }
94
+ configs[idx] = applied.config;
95
+ }
96
+ let enableModify = false;
97
+ if (entry['enable-modify-form'] === true) {
98
+ if (snapshot.allowModify === undefined || snapshot.allowModify === null) {
99
+ // 读接口不回这个字段;请求了就写一次,写入本身幂等。
100
+ enableModify = true;
101
+ }
102
+ else if (!truthy(snapshot.allowModify)) {
103
+ enableModify = true;
104
+ changes.push({
105
+ field: 'enable-modify-form',
106
+ fieldId: '',
107
+ from: String(snapshot.allowModify),
108
+ to: '1',
109
+ keys: [{ key: 'allowModify', from: snapshot.allowModify, to: 1 }],
110
+ });
111
+ }
112
+ }
113
+ section.changes = changes;
114
+ section.status = changes.length ? (opts.apply ? 'applied' : 'would-change') : 'unchanged';
115
+ if (changes.length) {
116
+ const state = { snapshot, configs, expectations, enableModify };
117
+ pending.push({
118
+ node,
119
+ section: 'field-permission',
120
+ report: section,
121
+ apply: async () => {
122
+ if (state.enableModify) {
123
+ const res = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeFormRelate/addAndUpdateNodeFormRelate`, {
124
+ id: state.snapshot.nodeFormRelateId || '-1',
125
+ workflowId,
126
+ nodeId: node.id,
127
+ permissionId: state.snapshot.permissionId,
128
+ relateFormId: state.snapshot.relateFormId,
129
+ allowModify: 1,
130
+ enableNodePermission: 1,
131
+ mLayoutMode: '0',
132
+ });
133
+ if (res?.code !== 200 || !res?.status) {
134
+ throw new Error(`打勾「允许修改流程表单内容」失败: ${res?.msg || '未知错误'}`);
135
+ }
136
+ }
137
+ if (state.expectations.length || !state.enableModify) {
138
+ const saved = await saveNodeFieldPermission(client, baseUrl, state.snapshot, state.configs);
139
+ if (saved?.code !== 200 || !saved?.status) {
140
+ throw new Error(`保存字段权限失败: ${saved?.msg || '未知错误'}`);
141
+ }
142
+ }
143
+ },
144
+ readback: async () => {
145
+ const fresh = await loadNodeFieldPermission(client, baseUrl, workflowId, node.id, route);
146
+ const mismatches = [];
147
+ for (const exp of state.expectations) {
148
+ const hit = fresh.configs.find((c) => String(c.id) === exp.fieldId || c.name === exp.fieldName);
149
+ if (!hit) {
150
+ mismatches.push({
151
+ target: 'field', name: exp.fieldName, fieldId: exp.fieldId,
152
+ key: '*', expected: exp.values, actual: '字段不存在',
153
+ });
154
+ continue;
155
+ }
156
+ for (const key of exp.keys) {
157
+ if (!same(hit[key], exp.values[key])) {
158
+ mismatches.push({
159
+ target: 'field', name: exp.fieldName, fieldId: exp.fieldId,
160
+ key, expected: exp.values[key], actual: hit[key],
161
+ });
162
+ }
163
+ }
164
+ }
165
+ if (state.enableModify
166
+ && fresh.allowModify !== undefined && fresh.allowModify !== null
167
+ && !truthy(fresh.allowModify)) {
168
+ mismatches.push({
169
+ target: 'item', name: 'enable-modify-form', key: 'allowModify',
170
+ expected: 1, actual: fresh.allowModify,
171
+ });
172
+ }
173
+ return mismatches;
174
+ },
175
+ });
176
+ }
177
+ }
178
+ catch (e) {
179
+ section.status = 'error';
180
+ section.error = message(e);
181
+ problems.push(`${where} ${SECTION_LABEL['field-permission']}: ${section.error}`);
182
+ }
183
+ }
184
+ // ── 退回 ──
185
+ if (entry.reject) {
186
+ const section = emptySection();
187
+ nodeReport.sections.reject = section;
188
+ try {
189
+ const raw = await readRejectForm(client, baseUrl, workflowId, node.id);
190
+ const plan = planReject(raw, entry.reject, nodes);
191
+ section.changes = plan.changes;
192
+ section.warnings.push(...plan.warnings);
193
+ section.status = plan.changes.length ? (opts.apply ? 'applied' : 'would-change') : 'unchanged';
194
+ if (plan.changes.length) {
195
+ pending.push({
196
+ node,
197
+ section: 'reject',
198
+ report: section,
199
+ apply: async () => { await saveRejectSet(client, baseUrl, raw, plan.params, workflowId, node.id); },
200
+ readback: async () => {
201
+ const fresh = readRejectCurrent(await readRejectForm(client, baseUrl, workflowId, node.id));
202
+ const mismatches = [];
203
+ for (const change of plan.changes) {
204
+ const key = REJECT_CURRENT_KEY[change.key];
205
+ if (!key)
206
+ continue;
207
+ if (!same(fresh[key], plan.desired[key])) {
208
+ mismatches.push({
209
+ target: 'item', name: change.key, key: String(key),
210
+ expected: plan.desired[key], actual: fresh[key],
211
+ });
212
+ }
213
+ }
214
+ return mismatches;
215
+ },
216
+ });
217
+ }
218
+ }
219
+ catch (e) {
220
+ section.status = 'error';
221
+ section.error = message(e);
222
+ problems.push(`${where} ${SECTION_LABEL.reject}: ${section.error}`);
223
+ }
224
+ }
225
+ // ── 签字意见 ──
226
+ if (entry.sign) {
227
+ const section = emptySection();
228
+ nodeReport.sections.sign = section;
229
+ try {
230
+ const patch = expandSignRule(entry.sign);
231
+ const keys = Object.keys(patch);
232
+ if (!keys.length)
233
+ throw new Error('未指定任何签字意见项');
234
+ const form = await opinion.sign(workflowId, node.id);
235
+ const { before, next } = await opinion.prepareSign(form, patch);
236
+ const changes = diffSign(before, next, keys);
237
+ section.changes = changes;
238
+ section.status = changes.length ? (opts.apply ? 'applied' : 'would-change') : 'unchanged';
239
+ if (changes.length) {
240
+ pending.push({
241
+ node,
242
+ section: 'sign',
243
+ report: section,
244
+ apply: async () => { await opinion.saveSignFrom(workflowId, node.id, form, patch); },
245
+ readback: async () => {
246
+ const fresh = settings(await opinion.sign(workflowId, node.id));
247
+ return diffSign(next, fresh, keys).map((d) => ({
248
+ target: 'item', name: d.key, key: d.key,
249
+ expected: d.from, actual: d.to,
250
+ }));
251
+ },
252
+ });
253
+ }
254
+ }
255
+ catch (e) {
256
+ section.status = 'error';
257
+ section.error = message(e);
258
+ problems.push(`${where} ${SECTION_LABEL.sign}: ${section.error}`);
259
+ }
260
+ }
261
+ }
262
+ if (opts.apply) {
263
+ for (const p of pending) {
264
+ if (p.report.status !== 'applied')
265
+ continue;
266
+ try {
267
+ await p.apply();
268
+ }
269
+ catch (e) {
270
+ p.report.status = 'error';
271
+ p.report.error = message(e);
272
+ problems.push(`${p.node.name}(${p.node.id}) ${SECTION_LABEL[p.section]}: ${p.report.error}`);
273
+ }
274
+ }
275
+ for (const p of pending) {
276
+ if (p.report.status !== 'applied')
277
+ continue;
278
+ try {
279
+ const mismatches = await p.readback();
280
+ p.report.readback = mismatches.length
281
+ ? { status: 'mismatch', mismatches }
282
+ : { status: 'ok', mismatches: [] };
283
+ if (mismatches.length) {
284
+ p.report.status = 'mismatch';
285
+ problems.push(`${p.node.name}(${p.node.id}) ${SECTION_LABEL[p.section]}: 回读不一致 ` +
286
+ mismatches.map((m) => `${m.name}.${m.key}`).join(', '));
287
+ }
288
+ }
289
+ catch (e) {
290
+ p.report.readback = { status: 'error', mismatches: [], error: message(e) };
291
+ p.report.status = 'error';
292
+ p.report.error = `回读失败: ${message(e)}`;
293
+ problems.push(`${p.node.name}(${p.node.id}) ${SECTION_LABEL[p.section]}: ${p.report.error}`);
294
+ }
295
+ }
296
+ }
297
+ for (const nodeReport of nodeReports) {
298
+ for (const section of Object.values(nodeReport.sections)) {
299
+ if (section?.warnings.length)
300
+ allWarnings.push(...section.warnings.map((w) => `${nodeReport.nodeName}(${nodeReport.nodeId}) ${w}`));
301
+ }
302
+ }
303
+ const sections = nodeReports.flatMap((n) => Object.values(n.sections).filter(Boolean));
304
+ const summary = {
305
+ nodes: nodeReports.length,
306
+ sections: sections.length,
307
+ changed: sections.filter((s) => s.changes.length > 0).length,
308
+ unchanged: sections.filter((s) => s.status === 'unchanged').length,
309
+ applied: sections.filter((s) => s.status === 'applied').length,
310
+ failed: sections.filter((s) => s.status === 'error').length,
311
+ mismatched: sections.filter((s) => s.status === 'mismatch').length,
312
+ skippedWrites: sections.filter((s) => s.status === 'unchanged').length,
313
+ };
314
+ const success = problems.length === 0
315
+ && sections.every((s) => s.status !== 'error' && s.status !== 'mismatch');
316
+ return {
317
+ success,
318
+ workflowId,
319
+ dryRun: !opts.apply,
320
+ only: opts.only,
321
+ nodes: nodeReports,
322
+ summary,
323
+ warnings: allWarnings,
324
+ problems,
325
+ };
326
+ }
327
+ export { SECTION_KEY };
328
+ //# sourceMappingURL=workflow-node-batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-node-batch.js","sourceRoot":"","sources":["../../src/services/workflow-node-batch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /** Deterministic description syntax; never fabricate a missing node scope. */
2
+ export declare function parseNodeOpinion(description: string): {
3
+ kind: string;
4
+ type: string;
5
+ createPhysicalField: boolean;
6
+ patch: Record<string, any>;
7
+ rangeRules: Record<string, any>[];
8
+ requiresConfirmation: boolean;
9
+ unrecognized: string[];
10
+ mode: string;
11
+ } | undefined;
12
+ //# sourceMappingURL=workflow-node-opinion-description.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-node-opinion-description.d.ts","sourceRoot":"","sources":["../../src/services/workflow-node-opinion-description.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,WAAW,EAAC,MAAM;;;;;;;;;cA2BlD"}
@@ -0,0 +1,52 @@
1
+ /** Deterministic description syntax; never fabricate a missing node scope. */
2
+ export function parseNodeOpinion(description) {
3
+ if (!/(?:节点意见|流转(?:\/节点)?意见|意见放表单|意见展示控件)/.test(description))
4
+ return undefined;
5
+ const patch = {}, unknown = [], rangeRules = [];
6
+ const pieces = description.split(/[;;\n]/).map(x => x.trim()).filter(Boolean);
7
+ let names;
8
+ for (const piece of pieces) {
9
+ const scope = piece.match(/^(?:节点意见|流转(?:\/节点)?意见|意见放表单|意见展示控件)(?:控件)?\s*[::]\s*(.+)$/) || piece.match(/^节点范围\s*[::]\s*(.+)$/);
10
+ if (scope) {
11
+ if (/^(全部节点|所有节点|全部意见)$/.test(scope[1]))
12
+ patch.nodescopeType = '0';
13
+ else
14
+ names = scope[1].split(/[,,、]/).map(x => x.trim()).filter(Boolean);
15
+ }
16
+ else if (/^(节点意见|流转(?:\/节点)?意见|意见放表单|意见展示控件)(控件)?$/.test(piece))
17
+ continue;
18
+ else if (/^(当前流程|主流程|子流程)$/.test(piece))
19
+ patch.workflowOption = piece;
20
+ else if (/^(默认设置|读取节点默认设置)$/.test(piece))
21
+ patch.isDefaultConfig = '1';
22
+ else if (/^(自定义设置|用户自定义设置)$/.test(piece))
23
+ patch.isDefaultConfig = '0';
24
+ else if (/^(不显示空意见|不显示空的意见)$/.test(piece))
25
+ patch.notShowEmpty = true;
26
+ else if (piece === '显示空意见')
27
+ patch.notShowEmpty = false;
28
+ else if (/^(全部意见|最后一次意见|最后一条意见)$/.test(piece))
29
+ patch.showType = piece === '全部意见' ? '1' : '0';
30
+ else if (piece === '意见按批次分组')
31
+ patch.isGroup = true;
32
+ else if (/^([1-4])栏$/.test(piece))
33
+ patch.showColumn = piece[0];
34
+ else if (/^操作时间[::]?(正序|倒序)$/.test(piece))
35
+ patch.showorder = [{ id: '4', order: piece.endsWith('正序') ? 'asc' : 'desc' }];
36
+ else if (/^意见显示范围[::](本部门|本分部|本人)$/.test(piece))
37
+ rangeRules.push({ objtype: piece.replace(/^意见显示范围[::]/, '') });
38
+ else if (/^显示内容[::]/.test(piece)) {
39
+ patch.viewContents = piece.replace(/^显示内容[::]/, '').split(/[,,、]/).map(x => x.trim());
40
+ patch.selectFormat = '0';
41
+ }
42
+ else
43
+ unknown.push(piece);
44
+ }
45
+ if (names) {
46
+ patch.nodeScopeBrowser = names;
47
+ patch.nodescopeType = '1';
48
+ }
49
+ return { kind: 'node-opinion', type: 'NodeRequestLog', createPhysicalField: false, patch, rangeRules, requiresConfirmation: !names && patch.nodescopeType === undefined, unrecognized: unknown,
50
+ mode: names?.length === 1 ? 'single' : 'multi' };
51
+ }
52
+ //# sourceMappingURL=workflow-node-opinion-description.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-node-opinion-description.js","sourceRoot":"","sources":["../../src/services/workflow-node-opinion-description.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { NodeOpinion } from './workflow-node-opinion.js';
2
+ import type { Config } from './workflow-function-management.js';
3
+ export declare function saveNodeOpinion(svc: NodeOpinion, w: string, l: string, input: {
4
+ componentId?: string;
5
+ title?: string;
6
+ description?: string;
7
+ row?: number;
8
+ col?: number;
9
+ terminal?: string;
10
+ patch?: Config;
11
+ }): Promise<{
12
+ created: boolean;
13
+ verified: boolean;
14
+ physicalFieldsUnchanged: boolean;
15
+ rangeRules: Config[];
16
+ componentId: any;
17
+ componentKey: any;
18
+ fieldId: any;
19
+ position: any;
20
+ business: any;
21
+ }>;
22
+ //# sourceMappingURL=workflow-node-opinion-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-node-opinion-layout.d.ts","sourceRoot":"","sources":["../../src/services/workflow-node-opinion-layout.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAuD,MAAM,4BAA4B,CAAC;AAO7G,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAE9D,wBAAsB,eAAe,CAAC,GAAG,EAAC,WAAW,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,EAAC,KAAK,EAAC;IAAC,WAAW,CAAC,EAAC,MAAM,CAAC;IAAA,KAAK,CAAC,EAAC,MAAM,CAAC;IAAA,WAAW,CAAC,EAAC,MAAM,CAAC;IAAA,GAAG,CAAC,EAAC,MAAM,CAAC;IAAA,GAAG,CAAC,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,EAAC,MAAM,CAAC;IAAA,KAAK,CAAC,EAAC,MAAM,CAAA;CAAC;;;;;;;;;;GA8E3L"}
@@ -0,0 +1,113 @@
1
+ import { isDeepStrictEqual } from 'node:util';
2
+ import { NODE_OPINION, opinionPatch, businessFields, formatFields } from './workflow-node-opinion.js';
3
+ import { parseNodeOpinion } from './workflow-node-opinion-description.js';
4
+ import { workflowLayoutContext, insertDraftExcel } from './workflow-layout-draft.js';
5
+ import { verifySettings } from './workflow-opinion-settings.js';
6
+ import { flattenComponents } from './form-layout-source/binding.js';
7
+ import { snapshotHash, fieldsHash, layoutSaveBody, layoutRoute, businessData } from './form-layout-io.js';
8
+ import { assert } from './form-layout-source/schema.js';
9
+ export async function saveNodeOpinion(svc, w, l, input) {
10
+ const context = await workflowLayoutContext(svc.client, svc.base, w, l), snapshot = context.snapshot;
11
+ assert(snapshot.formLayoutMultiple?.isDefault === false, '节点意见须在独立布局创建,不能隐式复制默认布局');
12
+ const original = structuredClone(snapshot.formLayout), hash = snapshotHash(snapshot);
13
+ const pages = snapshot.formLayout.pageLayouts.filter((p) => p.terminalType === (input.terminal || 'PC'));
14
+ assert(pages.length === 1, '终端页面不唯一');
15
+ const page = pages[0];
16
+ let comp;
17
+ if (input.componentId) {
18
+ comp = flattenComponents(page.comps || []).find(c => c.id === input.componentId);
19
+ assert(comp?.type === NODE_OPINION, '未找到指定节点意见控件');
20
+ }
21
+ else {
22
+ const hits = flattenComponents(page.comps || []).filter(c => c.type === NODE_OPINION && c.config?.title === input.title);
23
+ assert(hits.length <= 1, '同名节点意见控件不唯一');
24
+ comp = hits[0];
25
+ }
26
+ const created = !comp;
27
+ let patch = { ...input.patch };
28
+ let rangeRules = [];
29
+ if (input.description) {
30
+ const parsed = parseNodeOpinion(input.description);
31
+ assert(parsed, '描述未指定节点意见/流转意见/意见放表单');
32
+ assert(!parsed.requiresConfirmation || patch.nodeScopeBrowser || patch.nodescopeType === '0', '已识别节点意见控件,但缺少节点范围,请与用户确认;不会创建物理字段');
33
+ assert(!parsed.unrecognized.length, `描述包含未识别配置,请确认后通过--data明确设置:${parsed.unrecognized.join(';')}`);
34
+ patch = { ...parsed.patch, ...patch };
35
+ rangeRules = parsed.rangeRules;
36
+ }
37
+ if (created) {
38
+ assert(input.title?.trim(), '创建需要标题');
39
+ assert(patch.nodeScopeBrowser || ['0', '3'].includes(String(patch.nodescopeType)), '创建前须确认节点范围');
40
+ // Reuse grid occupancy and merge validation only; no persistence/physical field creation here.
41
+ insertDraftExcel(structuredClone(page), { widgetId: '1' }, input.title, input.row, input.col);
42
+ }
43
+ const opinionBefore = [], draftBefore = [];
44
+ for (const p of snapshot.formLayout.pageLayouts)
45
+ for (const c of flattenComponents(p.comps || [])) {
46
+ if (c.type === NODE_OPINION) {
47
+ const d = await svc.storedData(w, l, c.config);
48
+ assert(String(d.id) !== '0' && String(d.id) !== '-1' && d.id, '已有意见业务记录不存在,停止保存');
49
+ assert(!d.newComponentKey, '意见键被多个布局复用,需要先修复关联');
50
+ opinionBefore.push({ componentId: c.id, config: structuredClone(c.config), data: structuredClone(d) });
51
+ c.config = { ...c.config, ...d, targetId: d.componentKey, configSrc: 'wfRequest' };
52
+ }
53
+ else if (c.type === 'FlowPageDraftOpinion') {
54
+ const wid = String(c.config.widgetId || c.config.fieldId), form = await svc.widget(w, wid);
55
+ draftBefore.push({ widgetId: wid, form });
56
+ c.config = { ...c.config, ...form.data, isDesign: true };
57
+ }
58
+ }
59
+ const before = created ? await svc.data(w, l, '') : structuredClone(comp.config);
60
+ assert(!before.newComponentKey, '意见键存在跨布局重复');
61
+ const singleId = created ? undefined : String(comp.config.fieldId || '').match(/^nodeId_([1-9]\d*)$/)?.[1];
62
+ const next = await opinionPatch(svc, w, before, patch, await svc.schema(), singleId);
63
+ const single = created && next.workflowOption === '0' && next.patternOption === '0' && next.nodescopeType === '1' && next.nodeScopeBrowser?.length === 1;
64
+ if (created) {
65
+ const temp = insertDraftExcel(page, { widgetId: next.componentKey }, input.title, input.row, input.col);
66
+ const fieldId = single ? `nodeId_${next.nodeScopeBrowser[0].id}` : String(next.componentKey);
67
+ comp = temp;
68
+ comp.type = NODE_OPINION;
69
+ comp.config = { ...next, title: input.title, name: input.title, type: NODE_OPINION, fieldId, valueKey: fieldId,
70
+ ...(single ? { associatedId: fieldId, fieldKey: fieldId, compPackage: '@weapp/workflow' } : {}),
71
+ formId: context.target.formId, isHideTitle: true, display: true, layout: { hidden: false, wrapped: false }, excel: temp.config.excel,
72
+ targetId: next.componentKey, configSrc: 'wfRequest', wfSignLayoutLoadStatus: true };
73
+ page.config.workbook.Sheet1.cells.find((c) => c.style?.cellType?.comId === comp.id).style.cellType.type = NODE_OPINION;
74
+ }
75
+ else
76
+ comp.config = { ...comp.config, ...next, configSrc: 'wfRequest' };
77
+ const fresh = await workflowLayoutContext(svc.client, svc.base, w, l);
78
+ assert(snapshotHash(fresh.snapshot) === hash, '布局被并发修改,停止保存');
79
+ // Detect business-only changes as well, since their authoritative state is outside the layout JSON.
80
+ for (const old of opinionBefore)
81
+ verifySettings(old.data, await svc.storedData(w, l, old.config), businessFields);
82
+ for (const old of draftBefore)
83
+ assert(isDeepStrictEqual(old.form.data, (await svc.widget(w, old.widgetId)).data), '拟签业务配置被并发修改');
84
+ const body = layoutSaveBody(context.target, snapshot, false);
85
+ body.customParam = { workflowId: w };
86
+ businessData(await svc.client.post(svc.base + layoutRoute(context.target, 'saveFormAndLayout'), body), '保存节点意见布局', false);
87
+ const after = await workflowLayoutContext(svc.client, svc.base, w, l);
88
+ assert(fieldsHash(context.fields) === fieldsHash(after.fields), '物理表字段发生变化');
89
+ const back = flattenComponents(after.snapshot.formLayout.pageLayouts.find((p) => p.terminalType === page.terminalType)?.comps || []).find(c => c.id === comp.id);
90
+ assert(back?.type === NODE_OPINION && String(back.config.componentKey) === String(next.componentKey), '布局未绑定正确意见键');
91
+ assert(back.config.fieldId === comp.config.fieldId, '节点意见控件身份回读不一致');
92
+ const business = await svc.data(w, l, String(next.componentKey));
93
+ assert(/^[1-9]\d*$/.test(String(business.id)), '布局已保存但意见业务配置未入库');
94
+ verifySettings(next, business, businessFields.filter(k => next.isDefaultConfig === '0' || !formatFields.includes(k)));
95
+ for (const old of opinionBefore.filter(x => x.componentId !== comp.id)) {
96
+ const savedConfig = after.snapshot.formLayout.pageLayouts.flatMap((p) => flattenComponents(p.comps || [])).find((c) => c.id === old.componentId)?.config;
97
+ verifySettings(old.data, await svc.storedData(w, l, savedConfig), businessFields);
98
+ }
99
+ for (const old of draftBefore)
100
+ assert(isDeepStrictEqual(old.form.data, (await svc.widget(w, old.widgetId)).data), `既有拟签${old.widgetId}配置变化`);
101
+ for (const p of original.pageLayouts) {
102
+ const bp = after.snapshot.formLayout.pageLayouts.find((x) => x.pageId === p.pageId);
103
+ assert(bp, '原页面丢失');
104
+ for (const old of flattenComponents(p.comps || [])) {
105
+ const current = flattenComponents(bp.comps || []).find(c => c.id === old.id);
106
+ assert(current?.type === old.type, '原控件丢失或类型改变');
107
+ if (![NODE_OPINION, 'FlowPageDraftOpinion'].includes(old.type))
108
+ assert(isDeepStrictEqual(old.config, current.config), `未指定控件${old.id}配置变化`);
109
+ }
110
+ }
111
+ return { created, verified: true, physicalFieldsUnchanged: true, rangeRules, componentId: comp.id, componentKey: next.componentKey, fieldId: comp.config.fieldId, position: comp.config.excel, business };
112
+ }
113
+ //# sourceMappingURL=workflow-node-opinion-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-node-opinion-layout.js","sourceRoot":"","sources":["../../src/services/workflow-node-opinion-layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { NodeOpinion } from './workflow-node-opinion.js';
2
+ import { type Config } from './workflow-function-management.js';
3
+ export declare function opinionRange(svc: NodeOpinion, w: string, l: string, componentId: string, initialize?: boolean): Promise<{
4
+ componentId: string;
5
+ mainId: string;
6
+ rows: any;
7
+ }>;
8
+ export declare function saveOpinionRange(svc: NodeOpinion, w: string, l: string, c: string, patch: Config, ruleId?: string): Promise<{
9
+ verified: boolean;
10
+ mainId: string;
11
+ ruleId: string;
12
+ before: Config;
13
+ after: Config;
14
+ }>;
15
+ export declare function deleteOpinionRange(svc: NodeOpinion, w: string, l: string, c: string, ruleId: string): Promise<{
16
+ componentId: string;
17
+ mainId: string;
18
+ rows: any;
19
+ verified: boolean;
20
+ }>;
21
+ //# sourceMappingURL=workflow-node-opinion-range.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-node-opinion-range.d.ts","sourceRoot":"","sources":["../../src/services/workflow-node-opinion-range.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAqD,KAAK,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAIlH,wBAAsB,YAAY,CAAC,GAAG,EAAC,WAAW,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,EAAC,WAAW,EAAC,MAAM,EAAC,UAAU,UAAM;;;;GAYvG;AACD,wBAAsB,gBAAgB,CAAC,GAAG,EAAC,WAAW,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,MAAM,CAAC,EAAC,MAAM;;;;;;GA0B5G;AACD,wBAAsB,kBAAkB,CAAC,GAAG,EAAC,WAAW,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;;;;;GAOhG"}