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,719 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { withReport } from './report.js';
3
+ import { getBaseInfo, getReportDevInfo, saveReportDevInfo } from '../services/report/reports.js';
4
+ import { listDatasets, fieldsKeyOf } from '../services/report/dataset.js';
5
+ import { checkCellLimit, validateScrollPage, validateShowLocation, validateSnapshotPatch, validateWorkbookGridline, validateSheetPropGridLine, } from '../services/report/guard.js';
6
+ import { mergeWorkbookSafe, fieldToCell, fieldStyle } from '../services/report/safe-save.js';
7
+ import { checkCrossFilters, checkTableNameContract, readCrossFilters, verifyAll, verifyFieldBind, } from '../services/report/verify.js';
8
+ import { hrefCatalog, mapNaturalPhrase, normalizeFont, normalizeGroupType, normalizeHref, normalizeNumberFormat, normalizeTransform, styleCatalog, validateBaseMeta, validateCellPatch, validateConditionRule, FORMAT_CATALOG, GROUP_TYPE_ALIAS, } from '../services/report/validate.js';
9
+ function readInput(raw) {
10
+ if (raw.inline)
11
+ return JSON.parse(raw.inline);
12
+ if (raw.file)
13
+ return JSON.parse(readFileSync(raw.file, 'utf-8').replace(/^/, ''));
14
+ return null;
15
+ }
16
+ function printValidation(r, json, payload) {
17
+ if (json) {
18
+ console.log(JSON.stringify(payload ?? r, null, 2));
19
+ return;
20
+ }
21
+ r.errors.forEach((e) => console.log(`[错误] ${e.message}`));
22
+ r.warnings.forEach((e) => console.log(`[警告] ${e.message}`));
23
+ r.infos.forEach((e) => console.log(`[提示] ${e.message}`));
24
+ if (r.ok && !r.warnings.length)
25
+ console.log('通过。');
26
+ if (!r.ok)
27
+ process.exitCode = 1;
28
+ }
29
+ /** 取报表的字段记录 + 应用 id。 */
30
+ async function loadDev(http, reportId, appIdArg) {
31
+ const base = await getBaseInfo(http, reportId);
32
+ const appId = appIdArg || String(base.appId || base.appid || '');
33
+ const dev = await getReportDevInfo(http, reportId);
34
+ return { base, appId, dev, fields: (dev.fields || []) };
35
+ }
36
+ export function registerReportValidateCommands(report, program) {
37
+ const validate = report.command('validate').description('写入前校验(本地规则,不落库)');
38
+ validate
39
+ .command('base')
40
+ .requiredOption('--name <name>', '报表名')
41
+ .option('--name-label-id <id>', '多语言 ID', '-1')
42
+ .option('--group-id <id>', '分组 ID', '0')
43
+ .option('--show-order <n>', '排序', '1')
44
+ .description('校验报表名/分组等基础字段的写入规范')
45
+ .action(async (raw) => {
46
+ const r = validateBaseMeta({
47
+ name: raw.name,
48
+ nameLabelId: raw.nameLabelId,
49
+ groupId: raw.groupId,
50
+ showOrder: raw.showOrder,
51
+ });
52
+ printValidation(r, false, r.normalized);
53
+ });
54
+ validate
55
+ .command('condition')
56
+ .option('--file <file>', '规则 JSON 文件')
57
+ .option('--inline <json>', '规则 JSON 字符串')
58
+ .option('--map <phrase>', '自然语言,如 "介于 1 5" / "数据条" / "图标集"')
59
+ .option('--report-id <id>', '按线上报表的实际条件格式校验')
60
+ .option('--app-id <id>', '应用 ID')
61
+ .description('校验条件格式规则(白名单 / 冲突)')
62
+ .action(async (raw) => {
63
+ if (raw.map) {
64
+ const r = mapNaturalPhrase(raw.map);
65
+ printValidation(r, false, r.normalized);
66
+ return;
67
+ }
68
+ if (raw.reportId) {
69
+ await withReport(program, raw.appId || '', async (http, json) => {
70
+ const dev = await getReportDevInfo(http, raw.reportId);
71
+ const r = { ok: true, errors: [], warnings: [], infos: [] };
72
+ (dev.fields || []).forEach((f) => {
73
+ const rule = fieldStyle(f).cellType?.conditionRule || f.conditionRule;
74
+ if (!rule || !Object.keys(rule).length)
75
+ return;
76
+ const sub = validateConditionRule(rule, `(${f.x},${f.y}) ${f.text ?? ''}`);
77
+ r.errors.push(...sub.errors);
78
+ r.warnings.push(...sub.warnings);
79
+ });
80
+ if (r.errors.length)
81
+ r.ok = false;
82
+ printValidation(r, json);
83
+ });
84
+ return;
85
+ }
86
+ const input = readInput(raw);
87
+ if (!input) {
88
+ console.error('需要 --file / --inline / --map / --report-id 之一');
89
+ process.exitCode = 2;
90
+ return;
91
+ }
92
+ const r = validateConditionRule(input);
93
+ printValidation(r, false, r.normalized);
94
+ });
95
+ validate
96
+ .command('format')
97
+ .option('--list', '列出数字格式目录')
98
+ .option('--map <label>', '中文名,如 货币 / 短日期')
99
+ .option('--file <file>', '单元格配置 JSON')
100
+ .option('--inline <json>', '单元格配置 JSON 字符串')
101
+ .description('校验数字格式 / 日期分组 / 字号字体')
102
+ .action(async (raw) => {
103
+ if (raw.list) {
104
+ console.log(JSON.stringify(FORMAT_CATALOG, null, 2));
105
+ return;
106
+ }
107
+ const r = { ok: true, errors: [], warnings: [], infos: [] };
108
+ const norm = {};
109
+ if (raw.map) {
110
+ const f = normalizeNumberFormat({ map: raw.map });
111
+ const g = normalizeGroupType(raw.map);
112
+ Object.assign(r, {
113
+ errors: [...f.errors, ...g.errors],
114
+ warnings: [...f.warnings, ...g.warnings],
115
+ });
116
+ norm.format = f.normalized;
117
+ if (g.normalized)
118
+ norm.groupType = g.normalized;
119
+ }
120
+ else {
121
+ const input = readInput(raw);
122
+ if (!input) {
123
+ console.error('需要 --map / --file / --inline / --list 之一');
124
+ process.exitCode = 2;
125
+ return;
126
+ }
127
+ const patchChk = validateCellPatch(input);
128
+ r.errors.push(...patchChk.errors);
129
+ const f = normalizeNumberFormat(input);
130
+ const g = normalizeGroupType(input.groupType);
131
+ const font = normalizeFont(input.font);
132
+ r.errors.push(...f.errors, ...g.errors, ...font.errors);
133
+ r.warnings.push(...f.warnings, ...g.warnings, ...font.warnings);
134
+ norm.format = f.normalized;
135
+ norm.groupType = g.normalized;
136
+ norm.font = font.normalized;
137
+ }
138
+ if (r.errors.length)
139
+ r.ok = false;
140
+ printValidation(r, false, norm);
141
+ });
142
+ validate
143
+ .command('transform')
144
+ .option('--list', '列出转换类型速查')
145
+ .option('--map <label>', '中文名,如 人员 / 部门全路径 / 二维码')
146
+ .option('--file <file>', '单元格配置 JSON')
147
+ .option('--inline <json>', '单元格配置 JSON 字符串')
148
+ .description('校验转换面板设置')
149
+ .action(async (raw) => {
150
+ if (raw.list) {
151
+ const { TRANS_MAP, QR_MAP, DIR_MAP } = await import('../services/report/validate.js');
152
+ console.log(JSON.stringify({ TRANS_MAP, QR_MAP, DIR_MAP }, null, 2));
153
+ return;
154
+ }
155
+ const input = raw.map ? { transType: String(raw.map) } : readInput(raw);
156
+ if (!input) {
157
+ console.error('需要 --map / --file / --inline / --list 之一');
158
+ process.exitCode = 2;
159
+ return;
160
+ }
161
+ const r = normalizeTransform(input);
162
+ printValidation(r, false, r.normalized);
163
+ });
164
+ validate
165
+ .command('href')
166
+ .option('--list', '列出打开方式与写法规则')
167
+ .option('--map <label>', '中文名,如 弹出页 / 当前页 / 执行js代码')
168
+ .option('--file <file>', '单元格配置 JSON')
169
+ .option('--inline <json>', '单元格配置 JSON 字符串')
170
+ .option('--fix', '把全角 ?/& 自动替换为 ASCII')
171
+ .description('校验事件超链接写法')
172
+ .action(async (raw) => {
173
+ if (raw.list) {
174
+ console.log(JSON.stringify(hrefCatalog(), null, 2));
175
+ return;
176
+ }
177
+ const input = raw.map ? { map: String(raw.map) } : readInput(raw);
178
+ if (!input) {
179
+ console.error('需要 --map / --file / --inline / --list 之一');
180
+ process.exitCode = 2;
181
+ return;
182
+ }
183
+ const r = normalizeHref(input, { fix: !!raw.fix });
184
+ printValidation(r, false, r.normalized);
185
+ });
186
+ validate
187
+ .command('gridline')
188
+ .option('--file <file>', 'workbook 或补丁 JSON')
189
+ .option('--inline <json>', 'workbook 或补丁 JSON 字符串')
190
+ .description('校验网格线(workbook 里出现 gridline 键会让保存 500)')
191
+ .action(async (raw) => {
192
+ const input = readInput(raw);
193
+ if (!input) {
194
+ console.error('需要 --file 或 --inline');
195
+ process.exitCode = 2;
196
+ return;
197
+ }
198
+ const r = { ok: true, errors: [], warnings: [], infos: [] };
199
+ const wbChk = validateWorkbookGridline(input);
200
+ r.errors.push(...wbChk.errors);
201
+ for (const [i, sp] of (input.sheetProps || []).entries()) {
202
+ const g = validateSheetPropGridLine(`sheetProps[${i}].gridLine`, sp?.gridLine);
203
+ r.errors.push(...g.errors);
204
+ r.warnings.push(...g.warnings);
205
+ if (g.normalized === 1) {
206
+ r.warnings.push({ message: `sheetProps[${i}].gridLine=1:网格线默认关闭,未点名开启时请写 0` });
207
+ }
208
+ }
209
+ if (r.errors.length)
210
+ r.ok = false;
211
+ printValidation(r, false);
212
+ });
213
+ validate
214
+ .command('blank')
215
+ .option('--file <file>', '补丁 JSON')
216
+ .option('--inline <json>', '补丁 JSON 字符串')
217
+ .description('校验会导致设计区空白的写法')
218
+ .action(async (raw) => {
219
+ const input = readInput(raw);
220
+ if (!input) {
221
+ console.error('需要 --file 或 --inline');
222
+ process.exitCode = 2;
223
+ return;
224
+ }
225
+ const r = { ok: true, errors: [], warnings: [], infos: [] };
226
+ const loc = validateShowLocation(input.showLocation ?? input.sheetProps?.[0]?.showLocation);
227
+ r.errors.push(...loc.errors);
228
+ const scroll = validateScrollPage(input.split ?? input.pageSetting?.[0]?.split);
229
+ r.errors.push(...scroll.errors);
230
+ if (input.snapshot?.enableSnapshot) {
231
+ const snap = validateSnapshotPatch(input.snapshot, String(input.reportId || ''), input.name);
232
+ r.errors.push(...snap.errors);
233
+ r.warnings.push(...snap.warnings);
234
+ }
235
+ if (r.errors.length)
236
+ r.ok = false;
237
+ printValidation(r, false);
238
+ });
239
+ validate
240
+ .command('query')
241
+ .option('--map-show-where <phrase>', '把「顶部筛选」这类说法映射成内部值')
242
+ .option('--file <file>', '带 showWhere 的条件 JSON')
243
+ .option('--inline <json>', '带 showWhere 的条件 JSON 字符串')
244
+ .description('显示方式说法映射 / 条件显示方式规范化')
245
+ .action(async (raw) => {
246
+ const { resolveShowWhere, normalizeShowWhere, resolveQueryType } = await import('../services/report/query.js');
247
+ if (raw.mapShowWhere) {
248
+ const v = resolveShowWhere(raw.mapShowWhere);
249
+ if (!v) {
250
+ console.error(`无法映射显示方式「${raw.mapShowWhere}」。支持:高级搜索 / 筛选(advancedSearch / filter)`);
251
+ process.exitCode = 1;
252
+ return;
253
+ }
254
+ console.log(`${raw.mapShowWhere} → ${v} (落库 queryType = ${resolveQueryType(v)})`);
255
+ return;
256
+ }
257
+ const input = readInput(raw);
258
+ if (!input) {
259
+ console.error('需要 --map-show-where 或 --file / --inline');
260
+ process.exitCode = 2;
261
+ return;
262
+ }
263
+ const r = normalizeShowWhere(input, raw.showWhere);
264
+ if (!r.ok) {
265
+ console.error(r.error);
266
+ process.exitCode = 1;
267
+ return;
268
+ }
269
+ console.log(`显示方式 = ${r.showWhere} (落库 queryType = ${resolveQueryType(r.showWhere)})`);
270
+ });
271
+ validate
272
+ .command('style')
273
+ .option('--list', '列出默认分层样式与目录')
274
+ .option('--inline <json>', 'spec 片段,看会解析出哪层样式')
275
+ .description('默认表头样式(标题蓝底 + 表头灰底)')
276
+ .action(async (raw) => {
277
+ if (raw.inline) {
278
+ const { resolveLayerStyles } = await import('../services/report/constants.js');
279
+ console.log(JSON.stringify(resolveLayerStyles(JSON.parse(raw.inline)), null, 2));
280
+ return;
281
+ }
282
+ console.log(JSON.stringify(styleCatalog(), null, 2));
283
+ });
284
+ // ── 体检 ──────────────────────────────────────────────────
285
+ const verify = report.command('verify').description('落库自检(读回真实数据再断言)');
286
+ verify
287
+ .command('bind')
288
+ .argument('<reportId>', '报表 ID')
289
+ .option('--app-id <id>', '应用 ID')
290
+ .option('--strict', '把「需用户确认」也当作失败(退出码 2)')
291
+ .description('字段绑定体检')
292
+ .action(async (reportId, raw) => {
293
+ await withReport(program, raw.appId || '', async (http, json) => {
294
+ const r = await verifyFieldBind(http, reportId, raw.appId, { strict: !!raw.strict });
295
+ if (json) {
296
+ console.log(JSON.stringify(r, null, 2));
297
+ }
298
+ else {
299
+ r.errors.forEach((e) => console.log(`[FAIL] ${e.message}`));
300
+ r.warnings.forEach((e) => console.log(`[WARN] ${e.message}`));
301
+ r.confirmations.forEach((e) => console.log(`[待确认] ${e.message}`));
302
+ console.log(r.summary);
303
+ }
304
+ if (r.exitCode)
305
+ process.exitCode = r.exitCode;
306
+ });
307
+ });
308
+ verify
309
+ .command('all')
310
+ .argument('<reportId>', '报表 ID')
311
+ .option('--app-id <id>', '应用 ID')
312
+ .option('--strict', '把「需用户确认」也当作失败')
313
+ .description('综合自检:绑定 + 单元格结构 + tableName 契约')
314
+ .action(async (reportId, raw) => {
315
+ await withReport(program, raw.appId || '', async (http, json) => {
316
+ const r = await verifyAll(http, reportId, raw.appId, { strict: !!raw.strict });
317
+ if (json) {
318
+ console.log(JSON.stringify(r, null, 2));
319
+ }
320
+ else {
321
+ r.errors.forEach((e) => console.log(`[FAIL] ${e.message}`));
322
+ r.warnings.forEach((e) => console.log(`[WARN] ${e.message}`));
323
+ r.confirmations.forEach((e) => console.log(`[待确认] ${e.message}`));
324
+ console.log(r.summary);
325
+ }
326
+ if (r.exitCode)
327
+ process.exitCode = r.exitCode;
328
+ });
329
+ });
330
+ verify
331
+ .command('contract')
332
+ .argument('<reportId>', '报表 ID')
333
+ .option('--app-id <id>', '应用 ID')
334
+ .description('tableName 契约体检(只读)')
335
+ .action(async (reportId, raw) => {
336
+ await withReport(program, raw.appId || '', async (http, json) => {
337
+ const { fields } = await loadDev(http, reportId, raw.appId);
338
+ const r = checkTableNameContract(fields);
339
+ if (json)
340
+ console.log(JSON.stringify({ ...r, ...r.stats }, null, 2));
341
+ else {
342
+ r.warnings.forEach((w) => console.log(`[WARN] ${w.message}`));
343
+ if (r.ok)
344
+ console.log(`PASS — ${r.stats.fieldCells} 个字段格的 tableName 齐全`);
345
+ }
346
+ if (!r.ok)
347
+ process.exitCode = 1;
348
+ });
349
+ });
350
+ verify
351
+ .command('parents')
352
+ .argument('<reportId>', '报表 ID')
353
+ .option('--app-id <id>', '应用 ID')
354
+ .description('跨数据源父格体检:区域入口格唯一、fieldKey 三段式、id=currentField、算子白名单、锚点落在真实父格')
355
+ .action(async (reportId, raw) => {
356
+ await withReport(program, raw.appId || '', async (http, json) => {
357
+ const { fields } = await loadDev(http, reportId, raw.appId);
358
+ const items = checkCrossFilters(fields);
359
+ const errors = items.filter((x) => x.level === 'error');
360
+ const warnings = items.filter((x) => x.level !== 'error');
361
+ const sources = new Set(fields.filter((f) => f.cellType === 'Field').map((f) => String(f.dataSetId || '')));
362
+ const cross = fields.filter((f) => f.cellType === 'Field' && (readCrossFilters(f).leftFilterField?.length || 0) > 0).length;
363
+ if (json) {
364
+ console.log(JSON.stringify({ datasets: sources.size, crossFilters: cross, items }, null, 2));
365
+ }
366
+ else {
367
+ console.log(`数据集 ${sources.size} 个 · 跨源父格筛选 ${cross} 处`);
368
+ errors.forEach((e) => console.log(`[FAIL] ${e.message}`));
369
+ warnings.forEach((w) => console.log(`[WARN] ${w.message}`));
370
+ if (!errors.length) {
371
+ console.log(sources.size > 1
372
+ ? 'PASS — 跨源父格配置合规'
373
+ : 'PASS — 单数据集,无跨源父格配置');
374
+ }
375
+ }
376
+ if (errors.length)
377
+ process.exitCode = 1;
378
+ });
379
+ });
380
+ verify
381
+ .command('meta')
382
+ .argument('<reportId>', '报表 ID')
383
+ .option('--app-id <id>', '应用 ID')
384
+ .description('报表基础信息体检(防列表页 500)')
385
+ .action(async (reportId, raw) => {
386
+ await withReport(program, raw.appId || '', async (http, json) => {
387
+ const { base } = await loadDev(http, reportId, raw.appId);
388
+ const r = validateBaseMeta({
389
+ name: String(base.name ?? ''),
390
+ nameLabelId: String(base.nameLabelId ?? ''),
391
+ groupId: String(base.groupId ?? ''),
392
+ showOrder: String(base.showOrder ?? ''),
393
+ });
394
+ if (json)
395
+ console.log(JSON.stringify({ base, ...r }, null, 2));
396
+ else
397
+ printValidation(r, false, r.normalized);
398
+ });
399
+ });
400
+ verify
401
+ .command('condition')
402
+ .argument('<reportId>', '报表 ID')
403
+ .option('--app-id <id>', '应用 ID')
404
+ .description('线上条件格式体检(非法算子会静默不生成规则)')
405
+ .action(async (reportId, raw) => {
406
+ await withReport(program, raw.appId || '', async (http, json) => {
407
+ const { fields } = await loadDev(http, reportId, raw.appId);
408
+ const r = { ok: true, errors: [], warnings: [], infos: [] };
409
+ fields.forEach((f) => {
410
+ const rule = fieldStyle(f).cellType?.conditionRule || f.conditionRule;
411
+ if (!rule || !Object.keys(rule).length)
412
+ return;
413
+ const sub = validateConditionRule(rule, `(${f.x},${f.y}) ${f.text ?? ''}`);
414
+ r.errors.push(...sub.errors);
415
+ r.warnings.push(...sub.warnings);
416
+ });
417
+ if (r.errors.length)
418
+ r.ok = false;
419
+ printValidation(r, json);
420
+ });
421
+ });
422
+ verify
423
+ .command('format')
424
+ .argument('<reportId>', '报表 ID')
425
+ .option('--app-id <id>', '应用 ID')
426
+ .description('线上单元格格式体检(回显断裂 / 错误货币串)')
427
+ .action(async (reportId, raw) => {
428
+ await withReport(program, raw.appId || '', async (http, json) => {
429
+ const { fields } = await loadDev(http, reportId, raw.appId);
430
+ const r = { ok: true, errors: [], warnings: [], infos: [] };
431
+ fields.forEach((f) => {
432
+ const cellType = fieldStyle(f).cellType || {};
433
+ const fmtr = fieldStyle(f).formatter;
434
+ if (fmtr && !FORMAT_CATALOG.some((c) => c.formatter === fmtr)) {
435
+ r.warnings.push({
436
+ message: `(${f.x},${f.y}) formatter 非目录全等值「${fmtr}」→ 设计器工具栏可能显示「其他/常规」`,
437
+ });
438
+ }
439
+ if (/^[¥¥]#,##0/.test(String(fmtr))) {
440
+ r.errors.push({ message: `(${f.x},${f.y}) 疑似错误货币串 ${fmtr},应使用目录货币 formatter` });
441
+ }
442
+ const g = cellType.groupType;
443
+ if (g && g !== 'none' && !Object.values(GROUP_TYPE_ALIAS).includes(g)) {
444
+ r.errors.push({ message: `(${f.x},${f.y}) 未知 groupType=${g}` });
445
+ }
446
+ if (g === 'yearAndMonth') {
447
+ r.errors.push({ message: `(${f.x},${f.y}) groupType=yearAndMonth 应为落库值 yearmonth` });
448
+ }
449
+ });
450
+ if (r.errors.length)
451
+ r.ok = false;
452
+ printValidation(r, json);
453
+ });
454
+ });
455
+ verify
456
+ .command('blank')
457
+ .argument('<reportId>', '报表 ID')
458
+ .option('--app-id <id>', '应用 ID')
459
+ .description('线上设计区空白体检')
460
+ .action(async (reportId, raw) => {
461
+ await withReport(program, raw.appId || '', async (http, json) => {
462
+ const { dev, fields } = await loadDev(http, reportId, raw.appId);
463
+ const r = { ok: true, errors: [], warnings: [], infos: [] };
464
+ if (!fields.length) {
465
+ r.errors.push({ message: '字段记录为 0:设计区没有单元格(真清空),优先用历史版本回滚恢复' });
466
+ }
467
+ for (const [i, sp] of (dev.sheetProps || []).entries()) {
468
+ const loc = validateShowLocation(sp?.showLocation);
469
+ if (!loc.ok)
470
+ r.errors.push({ message: `sheetProps[${i}] ${loc.errors[0].message}` });
471
+ const scroll = validateScrollPage(sp);
472
+ r.errors.push(...scroll.errors);
473
+ }
474
+ const snap = dev.snapshot;
475
+ if (snap?.enableSnapshot) {
476
+ if (typeof snap.sheetId === 'number') {
477
+ r.errors.push({
478
+ message: `线上 snapshot.sheetId 是 number:疑似曾被 Number() 写入,易致设计区空白。请改成字符串重配`,
479
+ });
480
+ }
481
+ else if (String(snap.sheetId) !== String(reportId)) {
482
+ r.errors.push({ message: `snapshot.sheetId=${snap.sheetId} 与 reportId=${reportId} 不一致` });
483
+ }
484
+ if (!String(snap.snapshotName || '').trim()) {
485
+ r.warnings.push({ message: `snapshotName 为空,建议用默认值` });
486
+ }
487
+ }
488
+ if (r.errors.length)
489
+ r.ok = false;
490
+ printValidation(r, json);
491
+ });
492
+ });
493
+ verify
494
+ .command('gridline')
495
+ .argument('<reportId>', '报表 ID')
496
+ .option('--app-id <id>', '应用 ID')
497
+ .description('线上网格线体检(workbook 里出现 gridline 键会让保存 500)')
498
+ .action(async (reportId, raw) => {
499
+ await withReport(program, raw.appId || '', async (http, json) => {
500
+ const { dev } = await loadDev(http, reportId, raw.appId);
501
+ const wbChk = validateWorkbookGridline({ sheets: dev.workbookProps?.sheets });
502
+ printValidation(wbChk, json);
503
+ });
504
+ });
505
+ verify
506
+ .command('limit')
507
+ .argument('<reportId>', '报表 ID')
508
+ .option('--app-id <id>', '应用 ID')
509
+ .option('--rows <n>', '显式指定行数')
510
+ .option('--cols <n>', '显式指定列数')
511
+ .option('--date-values <n>', '日期展开的取值个数')
512
+ .description('渲染规模预检(只算不渲染)')
513
+ .action(async (reportId, raw) => {
514
+ await withReport(program, raw.appId || '', async (http, json) => {
515
+ const { appId, fields } = await loadDev(http, reportId, raw.appId);
516
+ const r = await checkCellLimit(http, reportId, appId, {
517
+ rows: raw.rows ? Number(raw.rows) : undefined,
518
+ cols: raw.cols ? Number(raw.cols) : undefined,
519
+ dateValues: raw.dateValues ? Number(raw.dateValues) : undefined,
520
+ fields,
521
+ });
522
+ if (json) {
523
+ console.log(JSON.stringify(r, null, 2));
524
+ }
525
+ else {
526
+ console.log(`设计期 ${r.designedColumns} 列 / ${r.fieldCells} 个字段格`);
527
+ r.advice.forEach((a) => console.log(` ${a}`));
528
+ }
529
+ if (r.verdict === 'over_limit')
530
+ process.exitCode = 1;
531
+ });
532
+ });
533
+ // ── 定点修复 ──────────────────────────────────────────────
534
+ const fix = report.command('fix').description('定点修复(默认只读预演,需 --apply 才落库)');
535
+ fix
536
+ .command('echo')
537
+ .argument('<reportId>', '报表 ID')
538
+ .requiredOption('--app-id <id>', '应用 ID')
539
+ .description('同 query fix-echo:把显示方式恢复成设计器认的数组短码')
540
+ .action(async (reportId, raw) => {
541
+ await withReport(program, raw.appId, async (http, json) => {
542
+ const { fixQueryItems } = await import('../services/report/query-checks.js');
543
+ const r = await fixQueryItems(http, reportId);
544
+ if (json) {
545
+ console.log(JSON.stringify(r, null, 2));
546
+ return;
547
+ }
548
+ r.changed.forEach((c) => console.log(`已修 ${c.itemText || c.itemId}:${c.actions.join('、')}`));
549
+ r.skipped.forEach((s) => console.log(`跳过 ${s.itemText || s.itemId}:${s.reason}`));
550
+ if (!r.changed.length)
551
+ console.log('没有需要修的条件。');
552
+ });
553
+ });
554
+ fix
555
+ .command('table-name')
556
+ .argument('<reportId>', '报表 ID')
557
+ .option('--app-id <id>', '应用 ID')
558
+ .option('--apply', '真的落库')
559
+ .description('补齐 Field 单元格的 tableName(数据源不显示模块类型后缀时用)')
560
+ .action(async (reportId, raw) => {
561
+ await withReport(program, raw.appId || '', async (http, json) => {
562
+ const { base, appId, dev, fields } = await loadDev(http, reportId, raw.appId);
563
+ const datasets = await listDatasets(http, reportId, appId);
564
+ const main = datasets.find((d) => d.sourceId && !d.sourceId.startsWith(reportId.slice(0, 6)));
565
+ const label = main?.name || datasets[0]?.name || '';
566
+ let tableName = label;
567
+ if (main) {
568
+ try {
569
+ const fk = await fieldsKeyOf(http, main.id, reportId, appId, { label, sourceType: main.sourceType });
570
+ tableName = String(fk[0]?.datasetName || label);
571
+ }
572
+ catch {
573
+ /* 用 label 兜底 */
574
+ }
575
+ }
576
+ const before = fields.map((f) => ({ x: f.x, y: f.y, tableName: f.tableName }));
577
+ const patched = fields.map((f) => {
578
+ if (f.cellType !== 'Field' || f.tableName)
579
+ return f;
580
+ const cell = fieldToCell(f);
581
+ cell.style.cellType.tableName = tableName;
582
+ return { ...f, tableName };
583
+ });
584
+ const missingBefore = before.filter((b) => !b.tableName).length;
585
+ if (json) {
586
+ console.log(JSON.stringify({ applied: !!raw.apply, missingBefore, tableName, fields: patched.length }, null, 2));
587
+ }
588
+ else {
589
+ console.log(`缺 tableName 的字段格:${missingBefore} 个;将写为「${tableName}」`);
590
+ }
591
+ if (!raw.apply) {
592
+ if (!json)
593
+ console.log('(预演,未落库。加 --apply 执行)');
594
+ return;
595
+ }
596
+ const wb = mergeWorkbookSafe({ ...dev, fields: patched }, {
597
+ patchFn: (w) => {
598
+ for (const sheet of Object.values(w.sheets || {})) {
599
+ const dt = sheet?.data?.dataTable || {};
600
+ for (const f of patched) {
601
+ const ct = dt[String(f.x)]?.[String(f.y)]?.style?.cellType;
602
+ if (ct && ct.cellType === 'Field')
603
+ ct.tableName = tableName;
604
+ }
605
+ }
606
+ },
607
+ });
608
+ const fresh = await getReportDevInfo(http, reportId);
609
+ await saveReportDevInfo(http, {
610
+ appId,
611
+ reportId,
612
+ name: String(base.name || ''),
613
+ workbook: wb,
614
+ designKey: String(fresh.designKey || ''),
615
+ groupId: String(base.groupId ?? '0'),
616
+ nameLabelId: String(base.nameLabelId ?? '-1'),
617
+ });
618
+ const after = await getReportDevInfo(http, reportId);
619
+ const stillMissing = checkTableNameContract(after.fields || []).stats.missingTableName;
620
+ console.log(`已落库。剩余缺 tableName:${stillMissing} 个`);
621
+ if (stillMissing)
622
+ process.exitCode = 2;
623
+ });
624
+ });
625
+ fix
626
+ .command('freeze')
627
+ .argument('<reportId>', '报表 ID')
628
+ .option('--app-id <id>', '应用 ID')
629
+ .option('--anchor <x,y>', '冻结锚点(0 基);默认首个数据行 + 第 0 列,即只冻结表头')
630
+ .option('--apply', '真的落库')
631
+ .description('冻结单元格(锚点上方的行 + 左侧的列)')
632
+ .action(async (reportId, raw) => {
633
+ await withReport(program, raw.appId || '', async (http, json) => {
634
+ const { base, appId, dev, fields } = await loadDev(http, reportId, raw.appId);
635
+ // 重复坐标会让重建悄悄丢格 —— 先拦(退出码 3)
636
+ const seen = new Map();
637
+ for (const f of fields) {
638
+ const k = `${f.x},${f.y}`;
639
+ seen.set(k, (seen.get(k) || 0) + 1);
640
+ }
641
+ const dup = [...seen.entries()].filter(([, n]) => n > 1);
642
+ if (dup.length) {
643
+ console.error(`存在重复坐标,重建会丢格,已拒绝:${dup.map(([k, n]) => `${k}×${n}`).join(' ')}`);
644
+ process.exitCode = 3;
645
+ return;
646
+ }
647
+ let ax;
648
+ let ay;
649
+ if (raw.anchor) {
650
+ const [x, y] = String(raw.anchor).split(',').map((s) => Number(s.trim()));
651
+ ax = x;
652
+ ay = y;
653
+ }
654
+ else {
655
+ const vertical = fields.filter((f) => f.expandType === 'Vertical');
656
+ ax = vertical.length
657
+ ? Math.min(...vertical.map((f) => Number(f.x)))
658
+ : Math.max(...fields.map((f) => Number(f.x)));
659
+ ay = 0;
660
+ }
661
+ if (!Number.isFinite(ax) || !Number.isFinite(ay)) {
662
+ throw new Error('--anchor 需为 x,y 形式,例如 --anchor 1,0');
663
+ }
664
+ const target = fields.find((f) => Number(f.x) === ax && Number(f.y) === ay);
665
+ if (!target) {
666
+ console.error(`锚点格 (${ax},${ay}) 上没有单元格,无法冻结。`);
667
+ process.exitCode = 1;
668
+ return;
669
+ }
670
+ const prev = fields.filter((f) => f.fixed === 1 || f.tag?.fixed).map((f) => `(${f.x},${f.y})`);
671
+ console.log(`冻结锚点 (${ax},${ay});原有锚点:${prev.length ? prev.join(' ') : '无'}`);
672
+ if (!raw.apply) {
673
+ console.log('(预演,未落库。加 --apply 执行)');
674
+ return;
675
+ }
676
+ // 重建工作簿:先清掉所有旧 fixed,再打新锚点
677
+ const patched = fields.map((f) => ({ ...f, fixed: 0 }));
678
+ const wb = mergeWorkbookSafe({ ...dev, fields: patched }, {
679
+ patchFn: (w) => {
680
+ for (const sheet of Object.values(w.sheets || {})) {
681
+ const dt = sheet?.data?.dataTable || {};
682
+ for (const row of Object.values(dt)) {
683
+ for (const cell of Object.values(row)) {
684
+ if (cell?.tag)
685
+ cell.tag.fixed = false;
686
+ }
687
+ }
688
+ const cell = dt[String(ax)]?.[String(ay)];
689
+ if (cell?.tag)
690
+ cell.tag.fixed = true;
691
+ // 下面两个只影响设计器显示,真正持久化的只有 cell.tag.fixed
692
+ sheet.frozenRowCount = ax;
693
+ sheet.frozenColCount = ay;
694
+ sheet.tag = { ...(sheet.tag || {}), fixedCell: { x: ax, y: ay } };
695
+ }
696
+ },
697
+ });
698
+ const fresh = await getReportDevInfo(http, reportId);
699
+ await saveReportDevInfo(http, {
700
+ appId,
701
+ reportId,
702
+ name: String(base.name || ''),
703
+ workbook: wb,
704
+ designKey: String(fresh.designKey || ''),
705
+ groupId: String(base.groupId ?? '0'),
706
+ nameLabelId: String(base.nameLabelId ?? '-1'),
707
+ });
708
+ const after = await getReportDevInfo(http, reportId);
709
+ const fixedNow = (after.fields || []).filter((f) => Number(f.fixed) === 1);
710
+ const ok = fixedNow.length === 1 && Number(fixedNow[0].x) === ax && Number(fixedNow[0].y) === ay;
711
+ console.log(ok
712
+ ? `已冻结:锚点 (${ax},${ay}) 生效`
713
+ : `⚠️ 回读校验不通过:当前 fixed 格 ${fixedNow.map((f) => `(${f.x},${f.y})`).join(' ') || '无'}`);
714
+ if (!ok)
715
+ process.exitCode = 2;
716
+ });
717
+ });
718
+ }
719
+ //# sourceMappingURL=report-validate.js.map