weaver-e10-builder 1.1.9 → 1.2.2

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 (431) hide show
  1. package/README.md +1 -1
  2. package/dist/commands/actionflow.d.ts.map +1 -1
  3. package/dist/commands/actionflow.js +32 -0
  4. package/dist/commands/actionflow.js.map +1 -1
  5. package/dist/commands/app.d.ts.map +1 -1
  6. package/dist/commands/app.js +17 -5
  7. package/dist/commands/app.js.map +1 -1
  8. package/dist/commands/auth.d.ts.map +1 -1
  9. package/dist/commands/auth.js +9 -2
  10. package/dist/commands/auth.js.map +1 -1
  11. package/dist/commands/designer.d.ts.map +1 -1
  12. package/dist/commands/designer.js +22 -1
  13. package/dist/commands/designer.js.map +1 -1
  14. package/dist/commands/form-field-props.d.ts +3 -0
  15. package/dist/commands/form-field-props.d.ts.map +1 -0
  16. package/dist/commands/form-field-props.js +242 -0
  17. package/dist/commands/form-field-props.js.map +1 -0
  18. package/dist/commands/form-layout-init.d.ts +0 -7
  19. package/dist/commands/form-layout-init.d.ts.map +1 -1
  20. package/dist/commands/form-layout-init.js +23 -39
  21. package/dist/commands/form-layout-init.js.map +1 -1
  22. package/dist/commands/form-serial-mark.d.ts.map +1 -1
  23. package/dist/commands/form-serial-mark.js +134 -42
  24. package/dist/commands/form-serial-mark.js.map +1 -1
  25. package/dist/commands/form-virtual.d.ts +3 -0
  26. package/dist/commands/form-virtual.d.ts.map +1 -0
  27. package/dist/commands/form-virtual.js +197 -0
  28. package/dist/commands/form-virtual.js.map +1 -0
  29. package/dist/commands/form.d.ts +3 -0
  30. package/dist/commands/form.d.ts.map +1 -1
  31. package/dist/commands/form.js +263 -57
  32. package/dist/commands/form.js.map +1 -1
  33. package/dist/commands/interface.js +1 -1
  34. package/dist/commands/interface.js.map +1 -1
  35. package/dist/commands/report-admin.d.ts +5 -0
  36. package/dist/commands/report-admin.d.ts.map +1 -0
  37. package/dist/commands/report-admin.js +420 -0
  38. package/dist/commands/report-admin.js.map +1 -0
  39. package/dist/commands/report-query.d.ts +3 -0
  40. package/dist/commands/report-query.d.ts.map +1 -0
  41. package/dist/commands/report-query.js +314 -0
  42. package/dist/commands/report-query.js.map +1 -0
  43. package/dist/commands/report-validate.d.ts +3 -0
  44. package/dist/commands/report-validate.d.ts.map +1 -0
  45. package/dist/commands/report-validate.js +719 -0
  46. package/dist/commands/report-validate.js.map +1 -0
  47. package/dist/commands/report.d.ts +12 -0
  48. package/dist/commands/report.d.ts.map +1 -0
  49. package/dist/commands/report.js +666 -0
  50. package/dist/commands/report.js.map +1 -0
  51. package/dist/commands/wf-form.d.ts +34 -0
  52. package/dist/commands/wf-form.d.ts.map +1 -1
  53. package/dist/commands/wf-form.js +303 -127
  54. package/dist/commands/wf-form.js.map +1 -1
  55. package/dist/commands/workflow-advanced.d.ts.map +1 -1
  56. package/dist/commands/workflow-advanced.js +109 -90
  57. package/dist/commands/workflow-advanced.js.map +1 -1
  58. package/dist/commands/workflow-auth-resp.d.ts +8 -0
  59. package/dist/commands/workflow-auth-resp.d.ts.map +1 -0
  60. package/dist/commands/workflow-auth-resp.js +568 -0
  61. package/dist/commands/workflow-auth-resp.js.map +1 -0
  62. package/dist/commands/workflow-condition.d.ts.map +1 -1
  63. package/dist/commands/workflow-condition.js +3 -1
  64. package/dist/commands/workflow-condition.js.map +1 -1
  65. package/dist/commands/workflow-create-auth-resp.d.ts +4 -0
  66. package/dist/commands/workflow-create-auth-resp.d.ts.map +1 -0
  67. package/dist/commands/workflow-create-auth-resp.js +204 -0
  68. package/dist/commands/workflow-create-auth-resp.js.map +1 -0
  69. package/dist/commands/workflow-node-overtime.d.ts.map +1 -1
  70. package/dist/commands/workflow-node-overtime.js +125 -92
  71. package/dist/commands/workflow-node-overtime.js.map +1 -1
  72. package/dist/commands/workflow-node-reject.d.ts +52 -0
  73. package/dist/commands/workflow-node-reject.d.ts.map +1 -1
  74. package/dist/commands/workflow-node-reject.js +134 -63
  75. package/dist/commands/workflow-node-reject.js.map +1 -1
  76. package/dist/commands/workflow-node-sign.d.ts.map +1 -1
  77. package/dist/commands/workflow-node-sign.js +14 -7
  78. package/dist/commands/workflow-node-sign.js.map +1 -1
  79. package/dist/commands/workflow-node-validate.d.ts +6 -0
  80. package/dist/commands/workflow-node-validate.d.ts.map +1 -1
  81. package/dist/commands/workflow-node-validate.js +143 -21
  82. package/dist/commands/workflow-node-validate.js.map +1 -1
  83. package/dist/commands/workflow-node.d.ts.map +1 -1
  84. package/dist/commands/workflow-node.js +359 -116
  85. package/dist/commands/workflow-node.js.map +1 -1
  86. package/dist/commands/workflow-numbering.d.ts.map +1 -1
  87. package/dist/commands/workflow-numbering.js +73 -34
  88. package/dist/commands/workflow-numbering.js.map +1 -1
  89. package/dist/commands/workflow-operator-sign.d.ts +10 -0
  90. package/dist/commands/workflow-operator-sign.d.ts.map +1 -1
  91. package/dist/commands/workflow-operator-sign.js +40 -53
  92. package/dist/commands/workflow-operator-sign.js.map +1 -1
  93. package/dist/commands/workflow-plan-range.d.ts +10 -0
  94. package/dist/commands/workflow-plan-range.d.ts.map +1 -1
  95. package/dist/commands/workflow-plan-range.js +15 -54
  96. package/dist/commands/workflow-plan-range.js.map +1 -1
  97. package/dist/commands/workflow-segment.d.ts.map +1 -1
  98. package/dist/commands/workflow-segment.js +22 -14
  99. package/dist/commands/workflow-segment.js.map +1 -1
  100. package/dist/commands/workflow.d.ts.map +1 -1
  101. package/dist/commands/workflow.js +13 -69
  102. package/dist/commands/workflow.js.map +1 -1
  103. package/dist/index.js +15 -0
  104. package/dist/index.js.map +1 -1
  105. package/dist/services/actionflow/build_workflow_draft.d.ts +6 -0
  106. package/dist/services/actionflow/build_workflow_draft.d.ts.map +1 -1
  107. package/dist/services/actionflow/build_workflow_draft.js +63 -4
  108. package/dist/services/actionflow/build_workflow_draft.js.map +1 -1
  109. package/dist/services/actionflow/calendar_mapper.d.ts +2 -2
  110. package/dist/services/actionflow/calendar_mapper.d.ts.map +1 -1
  111. package/dist/services/actionflow/calendar_mapper.js +33 -13
  112. package/dist/services/actionflow/calendar_mapper.js.map +1 -1
  113. package/dist/services/actionflow/components/action_eb_add.d.ts.map +1 -1
  114. package/dist/services/actionflow/components/action_eb_add.js +13 -1
  115. package/dist/services/actionflow/components/action_eb_add.js.map +1 -1
  116. package/dist/services/actionflow/components/action_eb_delete.js +2 -2
  117. package/dist/services/actionflow/components/action_eb_delete.js.map +1 -1
  118. package/dist/services/actionflow/components/action_eb_recover.js +2 -2
  119. package/dist/services/actionflow/components/action_eb_recover.js.map +1 -1
  120. package/dist/services/actionflow/components/action_eb_save_version.js +2 -2
  121. package/dist/services/actionflow/components/action_eb_save_version.js.map +1 -1
  122. package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -1
  123. package/dist/services/actionflow/components/action_eb_update.js +15 -3
  124. package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
  125. package/dist/services/actionflow/components/action_eb_update_compiler.js +5 -5
  126. package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
  127. package/dist/services/actionflow/components/approve_create.d.ts.map +1 -1
  128. package/dist/services/actionflow/components/approve_create.js +5 -2
  129. package/dist/services/actionflow/components/approve_create.js.map +1 -1
  130. package/dist/services/actionflow/components/approve_trigger.d.ts.map +1 -1
  131. package/dist/services/actionflow/components/approve_trigger.js +5 -0
  132. package/dist/services/actionflow/components/approve_trigger.js.map +1 -1
  133. package/dist/services/actionflow/components/date_trigger.d.ts.map +1 -1
  134. package/dist/services/actionflow/components/date_trigger.js +14 -1
  135. package/dist/services/actionflow/components/date_trigger.js.map +1 -1
  136. package/dist/services/actionflow/components/dml_execute.d.ts.map +1 -1
  137. package/dist/services/actionflow/components/dml_execute.js +18 -10
  138. package/dist/services/actionflow/components/dml_execute.js.map +1 -1
  139. package/dist/services/actionflow/components/document_actions.js +5 -5
  140. package/dist/services/actionflow/components/document_actions.js.map +1 -1
  141. package/dist/services/actionflow/components/eb_get_data_by_id.d.ts.map +1 -1
  142. package/dist/services/actionflow/components/eb_get_data_by_id.js +8 -6
  143. package/dist/services/actionflow/components/eb_get_data_by_id.js.map +1 -1
  144. package/dist/services/actionflow/components/enquiry_form.d.ts.map +1 -1
  145. package/dist/services/actionflow/components/enquiry_form.js +28 -9
  146. package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
  147. package/dist/services/actionflow/components/hrm_actions.d.ts.map +1 -1
  148. package/dist/services/actionflow/components/hrm_actions.js +34 -13
  149. package/dist/services/actionflow/components/hrm_actions.js.map +1 -1
  150. package/dist/services/actionflow/components/index.js +3 -3
  151. package/dist/services/actionflow/components/index.js.map +1 -1
  152. package/dist/services/actionflow/components/inner_mq_send.d.ts.map +1 -1
  153. package/dist/services/actionflow/components/inner_mq_send.js +43 -4
  154. package/dist/services/actionflow/components/inner_mq_send.js.map +1 -1
  155. package/dist/services/actionflow/components/meeting_create.js +9 -9
  156. package/dist/services/actionflow/components/meeting_create.js.map +1 -1
  157. package/dist/services/actionflow/components/multiple_execution.d.ts.map +1 -1
  158. package/dist/services/actionflow/components/multiple_execution.js +83 -4
  159. package/dist/services/actionflow/components/multiple_execution.js.map +1 -1
  160. package/dist/services/actionflow/components/output.d.ts +3 -2
  161. package/dist/services/actionflow/components/output.d.ts.map +1 -1
  162. package/dist/services/actionflow/components/output.js +33 -0
  163. package/dist/services/actionflow/components/output.js.map +1 -1
  164. package/dist/services/actionflow/components/schedule_create.js +10 -10
  165. package/dist/services/actionflow/components/schedule_create.js.map +1 -1
  166. package/dist/services/actionflow/components/send_message.js +1 -1
  167. package/dist/services/actionflow/components/send_message.js.map +1 -1
  168. package/dist/services/actionflow/components/simple_scheduler.d.ts.map +1 -1
  169. package/dist/services/actionflow/components/simple_scheduler.js +42 -9
  170. package/dist/services/actionflow/components/simple_scheduler.js.map +1 -1
  171. package/dist/services/actionflow/components/time_batch_trigger.d.ts.map +1 -1
  172. package/dist/services/actionflow/components/time_batch_trigger.js +43 -13
  173. package/dist/services/actionflow/components/time_batch_trigger.js.map +1 -1
  174. package/dist/services/actionflow/components/workflow_actions.d.ts +0 -1
  175. package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
  176. package/dist/services/actionflow/components/workflow_actions.js +21 -27
  177. package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
  178. package/dist/services/actionflow/context_preflight.d.ts +30 -1
  179. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  180. package/dist/services/actionflow/context_preflight.js +175 -2
  181. package/dist/services/actionflow/context_preflight.js.map +1 -1
  182. package/dist/services/actionflow/design_client.d.ts +4 -0
  183. package/dist/services/actionflow/design_client.d.ts.map +1 -1
  184. package/dist/services/actionflow/design_client.js +10 -0
  185. package/dist/services/actionflow/design_client.js.map +1 -1
  186. package/dist/services/actionflow/dynamic_resources.d.ts.map +1 -1
  187. package/dist/services/actionflow/dynamic_resources.js +10 -3
  188. package/dist/services/actionflow/dynamic_resources.js.map +1 -1
  189. package/dist/services/actionflow/enrich_approve_trigger.d.ts.map +1 -1
  190. package/dist/services/actionflow/enrich_approve_trigger.js +18 -3
  191. package/dist/services/actionflow/enrich_approve_trigger.js.map +1 -1
  192. package/dist/services/actionflow/formula_service.d.ts +1 -1
  193. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  194. package/dist/services/actionflow/formula_service.js +135 -12
  195. package/dist/services/actionflow/formula_service.js.map +1 -1
  196. package/dist/services/actionflow/generation_service.d.ts.map +1 -1
  197. package/dist/services/actionflow/generation_service.js +18 -2
  198. package/dist/services/actionflow/generation_service.js.map +1 -1
  199. package/dist/services/actionflow/preflight_service.d.ts +1 -1
  200. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  201. package/dist/services/actionflow/preflight_service.js +168 -5
  202. package/dist/services/actionflow/preflight_service.js.map +1 -1
  203. package/dist/services/actionflow/save_workflow_draft.d.ts +8 -0
  204. package/dist/services/actionflow/save_workflow_draft.d.ts.map +1 -1
  205. package/dist/services/actionflow/save_workflow_draft.js +6 -2
  206. package/dist/services/actionflow/save_workflow_draft.js.map +1 -1
  207. package/dist/services/actionflow/update_service.d.ts +6 -0
  208. package/dist/services/actionflow/update_service.d.ts.map +1 -1
  209. package/dist/services/actionflow/update_service.js +125 -7
  210. package/dist/services/actionflow/update_service.js.map +1 -1
  211. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  212. package/dist/services/actionflow/workflow_compiler.js +17 -9
  213. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  214. package/dist/services/browser.d.ts +34 -0
  215. package/dist/services/browser.d.ts.map +1 -0
  216. package/dist/services/browser.js +57 -0
  217. package/dist/services/browser.js.map +1 -0
  218. package/dist/services/esb-interface/document-parser.d.ts +5 -0
  219. package/dist/services/esb-interface/document-parser.d.ts.map +1 -1
  220. package/dist/services/esb-interface/document-parser.js +117 -1
  221. package/dist/services/esb-interface/document-parser.js.map +1 -1
  222. package/dist/services/esb-interface/importer.d.ts.map +1 -1
  223. package/dist/services/esb-interface/importer.js +7 -2
  224. package/dist/services/esb-interface/importer.js.map +1 -1
  225. package/dist/services/field-props-data.d.ts +56 -0
  226. package/dist/services/field-props-data.d.ts.map +1 -0
  227. package/dist/services/field-props-data.js +732 -0
  228. package/dist/services/field-props-data.js.map +1 -0
  229. package/dist/services/form-edit-base.d.ts +45 -0
  230. package/dist/services/form-edit-base.d.ts.map +1 -0
  231. package/dist/services/form-edit-base.js +76 -0
  232. package/dist/services/form-edit-base.js.map +1 -0
  233. package/dist/services/form-field-drop.d.ts +41 -0
  234. package/dist/services/form-field-drop.d.ts.map +1 -0
  235. package/dist/services/form-field-drop.js +58 -0
  236. package/dist/services/form-field-drop.js.map +1 -0
  237. package/dist/services/form-style-template.d.ts +17 -0
  238. package/dist/services/form-style-template.d.ts.map +1 -0
  239. package/dist/services/form-style-template.js +102 -0
  240. package/dist/services/form-style-template.js.map +1 -0
  241. package/dist/services/form-virtual.d.ts +60 -0
  242. package/dist/services/form-virtual.d.ts.map +1 -0
  243. package/dist/services/form-virtual.js +331 -0
  244. package/dist/services/form-virtual.js.map +1 -0
  245. package/dist/services/report/analyze.d.ts +67 -0
  246. package/dist/services/report/analyze.d.ts.map +1 -0
  247. package/dist/services/report/analyze.js +173 -0
  248. package/dist/services/report/analyze.js.map +1 -0
  249. package/dist/services/report/build.d.ts +166 -0
  250. package/dist/services/report/build.d.ts.map +1 -0
  251. package/dist/services/report/build.js +520 -0
  252. package/dist/services/report/build.js.map +1 -0
  253. package/dist/services/report/constants.d.ts +145 -0
  254. package/dist/services/report/constants.d.ts.map +1 -0
  255. package/dist/services/report/constants.js +250 -0
  256. package/dist/services/report/constants.js.map +1 -0
  257. package/dist/services/report/dataset.d.ts +73 -0
  258. package/dist/services/report/dataset.d.ts.map +1 -0
  259. package/dist/services/report/dataset.js +185 -0
  260. package/dist/services/report/dataset.js.map +1 -0
  261. package/dist/services/report/fields.d.ts +80 -0
  262. package/dist/services/report/fields.d.ts.map +1 -0
  263. package/dist/services/report/fields.js +245 -0
  264. package/dist/services/report/fields.js.map +1 -0
  265. package/dist/services/report/forms.d.ts +70 -0
  266. package/dist/services/report/forms.d.ts.map +1 -0
  267. package/dist/services/report/forms.js +237 -0
  268. package/dist/services/report/forms.js.map +1 -0
  269. package/dist/services/report/guard.d.ts +73 -0
  270. package/dist/services/report/guard.d.ts.map +1 -0
  271. package/dist/services/report/guard.js +262 -0
  272. package/dist/services/report/guard.js.map +1 -0
  273. package/dist/services/report/http.d.ts +118 -0
  274. package/dist/services/report/http.d.ts.map +1 -0
  275. package/dist/services/report/http.js +159 -0
  276. package/dist/services/report/http.js.map +1 -0
  277. package/dist/services/report/lifecycle.d.ts +107 -0
  278. package/dist/services/report/lifecycle.d.ts.map +1 -0
  279. package/dist/services/report/lifecycle.js +323 -0
  280. package/dist/services/report/lifecycle.js.map +1 -0
  281. package/dist/services/report/permission.d.ts +59 -0
  282. package/dist/services/report/permission.d.ts.map +1 -0
  283. package/dist/services/report/permission.js +286 -0
  284. package/dist/services/report/permission.js.map +1 -0
  285. package/dist/services/report/query-checks.d.ts +124 -0
  286. package/dist/services/report/query-checks.d.ts.map +1 -0
  287. package/dist/services/report/query-checks.js +374 -0
  288. package/dist/services/report/query-checks.js.map +1 -0
  289. package/dist/services/report/query.d.ts +106 -0
  290. package/dist/services/report/query.d.ts.map +1 -0
  291. package/dist/services/report/query.js +278 -0
  292. package/dist/services/report/query.js.map +1 -0
  293. package/dist/services/report/render.d.ts +52 -0
  294. package/dist/services/report/render.d.ts.map +1 -0
  295. package/dist/services/report/render.js +138 -0
  296. package/dist/services/report/render.js.map +1 -0
  297. package/dist/services/report/reports.d.ts +110 -0
  298. package/dist/services/report/reports.d.ts.map +1 -0
  299. package/dist/services/report/reports.js +179 -0
  300. package/dist/services/report/reports.js.map +1 -0
  301. package/dist/services/report/safe-save.d.ts +57 -0
  302. package/dist/services/report/safe-save.d.ts.map +1 -0
  303. package/dist/services/report/safe-save.js +325 -0
  304. package/dist/services/report/safe-save.js.map +1 -0
  305. package/dist/services/report/sources.d.ts +48 -0
  306. package/dist/services/report/sources.d.ts.map +1 -0
  307. package/dist/services/report/sources.js +147 -0
  308. package/dist/services/report/sources.js.map +1 -0
  309. package/dist/services/report/types.d.ts +312 -0
  310. package/dist/services/report/types.d.ts.map +1 -0
  311. package/dist/services/report/types.js +2 -0
  312. package/dist/services/report/types.js.map +1 -0
  313. package/dist/services/report/validate.d.ts +169 -0
  314. package/dist/services/report/validate.d.ts.map +1 -0
  315. package/dist/services/report/validate.js +685 -0
  316. package/dist/services/report/validate.js.map +1 -0
  317. package/dist/services/report/verify.d.ts +72 -0
  318. package/dist/services/report/verify.d.ts.map +1 -0
  319. package/dist/services/report/verify.js +441 -0
  320. package/dist/services/report/verify.js.map +1 -0
  321. package/dist/services/report/workbook.d.ts +108 -0
  322. package/dist/services/report/workbook.d.ts.map +1 -0
  323. package/dist/services/report/workbook.js +471 -0
  324. package/dist/services/report/workbook.js.map +1 -0
  325. package/dist/services/rich-types.d.ts +39 -0
  326. package/dist/services/rich-types.d.ts.map +1 -1
  327. package/dist/services/rich-types.js +61 -30
  328. package/dist/services/rich-types.js.map +1 -1
  329. package/dist/services/workflow-node-layout.d.ts +214 -0
  330. package/dist/services/workflow-node-layout.d.ts.map +1 -0
  331. package/dist/services/workflow-node-layout.js +338 -0
  332. package/dist/services/workflow-node-layout.js.map +1 -0
  333. package/dist/services/workflow-operator.d.ts +47 -2
  334. package/dist/services/workflow-operator.d.ts.map +1 -1
  335. package/dist/services/workflow-operator.js +102 -5
  336. package/dist/services/workflow-operator.js.map +1 -1
  337. package/dist/services/workflow-overtime.d.ts +95 -0
  338. package/dist/services/workflow-overtime.d.ts.map +1 -0
  339. package/dist/services/workflow-overtime.js +207 -0
  340. package/dist/services/workflow-overtime.js.map +1 -0
  341. package/dist/services/workflow-plan-range.d.ts +18 -0
  342. package/dist/services/workflow-plan-range.d.ts.map +1 -0
  343. package/dist/services/workflow-plan-range.js +72 -0
  344. package/dist/services/workflow-plan-range.js.map +1 -0
  345. package/package.json +3 -2
  346. package/skill-docs/SKILL.md +277 -261
  347. package/skill-docs/_catalog.md +77 -66
  348. package/skill-docs/actionflows/SKILL.md +22 -14
  349. package/skill-docs/actionflows/references/components/calendar/MeetingCreate.md +17 -17
  350. package/skill-docs/actionflows/references/components/calendar/ScheduleCreate.md +17 -17
  351. package/skill-docs/actionflows/references/components/database/DMLExecute.md +3 -3
  352. package/skill-docs/actionflows/references/components/ebuilder/DateTrigger.md +32 -17
  353. package/skill-docs/actionflows/references/components/ebuilder/EbGetDataById.md +17 -17
  354. package/skill-docs/actionflows/references/components/ebuilder/EnquiryForm.md +6 -0
  355. package/skill-docs/actionflows/references/components/ebuilder/EventFormData.md +2 -0
  356. package/skill-docs/actionflows/references/components/ebuilder/TimeBatchTrigger.md +19 -17
  357. package/skill-docs/actionflows/references/components/logic/Output.md +28 -17
  358. package/skill-docs/actionflows/references/components/message/InnerMQSend.md +6 -2
  359. package/skill-docs/actionflows/references/components/personnel/AlterPersonStatus.md +30 -30
  360. package/skill-docs/actionflows/references/components/personnel/HrmEmployeeUpdate.md +32 -32
  361. package/skill-docs/actionflows/references/components/trigger/InnerMQListener.md +41 -40
  362. package/skill-docs/actionflows/references/components/trigger/SimpleScheduler.md +19 -17
  363. package/skill-docs/actionflows/references/components/workflow/ApproveCreate.md +17 -17
  364. package/skill-docs/actionflows/references/components/workflow/ApproveDelete.md +19 -17
  365. package/skill-docs/actionflows/references/components/workflow/ApproveEntrust.md +19 -17
  366. package/skill-docs/actionflows/references/components/workflow/ApproveSave.md +17 -17
  367. package/skill-docs/actionflows/references/components/workflow/ApproveTrigger.md +99 -84
  368. package/skill-docs/actionflows/references/dynamic_capability_matrix.md +39 -0
  369. package/skill-docs/references/common/guide-plan-template.md +251 -233
  370. package/skill-docs/references/common/ref-cli-commands.md +519 -373
  371. package/skill-docs/references/ebuilder-designer/guide-designer-components.md +1 -1
  372. package/skill-docs/references/ebuilder-designer/guide-designer-factory.md +460 -460
  373. package/skill-docs/references/ebuilder-designer/guide-designer.md +4 -4
  374. package/skill-docs/references/form/guide-create-form.md +232 -214
  375. package/skill-docs/references/form/guide-form-association.md +1 -1
  376. package/skill-docs/references/form/guide-form-view.md +318 -318
  377. package/skill-docs/references/form/guide-virtual-form.md +156 -0
  378. package/skill-docs/references/form/ref-form-fields.md +239 -100
  379. package/skill-docs/references/form/style-templates.md +80 -27
  380. package/skill-docs/references/report/add-dataset-registration-guide.md +139 -0
  381. package/skill-docs/references/report/ai-report-workflow.md +412 -0
  382. package/skill-docs/references/report/api-report-build-fast-path.md +275 -0
  383. package/skill-docs/references/report/app-datasource-lookup-guide.md +230 -0
  384. package/skill-docs/references/report/cell-config-echo-guide.md +163 -0
  385. package/skill-docs/references/report/cell-transform-guide.md +147 -0
  386. package/skill-docs/references/report/condition-format-guide.md +140 -0
  387. package/skill-docs/references/report/cross-dataset-filter-guide.md +304 -0
  388. package/skill-docs/references/report/dataset-query-filter-guide.md +235 -0
  389. package/skill-docs/references/report/dataset-sidebar-ops-guide.md +280 -0
  390. package/skill-docs/references/report/dataset-table-field-contract-guide.md +339 -0
  391. package/skill-docs/references/report/datasource-metadata-guide.md +365 -0
  392. package/skill-docs/references/report/datasource-selection-and-parent-filter-guide.md +148 -0
  393. package/skill-docs/references/report/date-range-query-reference.md +102 -0
  394. package/skill-docs/references/report/default-header-style-guide.md +70 -0
  395. package/skill-docs/references/report/designer-blank-prevention-guide.md +111 -0
  396. package/skill-docs/references/report/event-hreflink-guide.md +184 -0
  397. package/skill-docs/references/report/field-bind-exact-match-guide.md +208 -0
  398. package/skill-docs/references/report/formula-cell-api-guide.md +258 -0
  399. package/skill-docs/references/report/guide-report-build.md +131 -0
  400. package/skill-docs/references/report/guide-report-modify.md +100 -0
  401. package/skill-docs/references/report/guide-report-multisource.md +143 -0
  402. package/skill-docs/references/report/guide-report-query.md +98 -0
  403. package/skill-docs/references/report/hidden-row-and-header-merge-guide.md +100 -0
  404. package/skill-docs/references/report/layout-showlocation-freeze-guide.md +167 -0
  405. package/skill-docs/references/report/preaggregate-auto-disable-guide.md +107 -0
  406. package/skill-docs/references/report/query-condition-api-guide.md +890 -0
  407. package/skill-docs/references/report/ref-report-commands.md +122 -0
  408. package/skill-docs/references/report/ref-report-pitfalls.md +226 -0
  409. package/skill-docs/references/report/report-baseinfo-defaults-guide.md +117 -0
  410. package/skill-docs/references/report/report-building-guide.md +511 -0
  411. package/skill-docs/references/report/report-config-schema.md +445 -0
  412. package/skill-docs/references/report/report-create-modes-guide.md +182 -0
  413. package/skill-docs/references/report/report-data-model.md +447 -0
  414. package/skill-docs/references/report/report-delivery-contract.md +101 -0
  415. package/skill-docs/references/report/report-designer-feature-map.md +500 -0
  416. package/skill-docs/references/report/report-internal-error-guide.md +78 -0
  417. package/skill-docs/references/report/report-knowledge-base.md +389 -0
  418. package/skill-docs/references/report/report-lifecycle-api-guide.md +392 -0
  419. package/skill-docs/references/report/report-list-page-ops-guide.md +191 -0
  420. package/skill-docs/references/report/report-permission-guide.md +365 -0
  421. package/skill-docs/references/report/report-requirement-analysis-template.md +202 -0
  422. package/skill-docs/references/report/report-self-check-guide.md +164 -0
  423. package/skill-docs/references/report/safe-partial-save-guide.md +151 -0
  424. package/skill-docs/references/report/snowflake-id-precision-guide.md +84 -0
  425. package/skill-docs/references/report/spec-build-schema.md +291 -0
  426. package/skill-docs/references/report/targeted-fix-guide.md +97 -0
  427. package/skill-docs/references/report/user-request-scope-only-guide.md +82 -0
  428. package/skill-docs/references/workflow/guide-workflow-auth-resp.md +190 -0
  429. package/skill-docs/references/workflow/guide-workflow-node-layout.md +181 -0
  430. package/skill-docs/references/workflow/guide-workflow.md +7 -3
  431. package/skill-docs/actionflows/references/components/workflow/ApproveCompletelyDelete.md +0 -17
@@ -0,0 +1,568 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { AuthSession } from '../core/auth.js';
3
+ import { ApiClient } from '../core/client.js';
4
+ const TABLE_API = '/api/authresp/table/authRespTableSet';
5
+ const VARIABLE_API = '/api/bs/workflow/pathdef/variable';
6
+ const AUTH_RESP_BROWSER_API = '/api/authresp/common/browser';
7
+ function authRespNodeType(value, fallback) {
8
+ const types = { start: '0', approve: '1', confirm: '2', end: '3', archive: '3', vote: '5', auto: '7' };
9
+ return types[String(value || '').toLowerCase()] || String(value || fallback);
10
+ }
11
+ function readJsonArg(value) {
12
+ const text = value.startsWith('@') ? readFileSync(value.slice(1), 'utf-8') : value;
13
+ return JSON.parse(text.replace(/^\uFEFF/, ''));
14
+ }
15
+ /** 接口失败即报错退出。
16
+ * **直接退出而不是抛出**:这些命令体没有 try/catch,抛出会变成 Node 未捕获异常的堆栈
17
+ * (本文件 30+ 处调用),对使用者毫无指向性——只想知道哪一步失败、为什么。 */
18
+ function assertSuccess(result, action) {
19
+ if (result?.code !== 200 || result?.status === false || result?.fail === true) {
20
+ console.error(`${action}失败: ${result?.msg || result?.data?.msg || '未知错误'}`);
21
+ process.exit(1);
22
+ }
23
+ }
24
+ function resultData(result) {
25
+ return result?.data?.data ?? result?.data;
26
+ }
27
+ function completeDesignColumns(design) {
28
+ const source = Array.isArray(design?.columns) ? design.columns : [];
29
+ if (source.some((column) => column.name === 'creator'))
30
+ return source;
31
+ const dynamic = source.filter((column) => String(column?.name || '').startsWith('pubNode-'));
32
+ const firstRow = Array.isArray(design?.rows) ? design.rows[0] || {} : {};
33
+ return [
34
+ { header: '发起权限', name: 'creator', itemType: 'CUSTOM', resizable: true, width: 115, pubNodeInfo: { type: 'creator', nodeType: String(design?.creatorMap?.nodeType ?? '0') } },
35
+ { header: '分支场景说明', name: 'eventColumn', itemType: 'INPUT', resizable: true, width: 180 },
36
+ { header: '条件设置', name: 'condition', itemType: 'CUSTOM', resizable: true, width: 200, whiteSpace: 'pre-line' },
37
+ ...dynamic,
38
+ { name: 'addCol', itemType: 'CUSTOM', width: 96 },
39
+ { header: '结束设置', name: 'endOperator', itemType: 'CUSTOM', resizable: true, width: 115, pubNodeInfo: { type: 'endOperator', nodeType: String(design?.endMap?.nodeType ?? '3') } },
40
+ { header: '流程图预览', name: 'preview', itemType: 'CUSTOM', width: 96 },
41
+ { header: '维护权限', name: 'maintain', itemType: 'CUSTOM', width: 96 },
42
+ ].map((column) => {
43
+ if (column.name === 'creator' && firstRow.creatorNodeId)
44
+ column.pubNodeInfo.nodeId = String(firstRow.creatorNodeId);
45
+ if (column.name === 'endOperator' && firstRow.endOperatorNodeId)
46
+ column.pubNodeInfo.nodeId = String(firstRow.endOperatorNodeId);
47
+ return column;
48
+ });
49
+ }
50
+ async function nextId(client, baseUrl, prefix) {
51
+ const result = await client.post(`${baseUrl}/api/bs/workflow/pathdef/multilang/getTargetId`, {
52
+ targetId: '-1', onlyKey: `${prefix}_${Date.now()}_${Math.floor(Math.random() * 10000)}`,
53
+ });
54
+ assertSuccess(result, '生成配置标识');
55
+ return String(result.data);
56
+ }
57
+ async function saveAuthRespOperator(args) {
58
+ const { client, baseUrl, authRespId, nodeId, workflowId, operator } = args;
59
+ const layout = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeOperator/getLayoutConfigInfo`, {
60
+ groupId: '', workflowId: '-99999999', nodeId, sourceType: '1', isOperatorRuleAuth: true,
61
+ isPub: '1', belongScene: '3', belongSceneId: authRespId, isAuthResp: '1',
62
+ isCreate: args.isCreate ? '1' : '', isVoteType: '', isArchive: args.isArchive ? '1' : '',
63
+ });
64
+ assertSuccess(layout, '初始化权责表操作者');
65
+ const reserveGroupId = String(layout?.data?.reserveGroupId || '');
66
+ if (!reserveGroupId)
67
+ throw new Error(`节点 ${nodeId} 未返回 reserveGroupId`);
68
+ let itemDatas;
69
+ let label = operator.label || '';
70
+ if (operator.type === 'raw') {
71
+ if (!Array.isArray(operator.itemDatas) || operator.itemDatas.length === 0)
72
+ throw new Error(`节点 ${nodeId} 的 raw 操作者缺少 itemDatas`);
73
+ itemDatas = operator.itemDatas;
74
+ label ||= itemDatas[0]?.groupType || '自定义操作者';
75
+ }
76
+ else if (operator.type === 'user') {
77
+ if (!operator.keyword)
78
+ throw new Error(`节点 ${nodeId} 的 user 操作者缺少 keyword`);
79
+ const found = await client.post(`${baseUrl}/api/hrm/common/getEmployeeByKeyWords`, {
80
+ keyword: operator.keyword, searchType: 1, searchCount: 5, appDetachModule: 'EM', disableAppDetach: 0, pageNo: 1, pageSize: 5,
81
+ });
82
+ const users = found?.data?.userList || [];
83
+ const hit = users.find((u) => u.name === operator.keyword) || (users.length === 1 ? users[0] : null);
84
+ if (!hit)
85
+ throw new Error(`人员“${operator.keyword}”未找到或不唯一`);
86
+ label = hit.name;
87
+ itemDatas = [{
88
+ hrmOperators: String(hit.id), hrmOperatorsCN: hit.name, signOrder: '1', signOrderCN: '会签',
89
+ hrmBrowserDataDtos: [hit], groupType: '指定人', groupTypeId: '101', bigTypeId: 1,
90
+ }];
91
+ }
92
+ else if (operator.type === 'initiator') {
93
+ label = '流程发起人';
94
+ itemDatas = [{
95
+ includeType: '12', includeTypeCN: '本人', objLevelType: '1', objLevelTypeCN: '全部机构',
96
+ objectId: '1', objectIdCN: '直接上级', signOrder: '1', signOrderCN: '会签',
97
+ groupType: '流程发起人', groupTypeId: '114', bigTypeId: 1, itemName: '本人', level: '',
98
+ }];
99
+ }
100
+ else {
101
+ label = '所有人';
102
+ itemDatas = [{ groupType: '所有人', groupTypeId: '110', bigTypeId: 1 }];
103
+ }
104
+ itemDatas = itemDatas.map((item, index) => ({
105
+ isOut: false, isSaveHrmOperator: false, id: String(index + 1), itemName: '', itemLevel: '',
106
+ endApprovers: '', hrmOperators: '', levelObj: '', workflowId: '-99999999', nodeId,
107
+ conditionId: '', orders: '0.00', isOpen: true, condition: '', groupCondition: '',
108
+ isSuportVirtualId: false, openProjectOrganization: false, isExtendType: 0,
109
+ ...item,
110
+ }));
111
+ const saved = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeOperator/saveOperatorGroup`, {
112
+ workflowId: '-99999999', nodeId,
113
+ groupId: args.isCreate && workflowId !== '-99999999' ? '-1' : '',
114
+ isCreate: args.isCreate ? '1' : '',
115
+ reserveGroupId, itemDatas, oldGroupName: '', refWorkflowId: workflowId === '-99999999' ? '' : workflowId,
116
+ isAuthResp: '1', oldItemDatas: [], groupName: '', deleteDatas: [], isPub: '1', mustreview: 0,
117
+ });
118
+ assertSuccess(saved, `保存节点 ${nodeId} 操作者`);
119
+ return { id: reserveGroupId, name: label };
120
+ }
121
+ /**
122
+ * 权责表是工作流公用流转中的独立资源,不等同于 HRM matrix,也不等同于普通公共片段。
123
+ * 本文件只管理权责表本体、变量及表格设计;创建权责表方式的流程见
124
+ * workflow-create-auth-resp.ts。
125
+ */
126
+ export function registerWorkflowAuthRespCommands(wf, program) {
127
+ const root = wf.command('auth-resp').description('权责表创建、读取、变量与表格设计');
128
+ root.command('list')
129
+ .description('查询独立权责表')
130
+ .option('--name <keyword>', '按名称搜索', '')
131
+ .option('--page <n>', '页码', '1')
132
+ .option('--page-size <n>', '每页条数', '200')
133
+ .action(async (o) => {
134
+ const opts = program.opts();
135
+ const auth = await AuthSession.fromOptions(opts);
136
+ if (!auth)
137
+ throw new Error('无法加载认证');
138
+ const client = new ApiClient(auth);
139
+ const result = await client.post(`${auth.getBaseUrl()}${TABLE_API}/getAuthRespList`, {
140
+ name: o.name, pageSize: Number(o.pageSize), current: Number(o.page), isSearch: true,
141
+ });
142
+ assertSuccess(result, '查询权责表');
143
+ console.log(JSON.stringify(resultData(result), null, 2));
144
+ });
145
+ root.command('create')
146
+ .description('创建独立权责表')
147
+ .argument('<name>', '权责表名称')
148
+ .option('--desc <text>', '描述', '')
149
+ .action(async (name, o) => {
150
+ const opts = program.opts();
151
+ const auth = await AuthSession.fromOptions(opts);
152
+ if (!auth)
153
+ throw new Error('无法加载认证');
154
+ const client = new ApiClient(auth);
155
+ const result = await client.post(`${auth.getBaseUrl()}${TABLE_API}/saveAuthRespTableSet`, {
156
+ name, desc: o.desc, fragmentCreate: '1',
157
+ });
158
+ assertSuccess(result, '创建权责表');
159
+ const data = resultData(result);
160
+ const authRespId = data?.sourceId || data?.authRespId || data?.id || data;
161
+ const baseId = data?.id || '';
162
+ console.log(JSON.stringify({ authRespId, baseId, name, data }, null, 2));
163
+ });
164
+ root.command('update')
165
+ .description('修改权责表基础信息;配置内容以读取结果为准保留')
166
+ .argument('<authRespId>', '权责表 ID')
167
+ .argument('<name>', '权责表名称')
168
+ .option('--desc <text>', '描述', '')
169
+ .action(async (authRespId, name, o) => {
170
+ const opts = program.opts();
171
+ const auth = await AuthSession.fromOptions(opts);
172
+ if (!auth)
173
+ throw new Error('无法加载认证');
174
+ const client = new ApiClient(auth);
175
+ const result = await client.post(`${auth.getBaseUrl()}${TABLE_API}/saveAuthRespTableSet`, {
176
+ id: authRespId, authRespId, name, desc: o.desc, fragmentCreate: '1',
177
+ });
178
+ assertSuccess(result, '修改权责表');
179
+ console.log(JSON.stringify({ authRespId, name, data: resultData(result) }, null, 2));
180
+ });
181
+ root.command('read')
182
+ .description('读取权责表完整设计(节点列、分支行、条件引用及版本)')
183
+ .argument('<authRespId>', '权责表 ID')
184
+ .requiredOption('--base-id <id>', '权责表基础记录 ID(独立创建返回的 baseId)')
185
+ .option('--workflow-id <id>', '流程内权责表所属流程 ID')
186
+ .option('--version <n>', '版本号', '0')
187
+ .action(async (authRespId, o) => {
188
+ const opts = program.opts();
189
+ const auth = await AuthSession.fromOptions(opts);
190
+ if (!auth)
191
+ throw new Error('无法加载认证');
192
+ const client = new ApiClient(auth);
193
+ const info = await client.get(`${auth.getBaseUrl()}/api/bs/workflow/pathdef/publicFlow/getAuthRespSegmentInfo?segmentId=${encodeURIComponent(authRespId)}`);
194
+ assertSuccess(info, '读取权责表信息');
195
+ const result = await client.post(`${auth.getBaseUrl()}${TABLE_API}/getAuthRespTableDetailSet`, {
196
+ baseId: o.baseId, sourceId: authRespId, versionNum: Number(o.version),
197
+ fragmentCreate: o.workflowId ? '0' : '1', canEdit: 1, isReadOnly: 0,
198
+ });
199
+ assertSuccess(result, '读取权责表');
200
+ console.log(JSON.stringify({ info: resultData(info), design: resultData(result) }, null, 2));
201
+ });
202
+ root.command('configure')
203
+ .description('按结构化配置从零创建变量、节点、操作者、分支条件和路径并保存完整权责表')
204
+ .argument('<authRespId>', '权责表 sourceId')
205
+ .requiredOption('--config <json|@file>', '完整权责表配置')
206
+ .action(async (authRespId, o) => {
207
+ const config = readJsonArg(o.config);
208
+ if (!config.baseId || !config.name)
209
+ throw new Error('config 必须包含 baseId 和 name');
210
+ if (!Array.isArray(config.nodes) || !Array.isArray(config.branches) || config.branches.length === 0) {
211
+ throw new Error('config.nodes 必须是数组,config.branches 必须是非空数组');
212
+ }
213
+ for (const [i, branch] of config.branches.entries()) {
214
+ if (!String(branch.scenario || '').trim())
215
+ throw new Error(`第 ${i + 1} 个分支缺少 scenario`);
216
+ if (!Array.isArray(branch.condition?.childrens) || branch.condition.childrens.length === 0)
217
+ throw new Error(`第 ${i + 1} 个分支缺少 condition.childrens`);
218
+ if (!Array.isArray(branch.path) || branch.path.length === 0)
219
+ throw new Error(`第 ${i + 1} 个分支缺少 path`);
220
+ }
221
+ const opts = program.opts();
222
+ const auth = await AuthSession.fromOptions(opts);
223
+ if (!auth)
224
+ throw new Error('无法加载认证');
225
+ const client = new ApiClient(auth);
226
+ const baseUrl = auth.getBaseUrl();
227
+ const workflowId = String(config.workflowId || '-99999999');
228
+ const fragmentCreate = workflowId === '-99999999' ? '1' : '0';
229
+ const usage = String(config.usage || 'workflow');
230
+ const startNodeType = authRespNodeType(config.start?.type, usage === 'fragment' ? '1' : '0');
231
+ const endNodeType = authRespNodeType(config.end?.type, usage === 'fragment' ? '1' : '3');
232
+ if (usage === 'fragment' && (['0', '3'].includes(startNodeType) || ['0', '3'].includes(endNodeType))) {
233
+ throw new Error('中间片段型权责表的首尾位置均不能使用发起节点或结束节点');
234
+ }
235
+ // 新建权责表时平台会预生成开始/结束节点和若干空白分支行;优先复用这些稳定 ID。
236
+ // 独立权责表若尚无初始化数据,再通过 getInitAuthRespTableSet 补齐。
237
+ const current = await client.post(`${baseUrl}${TABLE_API}/getAuthRespTableDetailSet`, {
238
+ baseId: String(config.baseId), sourceId: authRespId, fragmentCreate, canEdit: 1, isReadOnly: 0,
239
+ });
240
+ assertSuccess(current, '读取权责表初始化结构');
241
+ const currentDesign = resultData(current) || {};
242
+ const presetRows = Array.isArray(currentDesign.rows) ? currentDesign.rows : [];
243
+ for (const variable of config.variables || []) {
244
+ const id = String(variable.id || -Date.now() * 1000 - Math.floor(Math.random() * 1000));
245
+ const saved = await client.post(`${baseUrl}${VARIABLE_API}/saveVariable`, {
246
+ varName: variable.name, hasEditAuth: true, hasRespAuth: true, enable: 1,
247
+ varSecondType: variable.secondType || 'wf_hrmresource',
248
+ varNameMultiLangParam: { tablefield: 'wfp_variables.var_name', targetId: id, needRecodInputValue: true },
249
+ id, isDetail: variable.detail ? '1' : '0', varFirstType: variable.type,
250
+ varSymbol: variable.symbol || '', optionTemplate: variable.optionTemplate,
251
+ relateBrowser: variable.relateBrowser, belongScene: '3', belongSceneId: authRespId,
252
+ });
253
+ assertSuccess(saved, `创建变量 ${variable.name}`);
254
+ variable.id = id;
255
+ }
256
+ let startNodeId = String(config.start?.nodeId || presetRows[0]?.creatorNodeId || '');
257
+ let endNodeId = String(config.end?.nodeId || presetRows[0]?.endOperatorNodeId || '');
258
+ if (!startNodeId || !endNodeId) {
259
+ const initialized = await client.post(`${baseUrl}${TABLE_API}/getInitAuthRespTableSet`, { tableCount: 2, addNode: 0, hasSeq: 0 });
260
+ assertSuccess(initialized, '初始化权责表开始和结束节点');
261
+ [startNodeId, endNodeId] = (initialized?.data?.ids || []).map(String);
262
+ }
263
+ if (!startNodeId || !endNodeId)
264
+ throw new Error('未取得开始或结束节点 ID');
265
+ if (startNodeType !== '0') {
266
+ const deleted = await client.get(`${baseUrl}/api/bs/workflow/pathdef/nodeOperator/deleteAuthRespOperatorSetByNodeId?nodeId=${encodeURIComponent(startNodeId)}&nodeType=0`);
267
+ assertSuccess(deleted, '清理原发起节点操作者');
268
+ }
269
+ if (endNodeType !== '3') {
270
+ const deleted = await client.get(`${baseUrl}/api/bs/workflow/pathdef/nodeOperator/deleteAuthRespOperatorSetByNodeId?nodeId=${encodeURIComponent(endNodeId)}&nodeType=3`);
271
+ assertSuccess(deleted, '清理原结束节点操作者');
272
+ }
273
+ const startOp = await saveAuthRespOperator({ client, baseUrl, authRespId, nodeId: String(startNodeId), workflowId, operator: config.start?.operator || { type: 'all' }, isCreate: startNodeType === '0' });
274
+ const endOp = await saveAuthRespOperator({ client, baseUrl, authRespId, nodeId: String(endNodeId), workflowId, operator: config.end?.operator || { type: 'initiator' }, isArchive: endNodeType === '3' });
275
+ const nodeMap = new Map();
276
+ for (const node of config.nodes) {
277
+ if (!node.key || !node.name)
278
+ throw new Error('每个中间节点必须包含 key 和 name');
279
+ const init = await client.post(`${baseUrl}${TABLE_API}/getInitAuthRespTableSet`, { tableCount: 1, addNode: 1, hasSeq: 0 });
280
+ assertSuccess(init, `初始化节点 ${node.name}`);
281
+ const nodeId = String(init?.data?.nodeId || '');
282
+ const op = await saveAuthRespOperator({ client, baseUrl, authRespId, nodeId, workflowId, operator: node.operator || { type: 'all' } });
283
+ const nodeType = authRespNodeType(node.type, '1');
284
+ nodeMap.set(node.key, { ...node, nodeId, nodeType, operator: op });
285
+ }
286
+ const rows = [];
287
+ for (const [index, branch] of config.branches.entries()) {
288
+ const sourceId = String(presetRows[index]?.sourceId || await nextId(client, baseUrl, 'auth_resp_branch'));
289
+ const baseContext = {
290
+ workflowId, conditionName: `${config.name} ${branch.scenario}`, source: 2, sourceId,
291
+ belongScene: 3, belongSceneId: authRespId, segmentId: authRespId,
292
+ isRefAuthRespRule: true, readOnly: false,
293
+ relation: String(branch.condition.relation || 'AND').toUpperCase() === 'OR' ? 2 : 1,
294
+ };
295
+ const conditionInit = await client.post(`${baseUrl}/api/workflow/pathdef/rule/condition/getConditionSet`, {
296
+ ...baseContext, needFormfield: true, templateTokenId: String(Date.now()),
297
+ });
298
+ assertSuccess(conditionInit, `读取分支条件上下文 ${branch.scenario}`);
299
+ const mapBaseId = String(conditionInit?.data?.mapBaseId || conditionInit?.data?.conditionKey || '');
300
+ if (!mapBaseId)
301
+ throw new Error(`分支“${branch.scenario}”未取得 mapBaseId`);
302
+ const context = { ...baseContext, mapBaseId };
303
+ const setResult = await client.post(`${baseUrl}/api/workflow/pathdef/rule/condition/saveConditionSet`, context);
304
+ assertSuccess(setResult, `初始化分支条件 ${branch.scenario}`);
305
+ const savedCondition = await client.post(`${baseUrl}/api/workflow/pathdef/rule/condition/saveCondition`, {
306
+ ...context, isEdit: false, isFromRuleListPage: true, childrens: branch.condition.childrens,
307
+ });
308
+ assertSuccess(savedCondition, `保存分支条件 ${branch.scenario}`);
309
+ if (savedCondition?.data?.result !== true || !savedCondition?.data?.conditionKey) {
310
+ throw new Error(`保存分支条件“${branch.scenario}”未返回有效 conditionKey: ${savedCondition?.data?.msg || 'result=false'}`);
311
+ }
312
+ const conditionKey = String(savedCondition.data.conditionKey);
313
+ const bound = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeLink/saveLinkConditionKey`, {
314
+ workflowId: '-99999999', linkId: sourceId, conditionKey, segmentId: authRespId,
315
+ });
316
+ assertSuccess(bound, `绑定分支条件 ${branch.scenario}`);
317
+ const row = {
318
+ rowKey: index, eventColumn: branch.scenario,
319
+ condition: savedCondition?.data?.conditionCn || branch.condition.description || '',
320
+ conditionKey, sourceId, sortKey: index + 1,
321
+ uniqueKey: `@dataKey${Date.now()}-${index}`,
322
+ };
323
+ if (presetRows[index]?.rowId)
324
+ row.rowId = String(presetRows[index].rowId);
325
+ if (presetRows[index]?.mainTainerObjectId)
326
+ row.mainTainerObjectId = String(presetRows[index].mainTainerObjectId);
327
+ if (index === 0) {
328
+ row.creator = config.start?.name || '开始节点';
329
+ row.creatorId = startOp.id;
330
+ row.creatorNodeId = startNodeId;
331
+ row.endOperator = config.end?.name || '结束节点';
332
+ row.endOperatorId = endOp.id;
333
+ row.endOperatorNodeId = endNodeId;
334
+ }
335
+ for (const step of branch.path) {
336
+ const node = nodeMap.get(step.node);
337
+ if (!node)
338
+ throw new Error(`分支“${branch.scenario}”引用未知节点 key=${step.node}`);
339
+ row[`pubNode-${node.nodeId}`] = { nodeInfo: [{
340
+ nodeId: '', pubNodeId: `pubNode-${node.nodeId}`,
341
+ nodeName: `${node.name}_${String(index + 1).padStart(2, '0')}`,
342
+ nodeType: node.nodeType, approveNum: Number(step.order).toFixed(2), addMethod: '1',
343
+ }] };
344
+ }
345
+ rows.push(row);
346
+ }
347
+ const columns = [
348
+ { name: 'creator', itemType: 'CUSTOM', resizable: true, width: 115, pubNodeInfo: { type: 'creator', nodeType: startNodeType, nodeName: config.start?.name || '开始节点', nodeOperator: [startOp] } },
349
+ { header: '分支场景说明', name: 'eventColumn', itemType: 'INPUT', resizable: true, width: 180 },
350
+ { header: '条件设置', name: 'condition', itemType: 'CUSTOM', resizable: true, width: 200, whiteSpace: 'pre-line' },
351
+ ...Array.from(nodeMap.values()).map((node) => ({
352
+ name: `pubNode-${node.nodeId}`, itemType: 'CUSTOM', resizable: true, width: 115,
353
+ pubNodeInfo: { id: node.nodeId, name: node.name, nodeAttr: '0', nodeType: node.nodeType,
354
+ publicAttr: node.nodeType, publicSegmentId: `-${authRespId}`, nodeOperator: [node.operator], addMethod: '1' },
355
+ })),
356
+ { name: 'addCol', itemType: 'CUSTOM', width: 96 },
357
+ { name: 'endOperator', itemType: 'CUSTOM', resizable: true, width: 115, pubNodeInfo: { type: 'endOperator', nodeType: endNodeType, nodeName: config.end?.name || '结束节点', nodeOperator: [endOp] } },
358
+ { header: '流程图预览', name: 'preview', itemType: 'CUSTOM', width: 96 },
359
+ { header: '维护权限', name: 'maintain', itemType: 'CUSTOM', width: 96 },
360
+ ];
361
+ const savedDesign = await client.post(`${baseUrl}${TABLE_API}/saveAuthRespTableDetailSet`, {
362
+ baseId: String(config.baseId), sourceId: authRespId, sourceName: config.name,
363
+ columns, rows, saveAsType: '', hasUpdate: '1', fragmentCreate,
364
+ ...(workflowId !== '-99999999' ? { refWorkflowId: workflowId } : {}),
365
+ });
366
+ assertSuccess(savedDesign, '保存完整权责表');
367
+ const verify = await client.post(`${baseUrl}${TABLE_API}/getAuthRespTableDetailSet`, {
368
+ baseId: String(config.baseId), sourceId: authRespId, fragmentCreate,
369
+ canEdit: 1, isReadOnly: 0,
370
+ });
371
+ assertSuccess(verify, '回读完整权责表');
372
+ const verifiedRows = resultData(verify)?.rows || [];
373
+ const invalidConditionRows = verifiedRows.slice(0, rows.length).filter((row) => !row?.conditionKey || !row?.condition);
374
+ if (invalidConditionRows.length > 0)
375
+ throw new Error(`权责表已保存,但有 ${invalidConditionRows.length} 个分支条件未正确回读`);
376
+ console.log(JSON.stringify({ authRespId, workflowId, nodes: Array.from(nodeMap.values()).map((n) => ({ key: n.key, id: n.nodeId })), branches: rows.length, design: resultData(verify) }, null, 2));
377
+ });
378
+ const reference = root.command('reference').description('在权责表分支路径中引用可嵌套的中间型权责表');
379
+ reference.command('list')
380
+ .description('查询可嵌套且不会形成循环引用的权责表')
381
+ .argument('<hostBaseId>', '当前权责表 baseId')
382
+ .option('--name <keyword>', '按名称搜索', '')
383
+ .option('--page <n>', '页码', '1')
384
+ .option('--page-size <n>', '每页条数', '20')
385
+ .action(async (hostBaseId, o) => {
386
+ const opts = program.opts();
387
+ const auth = await AuthSession.fromOptions(opts);
388
+ if (!auth)
389
+ throw new Error('无法加载认证');
390
+ const client = new ApiClient(auth);
391
+ const result = await client.post(`${auth.getBaseUrl()}${AUTH_RESP_BROWSER_API}/data/publicAuthRespBrowser`, {
392
+ browserMultiple: true, isNotIncludeCreateEnd: '1', noCycle: '1',
393
+ selecteds: hostBaseId, curAuthRespId: hostBaseId,
394
+ pageSize: Number(o.pageSize), current: Number(o.page),
395
+ formDatas: { name: [{ nameCondition: 'in', name: o.name }], arDesc: [{ arDescCondition: 'in' }], creator: [{ creatorCondition: 'in' }] },
396
+ quickSearchDatas: o.name ? { arName: o.name } : {}, type: 'and',
397
+ });
398
+ assertSuccess(result, '查询可嵌套权责表');
399
+ console.log(JSON.stringify(resultData(result), null, 2));
400
+ });
401
+ reference.command('add')
402
+ .description('把一张中间型权责表加入宿主权责表,并指定使用它的分支与顺序')
403
+ .argument('<hostAuthRespId>', '宿主权责表 sourceId')
404
+ .requiredOption('--base-id <id>', '宿主权责表 baseId')
405
+ .requiredOption('--reference <json|@file>', '引用信息 {id,name,baseId,versionNum,paths:[{branch|rowKey,order}]}')
406
+ .option('--workflow-id <id>', '宿主权责表所属流程 ID')
407
+ .action(async (hostAuthRespId, o) => {
408
+ const ref = readJsonArg(o.reference);
409
+ if (!ref?.id || !ref?.name || !ref?.baseId || !Array.isArray(ref.paths) || ref.paths.length === 0) {
410
+ throw new Error('reference 必须包含 id、name、baseId、versionNum 和非空 paths');
411
+ }
412
+ if (String(ref.id) === hostAuthRespId || String(ref.baseId) === o.baseId)
413
+ throw new Error('不能引用当前权责表自身');
414
+ const opts = program.opts();
415
+ const auth = await AuthSession.fromOptions(opts);
416
+ if (!auth)
417
+ throw new Error('无法加载认证');
418
+ const client = new ApiClient(auth);
419
+ const baseUrl = auth.getBaseUrl();
420
+ const fragmentCreate = o.workflowId ? '0' : '1';
421
+ const current = await client.post(`${baseUrl}${TABLE_API}/getAuthRespTableDetailSet`, {
422
+ baseId: o.baseId, sourceId: hostAuthRespId, fragmentCreate, canEdit: 1, isReadOnly: 0,
423
+ });
424
+ assertSuccess(current, '读取宿主权责表');
425
+ const design = resultData(current) || {};
426
+ const columns = completeDesignColumns(design);
427
+ const rows = design.rows || [];
428
+ const columnName = `pubNode-${ref.id}`;
429
+ if (columns.some((c) => c.name === columnName))
430
+ throw new Error(`权责表“${ref.name}”已经加入宿主设计`);
431
+ const checked = await client.post(`${baseUrl}${TABLE_API}/checkAuthRespRef`, [{ sourceId: String(ref.id), sourceName: String(ref.name) }]);
432
+ assertSuccess(checked, '校验权责表引用关系');
433
+ const addColIndex = columns.findIndex((c) => c.name === 'addCol');
434
+ const refColumn = { name: columnName, itemType: 'CUSTOM', resizable: true, width: 115, pubNodeInfo: {
435
+ id: String(ref.id), name: String(ref.name), arDesc: String(ref.arDesc || ''), versionNum: Number(ref.versionNum || 1),
436
+ baseId: String(ref.baseId), fragmentCreate: 1, addMethod: '2',
437
+ } };
438
+ columns.splice(addColIndex >= 0 ? addColIndex : columns.length, 0, refColumn);
439
+ for (const path of ref.paths) {
440
+ const row = path.rowKey !== undefined
441
+ ? rows.find((r) => String(r.rowKey) === String(path.rowKey))
442
+ : rows.find((r) => String(r.eventColumn) === String(path.branch));
443
+ if (!row)
444
+ throw new Error(`未找到引用路径指定的分支: ${path.branch ?? path.rowKey}`);
445
+ row[columnName] = { nodeInfo: [{ nodeId: '', pubNodeId: columnName, nodeName: String(ref.name),
446
+ approveNum: Number(path.order).toFixed(2), addMethod: '2', ruleIds: '', ruleDesc: '', ruleType: '1', baseId: String(ref.baseId) }] };
447
+ }
448
+ const payload = { ...design, baseId: o.baseId, sourceId: hostAuthRespId, columns, rows,
449
+ saveAsType: '', hasUpdate: '1', fragmentCreate, ...(o.workflowId ? { refWorkflowId: o.workflowId } : {}) };
450
+ const saved = await client.post(`${baseUrl}${TABLE_API}/saveAuthRespTableDetailSet`, payload);
451
+ assertSuccess(saved, '保存嵌套权责表');
452
+ console.log(JSON.stringify({ hostAuthRespId, referenceId: String(ref.id), branches: ref.paths.length, design: resultData(saved) }, null, 2));
453
+ });
454
+ reference.command('remove')
455
+ .description('从宿主权责表的所有分支及节点列中移除嵌套权责表')
456
+ .argument('<hostAuthRespId>', '宿主权责表 sourceId')
457
+ .argument('<referenceId>', '被引用权责表 sourceId')
458
+ .requiredOption('--base-id <id>', '宿主权责表 baseId')
459
+ .option('--workflow-id <id>', '宿主权责表所属流程 ID')
460
+ .action(async (hostAuthRespId, referenceId, o) => {
461
+ const opts = program.opts();
462
+ const auth = await AuthSession.fromOptions(opts);
463
+ if (!auth)
464
+ throw new Error('无法加载认证');
465
+ const client = new ApiClient(auth);
466
+ const baseUrl = auth.getBaseUrl();
467
+ const fragmentCreate = o.workflowId ? '0' : '1';
468
+ const current = await client.post(`${baseUrl}${TABLE_API}/getAuthRespTableDetailSet`, { baseId: o.baseId, sourceId: hostAuthRespId, fragmentCreate, canEdit: 1, isReadOnly: 0 });
469
+ assertSuccess(current, '读取宿主权责表');
470
+ const design = resultData(current) || {};
471
+ const columnName = `pubNode-${referenceId}`;
472
+ design.columns = completeDesignColumns(design).filter((c) => c.name !== columnName);
473
+ for (const row of design.rows || [])
474
+ delete row[columnName];
475
+ const saved = await client.post(`${baseUrl}${TABLE_API}/saveAuthRespTableDetailSet`, { ...design, baseId: o.baseId,
476
+ sourceId: hostAuthRespId, saveAsType: '', hasUpdate: '1', fragmentCreate, ...(o.workflowId ? { refWorkflowId: o.workflowId } : {}) });
477
+ assertSuccess(saved, '移除嵌套权责表');
478
+ console.log(JSON.stringify({ hostAuthRespId, referenceId, removed: true }, null, 2));
479
+ });
480
+ root.command('save-design')
481
+ .description('保存节点列与分支路径设计(JSON 使用 read 的结构)')
482
+ .argument('<authRespId>', '权责表 ID')
483
+ .requiredOption('--config <json|@file>', '设计 JSON,建议使用 @design.json')
484
+ .action(async (authRespId, o) => {
485
+ const opts = program.opts();
486
+ const auth = await AuthSession.fromOptions(opts);
487
+ if (!auth)
488
+ throw new Error('无法加载认证');
489
+ const design = readJsonArg(o.config);
490
+ const rows = Array.isArray(design.rows) ? design.rows.filter((row) => {
491
+ const active = String(row?.eventColumn || '').trim() || String(row?.condition || '').trim() || String(row?.conditionKey || '').trim();
492
+ return active && String(row?.isAddRow || '') !== '1';
493
+ }) : [];
494
+ if (!Array.isArray(design.columns) || design.columns.length === 0)
495
+ throw new Error('config.columns 不能为空');
496
+ for (const [index, row] of rows.entries()) {
497
+ if (!String(row.eventColumn || '').trim())
498
+ throw new Error(`第 ${index + 1} 个有效分支缺少分支场景说明 eventColumn`);
499
+ if (!String(row.conditionKey || '').trim())
500
+ throw new Error(`第 ${index + 1} 个有效分支缺少条件 conditionKey`);
501
+ }
502
+ const payload = {
503
+ ...design,
504
+ sourceId: String(design.sourceId || authRespId),
505
+ rows,
506
+ fragmentCreate: String(design.fragmentCreate ?? '1'),
507
+ hasUpdate: String(design.hasUpdate ?? '1'),
508
+ };
509
+ const client = new ApiClient(auth);
510
+ const result = await client.post(`${auth.getBaseUrl()}${TABLE_API}/saveAuthRespTableDetailSet`, payload);
511
+ assertSuccess(result, '保存权责表设计');
512
+ const verify = await client.post(`${auth.getBaseUrl()}${TABLE_API}/getAuthRespTableDetailSet`, {
513
+ authRespId: payload.sourceId, sourceId: payload.sourceId, versionNum: 0,
514
+ fragmentCreate: payload.fragmentCreate, refWorkflowId: payload.refWorkflowId,
515
+ });
516
+ assertSuccess(verify, '回读权责表设计');
517
+ console.log(JSON.stringify({ authRespId: payload.sourceId, saved: true, design: resultData(verify) }, null, 2));
518
+ });
519
+ const variable = root.command('variable').description('权责表变量管理(变量先创建,条件再引用)');
520
+ variable.command('list')
521
+ .argument('<authRespId>', '权责表 ID')
522
+ .action(async (authRespId) => {
523
+ const opts = program.opts();
524
+ const auth = await AuthSession.fromOptions(opts);
525
+ if (!auth)
526
+ throw new Error('无法加载认证');
527
+ const client = new ApiClient(auth);
528
+ const result = await client.post(`${auth.getBaseUrl()}${VARIABLE_API}/getAllVariable`, {
529
+ belongScene: '3', belongSceneId: authRespId, pageSize: 0, current: 1,
530
+ });
531
+ assertSuccess(result, '查询权责表变量');
532
+ console.log(JSON.stringify(resultData(result), null, 2));
533
+ });
534
+ variable.command('add')
535
+ .description('新增权责表变量;类型码使用 wf_string/wf_number/wf_select/wf_browser/wf_browser_relate')
536
+ .argument('<authRespId>', '权责表 ID')
537
+ .argument('<name>', '变量名称')
538
+ .argument('<type>', '变量类型码')
539
+ .option('--second-type <type>', '浏览变量二级类型', 'wf_hrmresource')
540
+ .option('--detail', '明细变量')
541
+ .option('--option-template <json|@file>', '选项模板对象 {id,name}')
542
+ .option('--relate-browser <json|@file>', '关联浏览类型数组')
543
+ .action(async (authRespId, name, type, o) => {
544
+ const allowed = ['wf_string', 'wf_number', 'wf_select', 'wf_browser', 'wf_browser_relate'];
545
+ if (!allowed.includes(type))
546
+ throw new Error(`变量类型不支持: ${type};当前支持 ${allowed.join(', ')}`);
547
+ const opts = program.opts();
548
+ const auth = await AuthSession.fromOptions(opts);
549
+ if (!auth)
550
+ throw new Error('无法加载认证');
551
+ const id = String(-Date.now() * 1000 - Math.floor(Math.random() * 1000));
552
+ const payload = {
553
+ varName: name, hasEditAuth: true, hasRespAuth: true, enable: 1,
554
+ varSecondType: o.secondType, id, isDetail: o.detail ? '1' : '0',
555
+ varFirstType: type, varSymbol: '', belongScene: '3', belongSceneId: authRespId,
556
+ varNameMultiLangParam: { tablefield: 'wfp_variables.var_name', targetId: id, needRecodInputValue: true },
557
+ };
558
+ if (o.optionTemplate)
559
+ payload.optionTemplate = readJsonArg(o.optionTemplate);
560
+ if (o.relateBrowser)
561
+ payload.relateBrowser = readJsonArg(o.relateBrowser);
562
+ const client = new ApiClient(auth);
563
+ const result = await client.post(`${auth.getBaseUrl()}${VARIABLE_API}/saveVariable`, payload);
564
+ assertSuccess(result, '新增权责表变量');
565
+ console.log(JSON.stringify({ authRespId, variableId: id, name, type, data: resultData(result) }, null, 2));
566
+ });
567
+ }
568
+ //# sourceMappingURL=workflow-auth-resp.js.map