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,666 @@
1
+ import { readFileSync, writeFileSync } from 'node:fs';
2
+ import { AuthSession } from '../core/auth.js';
3
+ import { ApiClient } from '../core/client.js';
4
+ import { ReportHttp } from '../services/report/http.js';
5
+ import { buildFromSpec } from '../services/report/build.js';
6
+ import { findFormInApp, resolveFormWithPrompt, suggestFormsInApp } from '../services/report/forms.js';
7
+ import { renderReport } from '../services/report/render.js';
8
+ import { createReport, getBaseInfo, getReportDevInfo, listReportModels, listReports } from '../services/report/reports.js';
9
+ import { deleteDataset, getAggregation, getSort, isDatasetUsed, listDatasets, previewDataset, renameDataset, resolveDataset, replaceDataset, saveAggregation, saveSort, } from '../services/report/dataset.js';
10
+ import { fieldKeyOf } from '../services/report/workbook.js';
11
+ import { LEGACY_FILTER_TYPES, LEFT_FILTER_TYPES } from '../services/report/sources.js';
12
+ /**
13
+ * 建 ReportHttp 并执行。
14
+ *
15
+ * `new ApiClient(auth, 1)` —— **写接口不自动重试**。报表的建表/落库都不是幂等操作,
16
+ * 网络层失败后重放会直接多出一张报表或一份重复配置。
17
+ */
18
+ export async function withReport(program, appId, fn) {
19
+ const opts = program.opts();
20
+ const auth = await AuthSession.fromOptions(opts);
21
+ if (!auth) {
22
+ console.error('无法加载认证信息');
23
+ process.exitCode = 1;
24
+ return undefined;
25
+ }
26
+ const client = new ApiClient(auth, 1);
27
+ return fn(new ReportHttp(client, appId), !!opts.json);
28
+ }
29
+ function out(json, text, payload) {
30
+ if (json && payload !== undefined)
31
+ console.log(JSON.stringify(payload, null, 2));
32
+ else
33
+ console.log(text);
34
+ }
35
+ export function registerReportCommands(program) {
36
+ const report = program.command('report').description('设计器报表(数据集 / 布局 / 查询条件 / 权限 / 版本)');
37
+ // ── 建表 ──────────────────────────────────────────────────
38
+ report
39
+ .command('build')
40
+ .description('按声明式 spec 一步建表:定源 → 字段预检 → 建表 → 挂数据集 → 落库 → 回读')
41
+ .requiredOption('--spec <file>', 'spec JSON 文件路径')
42
+ .option('--dry-run', '只做定源与字段预检,不建表')
43
+ .option('--form-confirmed', '用户已确认表名(允许模糊命中)')
44
+ .option('--source-id <id>', '用户已确认的表单 id')
45
+ .option('--field-confirmed [titles]', '确认「文案与字段真实显示名不同但有意如此」的列;不带值 = 全部确认')
46
+ .action(async (raw) => {
47
+ let spec;
48
+ try {
49
+ spec = JSON.parse(readFileSync(raw.spec, 'utf-8'));
50
+ }
51
+ catch (e) {
52
+ console.error(`读取 spec 失败:${e.message}`);
53
+ process.exitCode = 1;
54
+ return;
55
+ }
56
+ const fc = raw.fieldConfirmed;
57
+ const fieldConfirmed = fc === true
58
+ ? true
59
+ : typeof fc === 'string'
60
+ ? fc.split(/[,,]/).map((s) => s.trim()).filter(Boolean)
61
+ : undefined;
62
+ await withReport(program, String(spec.appId || ''), async (http, json) => {
63
+ const outcome = await buildFromSpec(http, {
64
+ spec,
65
+ sourceId: raw.sourceId,
66
+ formConfirmed: !!raw.formConfirmed,
67
+ fieldConfirmed,
68
+ dryRun: !!raw.dryRun,
69
+ });
70
+ renderBuildOutcome(outcome, json);
71
+ });
72
+ });
73
+ report
74
+ .command('find')
75
+ .description('应用内查找表单(定源);非完全精准匹配会列出候选让用户确认')
76
+ .argument('<appId>', '应用 ID')
77
+ .argument('[name]', '表单名')
78
+ .option('--list', '列出应用内全部表单')
79
+ .option('--suggest <keywords>', '按关键词给候选')
80
+ .option('--json', 'JSON 输出')
81
+ .action(async (appId, name, raw) => {
82
+ await withReport(program, appId, async (http, json) => {
83
+ const r = raw.list || (!name && !raw.suggest)
84
+ ? await suggestFormsInApp(http, appId, raw.suggest ? [raw.suggest] : [])
85
+ : raw.suggest
86
+ ? await suggestFormsInApp(http, appId, [raw.suggest])
87
+ : await findFormInApp(http, appId, name);
88
+ if (json) {
89
+ console.log(JSON.stringify(r, null, 2));
90
+ return;
91
+ }
92
+ if (r.id && !r.needConfirm) {
93
+ console.log(`命中:${r.name} sourceId=${r.id}`);
94
+ return;
95
+ }
96
+ console.log(`${r.message || '需要确认'}`);
97
+ for (const c of r.candidates || [])
98
+ console.log(` - ${c.name} (${c.id})`);
99
+ process.exitCode = r.id ? 0 : 3;
100
+ });
101
+ });
102
+ // ── 创建模式 ──────────────────────────────────────────────
103
+ const create = report.command('create').description('新建报表(空白 / 模板 / 快速构建)');
104
+ create
105
+ .command('models')
106
+ .description('列出可用的报表模板')
107
+ .action(async () => {
108
+ await withReport(program, '', async (http, json) => {
109
+ const models = await listReportModels(http);
110
+ if (json)
111
+ console.log(JSON.stringify(models, null, 2));
112
+ else
113
+ models.forEach((m) => console.log(`${m.id}\t${m.name}`));
114
+ });
115
+ });
116
+ create
117
+ .command('blank')
118
+ .description('新建空白报表')
119
+ .requiredOption('--app-id <id>', '应用 ID')
120
+ .requiredOption('--name <name>', '报表名')
121
+ .action(async (raw) => {
122
+ await withReport(program, raw.appId, async (http, json) => {
123
+ const id = await createReport(http, { appId: raw.appId, name: raw.name });
124
+ out(json, `已创建:${raw.name}\n设计器地址:${http.designerUrl(id)}`, {
125
+ ok: true,
126
+ reportId: id,
127
+ designerUrl: http.designerUrl(id),
128
+ });
129
+ });
130
+ });
131
+ create
132
+ .command('template')
133
+ .description('按模板新建报表')
134
+ .requiredOption('--app-id <id>', '应用 ID')
135
+ .requiredOption('--name <name>', '报表名')
136
+ .requiredOption('--model-id <id>', '模板 ID(report models 可查)')
137
+ .action(async (raw) => {
138
+ await withReport(program, raw.appId, async (http, json) => {
139
+ const id = await createReport(http, {
140
+ appId: raw.appId,
141
+ name: raw.name,
142
+ reportModel: String(raw.modelId),
143
+ });
144
+ out(json, `已按模板创建:${raw.name}\n设计器地址:${http.designerUrl(id)}`, {
145
+ ok: true,
146
+ reportId: id,
147
+ designerUrl: http.designerUrl(id),
148
+ });
149
+ });
150
+ });
151
+ create
152
+ .command('quick')
153
+ .description('快速构建(列表式):按 quicklyParam 生成')
154
+ .requiredOption('--app-id <id>', '应用 ID')
155
+ .requiredOption('--name <name>', '报表名')
156
+ .requiredOption('--quickly-file <file>', 'quicklyParam JSON 文件')
157
+ .action(async (raw) => {
158
+ const quicklyParam = JSON.parse(readFileSync(raw.quicklyFile, 'utf-8'));
159
+ delete quicklyParam._comment;
160
+ await withReport(program, raw.appId, async (http, json) => {
161
+ const id = await createReport(http, { appId: raw.appId, name: raw.name, quicklyParam });
162
+ out(json, `已创建:${raw.name}\n设计器地址:${http.designerUrl(id)}`, {
163
+ ok: true,
164
+ reportId: id,
165
+ designerUrl: http.designerUrl(id),
166
+ });
167
+ });
168
+ });
169
+ // ── 读取 ──────────────────────────────────────────────────
170
+ report
171
+ .command('read')
172
+ .argument('<reportId>', '报表 ID')
173
+ .option('--app-id <id>', '应用 ID')
174
+ .option('--fields', '只列字段记录')
175
+ .description('读报表基础信息与设计数据')
176
+ .action(async (reportId, raw) => {
177
+ await withReport(program, raw.appId || '', async (http, json) => {
178
+ const base = await getBaseInfo(http, reportId);
179
+ const appId = raw.appId || String(base.appId || '');
180
+ const dev = await getReportDevInfo(http, reportId);
181
+ const datasets = appId ? await listDatasets(http, reportId, appId) : [];
182
+ if (json) {
183
+ console.log(JSON.stringify({ base, datasets, fields: dev.fields }, null, 2));
184
+ return;
185
+ }
186
+ console.log(`报表:${base.name} (${reportId})`);
187
+ console.log(`应用:${appId} 分组:${base.groupId}`);
188
+ console.log(`数据集:${datasets.length}`);
189
+ datasets.forEach((d) => console.log(` - ${d.name} datasetId=${d.id} sourceId=${d.sourceId}`));
190
+ if (raw.fields) {
191
+ console.log(`字段记录:${(dev.fields || []).length}`);
192
+ (dev.fields || []).forEach((f) => console.log(` (${f.x},${f.y}) ${f.cellType}\t${f.text ?? ''}\t${f.name ?? ''}`));
193
+ }
194
+ console.log(`设计器地址:${http.designerUrl(reportId)}`);
195
+ });
196
+ });
197
+ report
198
+ .command('list')
199
+ .requiredOption('--app-id <id>', '应用 ID')
200
+ .option('--page-size <n>', '每页条数', '200')
201
+ .description('列出应用内的报表')
202
+ .action(async (raw) => {
203
+ await withReport(program, raw.appId, async (http, json) => {
204
+ const rows = await listReports(http, raw.appId, { pageSize: Number(raw.pageSize) });
205
+ if (json)
206
+ console.log(JSON.stringify(rows, null, 2));
207
+ else
208
+ rows.forEach((r) => console.log(`${r.id ?? r.reportId}\t${r.name ?? r.reportName}`));
209
+ });
210
+ });
211
+ report
212
+ .command('render')
213
+ .argument('<reportId>', '报表 ID')
214
+ .requiredOption('--app-id <id>', '应用 ID')
215
+ .option('--page-row-count <n>', '每页行数(会被自动压到安全上限)')
216
+ .option('--condition <json>', '查询条件 JSON', '{}')
217
+ .option('--dump <file>', '把渲染出的 workbook 写到文件(排查版面问题用)')
218
+ .option('--timeout <ms>', '超时毫秒', '60000')
219
+ .description('渲染报表并回读展开后的行列数(证明真跑得出来;撞 5 万格上限会给出收敛建议)')
220
+ .action(async (reportId, raw) => {
221
+ await withReport(program, raw.appId, async (http, json) => {
222
+ const r = await renderReport(http, {
223
+ reportId,
224
+ appId: raw.appId,
225
+ pageRowCount: raw.pageRowCount ? Number(raw.pageRowCount) : undefined,
226
+ condition: raw.condition,
227
+ timeoutMs: Number(raw.timeout) || 60000,
228
+ withWorkbook: !!raw.dump,
229
+ });
230
+ if (raw.dump && r.workbook) {
231
+ writeFileSync(raw.dump, JSON.stringify(r.workbook, null, 2), 'utf8');
232
+ }
233
+ if (json) {
234
+ const { workbook: _drop, ...rest } = r;
235
+ console.log(JSON.stringify(rest, null, 2));
236
+ }
237
+ else if (r.ok) {
238
+ console.log(`渲染成功:${r.rowCount} 行 × ${r.colCount} 列` +
239
+ (r.pageRowCount ? `(每页 ${r.pageRowCount} 行${r.pageRowCountCapped ? ',已封顶' : ''})` : '') +
240
+ ` ${r.ms}ms`);
241
+ if (raw.dump)
242
+ console.log(`workbook 已写入 ${raw.dump}`);
243
+ }
244
+ else {
245
+ console.error(`渲染失败:${r.msg || '无响应'}${r.code ? `(code=${r.code})` : ''}`);
246
+ if (r.hint)
247
+ console.error(` ${r.hint}`);
248
+ }
249
+ if (!r.ok)
250
+ process.exitCode = 1;
251
+ });
252
+ });
253
+ report
254
+ .command('delete')
255
+ .argument('<reportId>', '报表 ID')
256
+ .option('--app-id <id>', '应用 ID')
257
+ .description('删除报表(进回收站,可还原)')
258
+ .action(async (reportId, raw) => {
259
+ await withReport(program, raw.appId || '', async (http) => {
260
+ const { deleteReport } = await import('../services/report/reports.js');
261
+ const r = await deleteReport(http, reportId, raw.appId);
262
+ if (r?.code !== 200) {
263
+ console.error(`删除失败:${r?.msg || '无响应'}`);
264
+ process.exitCode = 1;
265
+ return;
266
+ }
267
+ console.log(`已删除报表 ${reportId}(可在回收站还原)`);
268
+ });
269
+ });
270
+ // ── 关联字段推断 / 预聚合 ──────────────────────────────────
271
+ report
272
+ .command('join-suggest')
273
+ .requiredOption('--app-id <id>', '应用 ID')
274
+ .option('--parent-source <id>', '主表 sourceId')
275
+ .option('--child-source <id>', '子表 sourceId')
276
+ .option('--parent-form <name>', '主表名(与 --parent-source 二选一)')
277
+ .option('--child-form <name>', '子表名(与 --child-source 二选一)')
278
+ .option('--top <n>', '候选个数', '5')
279
+ .description('推断两张表之间的关联字段(结果必须由用户确认)')
280
+ .action(async (raw) => {
281
+ const { suggestJoinFields } = await import('../services/report/analyze.js');
282
+ await withReport(program, raw.appId, async (http, json) => {
283
+ const resolve = async (idOpt, nameOpt) => {
284
+ if (idOpt)
285
+ return String(idOpt);
286
+ if (!nameOpt)
287
+ throw new Error('需要 --parent-source/--child-source 或 --parent-form/--child-form');
288
+ const hit = await findFormInApp(http, raw.appId, String(nameOpt));
289
+ if (!hit.id) {
290
+ throw new Error(`未找到表单「${nameOpt}」${hit.candidates?.length ? `;候选:${hit.candidates.map((c) => c.name).join('、')}` : ''}`);
291
+ }
292
+ return hit.id;
293
+ };
294
+ const p = await resolve(raw.parentSource, raw.parentForm);
295
+ const c = await resolve(raw.childSource, raw.childForm);
296
+ const r = await suggestJoinFields(http, raw.appId, p, c, { top: Number(raw.top) });
297
+ if (json) {
298
+ console.log(JSON.stringify(r, null, 2));
299
+ return;
300
+ }
301
+ console.log(r.message);
302
+ r.candidates.forEach((x, i) => console.log(` ${i + 1}. ${x.parent.text}(${x.parent.name}) ↔ ${x.child.text}(${x.child.name}) [${x.score}] ${x.reason}`));
303
+ if (r.ambiguous)
304
+ console.log('⚠️ 前两名分差很小,务必让用户选择,不要替用户拿主意。');
305
+ if (!r.candidates.length)
306
+ process.exitCode = 3;
307
+ });
308
+ });
309
+ const py = report.command('py').description('分析类辅助(原为 Python,已内置)');
310
+ py.command('left-filter')
311
+ .requiredOption('--parent-ds <id>', '父侧 datasetId')
312
+ .requiredOption('--parent-src <id>', '父侧 sourceId')
313
+ .requiredOption('--parent-field <name>', '父侧字段系统名(field_xxx)')
314
+ .requiredOption('--child-ds <id>', '子侧 datasetId')
315
+ .requiredOption('--child-src <id>', '子侧 sourceId')
316
+ .requiredOption('--child-field <name>', '子侧字段系统名(field_xxx)')
317
+ .option('--type <t>', '比较方式(TitleCase,默认 Equals)', 'Equals')
318
+ .description('算跨数据集父格筛选:输出 subordination + leftFilterField(设计器按三段式 fieldKey 回显)')
319
+ .action((raw) => {
320
+ const type = String(raw.type || 'Equals');
321
+ if (LEGACY_FILTER_TYPES.has(type)) {
322
+ console.error(`type「${type}」是简写,平台不认;请用 TitleCase(Equals / NotContain / Null…)。`);
323
+ process.exitCode = 1;
324
+ return;
325
+ }
326
+ if (!LEFT_FILTER_TYPES.has(type)) {
327
+ console.error(`type「${type}」不在白名单内。有效值:${[...LEFT_FILTER_TYPES].join(' / ')}`);
328
+ process.exitCode = 1;
329
+ return;
330
+ }
331
+ const pk = fieldKeyOf(raw.parentDs, raw.parentSrc, raw.parentField);
332
+ const ck = fieldKeyOf(raw.childDs, raw.childSrc, raw.childField);
333
+ const payload = {
334
+ subordination: [pk, ck],
335
+ leftFilterField: [{ parentField: pk, currentField: ck, type, id: ck }],
336
+ };
337
+ console.log(JSON.stringify(payload, null, 2));
338
+ });
339
+ py.command('preagg')
340
+ .option('--fields <file>', '字段 JSON(数组,或含 fieldsKey/fields 的对象)')
341
+ .option('--layout <file>', '布局单元格 JSON(可选)')
342
+ .option('--report-id <id>', '直接从线上报表读字段与布局')
343
+ .option('--app-id <id>', '应用 ID')
344
+ .description('判断预聚合能否开启(命中任一阻断条件即建议关闭)')
345
+ .action(async (raw) => {
346
+ const { checkPreaggregate } = await import('../services/report/analyze.js');
347
+ const normalize = (j) => {
348
+ if (Array.isArray(j))
349
+ return j;
350
+ for (const k of ['fieldsKey', 'originFields', 'fields', 'data']) {
351
+ if (Array.isArray(j?.[k]))
352
+ return j[k];
353
+ }
354
+ return [];
355
+ };
356
+ let fields = [];
357
+ let layout = [];
358
+ if (raw.reportId) {
359
+ await withReport(program, raw.appId || '', async (http, json) => {
360
+ const dev = await getReportDevInfo(http, raw.reportId);
361
+ const r = checkPreaggregate(dev.fields || [], dev.fields || []);
362
+ if (json)
363
+ console.log(JSON.stringify(r, null, 2));
364
+ else {
365
+ console.log(`建议 dataPreAgg = ${r.dataPreAgg}`);
366
+ r.reasons.forEach((x) => console.log(` 阻断:${x}`));
367
+ console.log(`sheetConfig = ${r.sheetConfig}`);
368
+ }
369
+ if (!r.dataPreAgg)
370
+ process.exitCode = 2;
371
+ });
372
+ return;
373
+ }
374
+ if (raw.fields)
375
+ fields = normalize(JSON.parse(readFileSync(raw.fields, 'utf-8')));
376
+ if (raw.layout)
377
+ layout = normalize(JSON.parse(readFileSync(raw.layout, 'utf-8')));
378
+ const r = checkPreaggregate(fields, layout);
379
+ console.log(JSON.stringify(r, null, 2));
380
+ if (!r.dataPreAgg)
381
+ process.exitCode = 2;
382
+ });
383
+ registerDatasetCommands(report, program);
384
+ return report;
385
+ }
386
+ /** 把 build 的四类结果翻译成输出与退出码。 */
387
+ function renderBuildOutcome(o, json) {
388
+ if (o.kind === 'need-form') {
389
+ if (json)
390
+ console.log(JSON.stringify(o, null, 2));
391
+ else {
392
+ console.log(`【需要确认表】${o.message}`);
393
+ if (o.confirmPrompt)
394
+ console.log(o.confirmPrompt);
395
+ o.candidates.forEach((c) => console.log(` - ${c.name} (${c.id})`));
396
+ console.log(`未创建任何报表。确认后复跑:${o.next.cli}`);
397
+ }
398
+ process.exitCode = 3;
399
+ return;
400
+ }
401
+ if (o.kind === 'need-field') {
402
+ if (json)
403
+ console.log(JSON.stringify(o, null, 2));
404
+ else {
405
+ console.log(`【需要指定字段】${o.message}`);
406
+ if (o.sourceKey)
407
+ console.log(` 未命中的源:${o.sourceKey}(${o.formName})`);
408
+ o.unmatched.forEach((u) => {
409
+ console.log(` - 列「${u.column}」${u.reason}`);
410
+ if (u.candidates?.length) {
411
+ console.log(` 候选:${u.candidates.map((c) => `${c.text}(${c.name})`).join('、')}`);
412
+ }
413
+ });
414
+ console.log(`确认后复跑:${o.next.cli}`);
415
+ }
416
+ process.exitCode = 4;
417
+ return;
418
+ }
419
+ if (o.kind === 'dry-run') {
420
+ if (json)
421
+ console.log(JSON.stringify(o, null, 2));
422
+ else {
423
+ console.log(`[预演] 表单:${o.formName} sourceId=${o.sourceId} (${o.match})`);
424
+ (o.sources || []).slice(1).forEach((s2) => console.log(` 子源 [${s2.key}] ${s2.formName} sourceId=${s2.sourceId} · ${s2.columns.length} 列`));
425
+ (o.crossFilters || []).forEach((cf) => console.log(` 跨源:列「${cf.column}」${cf.child} ← ${cf.parent}`));
426
+ (o.bindings || []).forEach((b) => console.log(` ${b.column} → ${b.displayText} [${b.field}]`));
427
+ console.log('未写入任何数据。');
428
+ }
429
+ return;
430
+ }
431
+ if (json) {
432
+ console.log(JSON.stringify(o, null, 2));
433
+ }
434
+ else {
435
+ console.log(`报表:${o.name} (${o.reportId})`);
436
+ const srcs = o.sources?.length ? o.sources : null;
437
+ if (srcs) {
438
+ console.log(`数据源:${srcs.length} 个`);
439
+ srcs.forEach((s2, i) => console.log(` ${i === 0 ? '父' : '子'} [${s2.key || '主表'}] ${s2.formName} → 数据集 ${s2.datasetName} (${s2.datasetId})` +
440
+ `${s2.datasetReused ? ' [复用]' : ''} · ${s2.columns.length} 列`));
441
+ }
442
+ else {
443
+ console.log(`数据源:${o.formName} → 数据集 ${o.datasetName} (${o.datasetId})${o.datasetReused ? ' [复用]' : ''}`);
444
+ }
445
+ if (o.crossFilters?.length) {
446
+ console.log(`跨源父格筛选:${o.crossFilters.length} 处`);
447
+ o.crossFilters.forEach((cf) => console.log(` (${cf.cell}) ${cf.child} ← ${cf.parent} ${cf.type}`));
448
+ console.log(`带缓存保存:${o.cacheSave === 'ok' ? '已完成(预聚合已关)' : o.cacheSave === 'failed' ? '失败(见警告)' : '跳过'}`);
449
+ }
450
+ console.log(`绑定:${o.fieldBindings.length} 列 · 字段记录 ${o.fields} 条`);
451
+ o.fieldBindings.forEach((b) => console.log(` ${b.column} → ${b.displayText} [${b.field}]${b.mismatchConfirmed ? '(文案已确认)' : ''}`));
452
+ for (const w of o.warnings)
453
+ console.error(`注意:${w}`);
454
+ console.log(`设计器地址:${o.designerUrl}`);
455
+ }
456
+ if (o.warnings.length)
457
+ process.exitCode = 2;
458
+ }
459
+ function registerDatasetCommands(report, program) {
460
+ const ds = report.command('dataset').description('数据集侧栏操作(重命名 / 聚合 / 排序 / 替换 / 移除 / 预览)');
461
+ ds.command('list')
462
+ .argument('<reportId>', '报表 ID')
463
+ .requiredOption('--app-id <id>', '应用 ID')
464
+ .description('列出报表已挂载的数据集')
465
+ .action(async (reportId, raw) => {
466
+ await withReport(program, raw.appId, async (http, json) => {
467
+ const rows = await listDatasets(http, reportId, raw.appId);
468
+ if (json)
469
+ console.log(JSON.stringify(rows, null, 2));
470
+ else
471
+ rows.forEach((d) => console.log(`${d.id}\t${d.name}\tsourceId=${d.sourceId}`));
472
+ });
473
+ });
474
+ ds.command('add')
475
+ .argument('<reportId>', '报表 ID')
476
+ .requiredOption('--app-id <id>', '应用 ID')
477
+ .option('--form <name>', '表单名(精确匹配才自动绑定)')
478
+ .option('--source-id <id>', '已确认的表单 ID(与 --form 二选一)')
479
+ .option('--source-type <type>', '注册契约:LOGIC(普通应用,默认)/ form(共享表)/ ETEAMS(SQL 视图)')
480
+ .option('--source-group <g>', '注册分组,默认 weaver-ebuilder-form-service')
481
+ .option('--source-name <name>', '数据集显示名(缺后缀会自动补)')
482
+ .option('--form-confirmed', '已确认表名(允许模糊命中)')
483
+ .description('给已有报表**再挂一个数据源**(同源只挂一次;挂完在数据源面板里手动布局或用 report build 的多源 spec)')
484
+ .action(async (reportId, raw) => {
485
+ await withReport(program, raw.appId, async (http, json) => {
486
+ if (!raw.form && !raw.sourceId) {
487
+ console.error('需要 --form 或 --source-id。');
488
+ process.exitCode = 1;
489
+ return;
490
+ }
491
+ const gate = await resolveFormWithPrompt(http, raw.appId, String(raw.form || ''), {
492
+ sourceId: raw.sourceId,
493
+ confirmedSourceId: raw.sourceId,
494
+ formConfirmed: !!raw.formConfirmed,
495
+ suggestOnly: !raw.form && !raw.sourceId,
496
+ });
497
+ if (gate.needConfirm) {
498
+ if (json)
499
+ console.log(JSON.stringify({ action: 'confirm_form', ...gate }, null, 2));
500
+ else {
501
+ console.log(`【需要确认表名】${gate.message || gate.reason}`);
502
+ (gate.candidates || []).forEach((c) => console.log(` - ${c.name} (${c.id})`));
503
+ }
504
+ process.exitCode = 3;
505
+ return;
506
+ }
507
+ const sourceId = String(gate.form.id);
508
+ const ds = await resolveDataset(http, {
509
+ reportId,
510
+ appId: raw.appId,
511
+ sourceId,
512
+ sourceType: raw.sourceType,
513
+ sourceGroup: raw.sourceGroup,
514
+ sourceName: raw.sourceName || gate.form.name,
515
+ });
516
+ if (json)
517
+ console.log(JSON.stringify({ form: gate.form, dataset: ds }, null, 2));
518
+ else {
519
+ console.log(`已挂载:${gate.form.name} → 数据集 ${ds.name} (${ds.id})` +
520
+ `${ds.reused ? ' [复用已有]' : ' [新建]'}`);
521
+ if (ds.duplicates?.length) {
522
+ console.log(`注意:同源存在重复挂载 ${ds.duplicates.join(', ')},建议清理。`);
523
+ }
524
+ console.log(`设计器地址:${http.designerUrl(reportId)}`);
525
+ }
526
+ });
527
+ });
528
+ ds.command('rename')
529
+ .requiredOption('--dataset-id <id>', '数据集 ID')
530
+ .requiredOption('--name <name>', '新显示名')
531
+ .option('--name-label-id <id>', '多语言 ID', '-1')
532
+ .description('改数据集显示名')
533
+ .action(async (raw) => {
534
+ await withReport(program, '', async (http) => {
535
+ const r = await renameDataset(http, raw.datasetId, raw.name, raw.nameLabelId);
536
+ if (r?.code !== 200) {
537
+ console.error(`重命名失败:${r?.msg || '无响应'}`);
538
+ process.exitCode = 1;
539
+ return;
540
+ }
541
+ console.log(`已重命名:${raw.name}`);
542
+ });
543
+ });
544
+ ds.command('preview')
545
+ .requiredOption('--dataset-id <id>', '数据集 ID')
546
+ .description('预览数据集数据')
547
+ .action(async (raw) => {
548
+ await withReport(program, '', async (http) => {
549
+ console.log(JSON.stringify(await previewDataset(http, raw.datasetId), null, 2));
550
+ });
551
+ });
552
+ ds.command('check-used')
553
+ .requiredOption('--report-id <id>', '报表 ID')
554
+ .requiredOption('--dataset-id <id>', '数据集 ID')
555
+ .description('检查数据集是否仍被画布引用')
556
+ .action(async (raw) => {
557
+ await withReport(program, '', async (http, json) => {
558
+ const used = await isDatasetUsed(http, raw.reportId, raw.datasetId);
559
+ out(json, used ? '仍被引用,不能直接移除' : '未被引用,可以移除', { used, canDelete: !used });
560
+ if (used)
561
+ process.exitCode = 1;
562
+ });
563
+ });
564
+ ds.command('delete')
565
+ .requiredOption('--report-id <id>', '报表 ID')
566
+ .requiredOption('--dataset-id <id>', '数据集 ID')
567
+ .option('--force', '跳过引用检查,强制移除')
568
+ .description('从报表移除数据集')
569
+ .action(async (raw) => {
570
+ await withReport(program, '', async (http) => {
571
+ if (!raw.force) {
572
+ const used = await isDatasetUsed(http, raw.reportId, raw.datasetId);
573
+ if (used) {
574
+ console.error('数据集仍被画布引用,无法移除。先清掉单元格上的字段引用,或用 --force 强制移除。');
575
+ process.exitCode = 1;
576
+ return;
577
+ }
578
+ }
579
+ const r = await deleteDataset(http, raw.reportId, raw.datasetId);
580
+ if (r?.code !== 200) {
581
+ console.error(`移除失败:${r?.msg || '无响应'}`);
582
+ process.exitCode = 1;
583
+ return;
584
+ }
585
+ console.log(`已移除数据集 ${raw.datasetId}`);
586
+ });
587
+ });
588
+ const agg = ds.command('agg').description('数据集预聚合');
589
+ agg.command('get').requiredOption('--dataset-id <id>', '数据集 ID').action(async (raw) => {
590
+ await withReport(program, '', async (http) => {
591
+ console.log(JSON.stringify(await getAggregation(http, raw.datasetId), null, 2));
592
+ });
593
+ });
594
+ agg
595
+ .command('save')
596
+ .requiredOption('--dataset-id <id>', '数据集 ID')
597
+ .requiredOption('--file <file>', '聚合配置 JSON')
598
+ .action(async (raw) => {
599
+ const data = JSON.parse(readFileSync(raw.file, 'utf-8'));
600
+ await withReport(program, '', async (http) => {
601
+ const r = await saveAggregation(http, raw.datasetId, data);
602
+ if (r?.code !== 200) {
603
+ console.error(`保存失败:${r?.msg || '无响应'}`);
604
+ process.exitCode = 1;
605
+ return;
606
+ }
607
+ console.log('已保存聚合配置');
608
+ });
609
+ });
610
+ agg
611
+ .command('clear')
612
+ .requiredOption('--dataset-id <id>', '数据集 ID')
613
+ .action(async (raw) => {
614
+ await withReport(program, '', async (http) => {
615
+ await saveAggregation(http, raw.datasetId, []);
616
+ console.log('已清空聚合配置');
617
+ });
618
+ });
619
+ const sort = ds.command('sort').description('数据集排序');
620
+ sort.command('get').requiredOption('--dataset-id <id>', '数据集 ID').action(async (raw) => {
621
+ await withReport(program, '', async (http) => {
622
+ console.log(JSON.stringify(await getSort(http, raw.datasetId), null, 2));
623
+ });
624
+ });
625
+ sort
626
+ .command('save')
627
+ .requiredOption('--dataset-id <id>', '数据集 ID')
628
+ .requiredOption('--file <file>', '排序配置 JSON')
629
+ .action(async (raw) => {
630
+ const data = JSON.parse(readFileSync(raw.file, 'utf-8'));
631
+ await withReport(program, '', async (http) => {
632
+ const r = await saveSort(http, raw.datasetId, data);
633
+ if (r?.code !== 200) {
634
+ console.error(`保存失败:${r?.msg || '无响应'}`);
635
+ process.exitCode = 1;
636
+ return;
637
+ }
638
+ console.log('已保存排序配置');
639
+ });
640
+ });
641
+ sort
642
+ .command('clear')
643
+ .requiredOption('--dataset-id <id>', '数据集 ID')
644
+ .action(async (raw) => {
645
+ await withReport(program, '', async (http) => {
646
+ await saveSort(http, raw.datasetId, []);
647
+ console.log('已清空排序配置');
648
+ });
649
+ });
650
+ ds.command('replace')
651
+ .requiredOption('--file <file>', '替换配置 JSON(含 fieldMap)')
652
+ .description('替换数据集(整表换源)')
653
+ .action(async (raw) => {
654
+ const body = JSON.parse(readFileSync(raw.file, 'utf-8'));
655
+ await withReport(program, '', async (http) => {
656
+ const id = await replaceDataset(http, body);
657
+ console.log(`已替换数据集,新 datasetId=${id}`);
658
+ });
659
+ });
660
+ }
661
+ // commander 的父命令引用(registerDatasetCommands 里复用全局 program 选项)
662
+ let program;
663
+ export function bindReportProgram(p) {
664
+ program = p;
665
+ }
666
+ //# sourceMappingURL=report.js.map