weaver-e10-builder 1.1.9 → 1.2.3

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