weaver-e10-builder 1.1.8 → 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 +31 -2
  179. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  180. package/dist/services/actionflow/context_preflight.js +179 -4
  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 +194 -6
  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 +78 -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 -99
  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,339 @@
1
+ # 数据集表名与字段映射契约(强制 · 历史回归保护)
2
+
3
+ > **事故(已验证 · 报表 `1313789294296735745`)**
4
+ > 技能包从「手工分步建表」重构为 `build spec`(spec_build 化)后,
5
+ > `e10-cli report build` 的 `fieldCell()` 在生成 `FieldCellType` 时**丢失了 4 个必需字段**:
6
+ >
7
+ > | 丢失字段 | 正确值 | 后果 |
8
+ > |----------|--------|------|
9
+ > | `tableName` | `数据集名(业务模块)` / `数据集名(表单)` | **左侧数据源不显示「模块类型」后缀** |
10
+ > | `fieldId` | 数据集字段雪花 id | 属性面板字段回显不全 |
11
+ > | `fieldName` | 字段技术名 `field_<id>` | 同上 |
12
+ > | `fieldText` | 字段显示名 | 同上 |
13
+ >
14
+ > 证据(同一报表内对照组):
15
+ > - Agent 建的 10 个 Field:`tableName=None`(异常)
16
+ > - 用户在设计器手动绑的 2 个 Field:`tableName='党员发展(业务模块)'`(正确)
17
+ > - 平台原生报表 `772466395278696448`:`tableName='轻资产处理(表单)'`,9/10 非空
18
+ > - 平台原生报表 `799097275701215232`:16/16 非空
19
+ >
20
+ > **根因不是接口、不是服务端** —— 是建表脚本写入的 `cellType` 本身就缺字段。
21
+ > 旧包 `references/data_source_rule.md` §2.2/§2.5 与 `e10-cli report verify bind` 有完整契约,
22
+ > 重构时**未迁移**,导致知识随重构丢失。
23
+ >
24
+ > **⚠️ 2026-09-11 二次实证校正(重要)**:修复该报表时,从设计器实际请求解出真实 workbook,
25
+ > 对照用户手绑字段发现 —— **`fieldId` / `fieldName` / `fieldText` / `dateTimeProp` 在服务端落库的
26
+ > cellType 里同样是缺失的**(用户手绑字段也没有),它们由设计器**运行时装配**,不属落库契约。
27
+ > **真正需要落库、且能对照验证的只有 `tableName` 一项。** 上表把三件套标为「必需」属过度设计,
28
+ > 但**写上去无害**(幂等),建表脚本保留即可;**修复存量报表时只需补 `tableName`**。
29
+ >
30
+ > **⚠️⚠️ 2026-09-11 第三次实证校正(关键 · 推翻上一条因果)**:
31
+ > 上文「`tableName` 缺失 → 左侧数据源不显示模块类型后缀」的**因果链是错的**。
32
+ >
33
+ > 决定性对照(同一环境,平台原生/健康报表):
34
+ >
35
+ > | 报表 | Field 单元格 `tableName` | 左侧面板显示 | 结论 |
36
+ > |---|---|---|---|
37
+ > | `1313798296523022337`(销售单,健康) | **全部 10 个为 `None`** | **完全正常** | `tableName` 与显示名**无关** |
38
+ > | `1313789294296735745`(党员发展,问题) | 10 个 `None` + 1 个有值 | 出现重复分组/缺后缀 | 真实原因见下 |
39
+ >
40
+ > **左侧数据源「分组显示名」的唯一权威来源** = `GET /api/bs/edc/dataset/listWithPageReport?hasField=true&reportId=`
41
+ > 返回的**源级记录**(`id` 即 **sourceId**,非 datasetId)的 `name` / `tableText`:
42
+ >
43
+ > | 状态 | `name` / `tableText` 形态 |
44
+ > |---|---|
45
+ > | 正常 | `事项清单(uf_ydsxqd_1)`、`进销存-销售单(uf_jxcxsd)`(业务模块名 + 物理表名/表单标识) |
46
+ > | 异常 | `党员发展`(纯中文名,无后缀) |
47
+ >
48
+ > **故 `tableName` 的正确落库意义**:它是**单元格级**的字段归属标记(供属性面板/导出识别「这个字段来自哪个源表」),
49
+ > **不是**左侧树的显示名来源。补它有益(属性面板回显更全),但**修不了面板显示名问题**。
50
+ >
51
+ > **面板显示名异常的真实定位路径** → 见 `dataset-sidebar-ops-guide.md` §5.3:
52
+ > ① `dataset/list` 是否挂载了重复数据集;② 遍历**全部 sheet** 找引用重复数据集的游离单元格;③ 源级 `name` 是否带后缀。
53
+ >
54
+ > **校验口径修正**:`tableName` 非空率**不能**作为「面板显示名正确」的判据;
55
+ > 应改用 `dataset/list` 去重 + `listWithPageReport.name` 含后缀 + 全 sheet 无游离 `dataSetId` 三项联合校验。
56
+
57
+ ---
58
+
59
+ ## 一、`FieldCellType` 必需字段全表
60
+
61
+ 服务端从 `workbook.sheets.Sheet1.data.dataTable[行][列].style.cellType`
62
+ 反解出 `getReportDevInfo.fields[]`。**cellType 里没有的字段,回读就是 `None`。**
63
+
64
+ | 字段 | 是否必需 | 值 | 说明 |
65
+ |------|----------|-----|------|
66
+ | `typeName` | ✅ | `FieldCellType` | 固定 |
67
+ | `cellType` | ✅ | `Field` | 固定 |
68
+ | `name` | ✅ | `field_<雪花>` | 必须逐字等于 `fieldsKey[].name` |
69
+ | `nameIndex` | ✅ | 底层 FORM sourceId | **不是字段 id** |
70
+ | `text` | ✅ | 字段显示名 | |
71
+ | `dataSetId` | ✅ | 报表内部注册 id | `dataset/list` 的 `id` |
72
+ | **`tableName`** | ○ 建议写 | **`数据集名(业务模块)`** | 单元格级字段归属标记;**非**面板显示名来源(见开头三次校正) |
73
+ | `fieldId` | ○ 建议写 | 字段雪花 id | 落库本不含;设计器运行时装配,写入幂等无害 |
74
+ | `fieldName` | ○ 建议写 | `field_<雪花>` | 同上 |
75
+ | `fieldText` | ○ 建议写 | 字段显示名 | 同上 |
76
+ | `fieldKey` | ✅ | `dataSetId.nameIndex.name` | 三段式 |
77
+
78
+ ---
79
+
80
+ ## 二、`tableName` 后缀由注册契约决定
81
+
82
+ `tableName` = **数据集显示名 + 后缀**,后缀取决于 `addDataset` 的注册类型:
83
+
84
+ | 注册形态 | `sourceType` / `sourceGroup` | 后缀 | 适用 |
85
+ |----------|------------------------------|------|------|
86
+ | **A(默认)** | `LOGIC` + `weaver-ebuilder-form-service` | **`(业务模块)`** | 普通应用表单 |
87
+ | **B(共享表)** | `form` + `<appId>` | **`(表单)`** | `xxx-共享表` 类应用 |
88
+ | **C(数据加工 SQL 视图)** | `ETEAMS` + `sql` | **无后缀**(= `datasetName` 原样) | 数据集来自「数据加工」SQL 视图 |
89
+
90
+ > **形态 C (2026-09-14 · 报表 `1314970921403138199`)**:数据集「考勤汇总报表(优化)」
91
+ > (`sourceType=ETEAMS` / `sourceGroup=sql`)→ 设计器手绑单元格 `tableName` = **`考勤汇总报表(优化)`**,
92
+ > 且 `dataset/fieldsAndOriginFields.fieldsKey[].datasetName` / `tableText` 也都是这个裸名。
93
+ > **判断口径(三条一致即可定值)**:① 设计器里已有手绑单元格 → 用它的 `tableName`;
94
+ > ② 否则用 `fieldsKey[].datasetName`;③ 都没有才按 `dataset/list[].name`。
95
+
96
+ > 与 `add-dataset-registration-guide.md` §一 的两种注册形态一一对应。
97
+ > **禁止**给共享表硬套 `(业务模块)` —— 后缀必须与注册形态一致。
98
+
99
+ **取值优先级**(服务端常不回传,必须脚本兜底):
100
+
101
+ 1. `fieldsKey[].tableName`(服务端有则用)
102
+ 2. `fieldsKey[].datasetName`
103
+ 3. `datasetLabel + datasetSuffix(sourceType)` ← **兜底,保证恒非空**
104
+
105
+ `datasetLabel` 来自 `dataset/list` 的 `name`(即 `addDataset` 的 `sourceName`),
106
+ 由 `spec_lib.resolveDataset()` 回传、`fieldsKeyOf()` 注入到每个字段。
107
+
108
+ ---
109
+
110
+ ## 三、字段三件套取值来源
111
+
112
+ | 字段 | 来源 |
113
+ |------|------|
114
+ | `fieldId` | `fieldsKey[].config.fieldId`(**首选**)→ `fieldsKey[].fieldId` |
115
+ | `fieldName` | `fieldsKey[].name` |
116
+ | `fieldText` | `fieldsKey[].text`(→ `showName` → 列标题) |
117
+
118
+ `fieldsKey[]` 可用键(`fieldsAndOriginFields?isFront=true`):
119
+
120
+ ```
121
+ name / text / originName / fieldType / formatType
122
+ dataSetId / nameIndex / tableId / tableText / datasetName
123
+ config{ fieldId, formId, sformId, formName, componentKey, ... }
124
+ ```
125
+
126
+ ### 三点五、两接口返回格式对照(**以 `fieldsAndOriginFields` 为准** · 2026-09-11 )
127
+
128
+ 同一表单 `sourceId=753880319550169088` 双接口 30/30 逐条比对:
129
+
130
+ | 接口 | 信封(顶层) | 字段元素 | `dataSetId` |
131
+ |------|--------------|----------|-------------|
132
+ | `GET /dataset/fieldsBySource?sourceId=&sourceType=logic&groupId=` | `data` = **裸数组** `[{…}]` | 18 键 | **恒 `"0"`**(未落库) |
133
+ | `GET /dataset/fieldsAndOriginFields?datasetId=&hasField=true&isFront=true&reportId=` | `data` = **对象** `{ fieldsKey:[…], originFieldsKey:[…] }` | 18 键 | **真实 datasetId** |
134
+
135
+ 逐键差异统计:**仅 `dataSetId` 30/30 不同**;其余 17 键
136
+ (`name` / `text` / `originName` / `fieldType` / `originFieldType` / `usage` / `config` /
137
+ `formatType` / `showOrder` / `tableId` / `tableText` / `nameIndex` / `datasetName` /
138
+ `originField` / `dsSelectField` / `dsBrowserField` / `deleteType`)**完全一致**。
139
+
140
+ **统一归一化入口**:`spec_lib.normalizeFieldList(payload, { datasetId })`
141
+
142
+ ```javascript
143
+ const { fields } = normalizeFieldList(res, { datasetId }); // 冒号:任一接口 → 字段元素数组
144
+ ```
145
+
146
+ - 抹平「裸数组 / `{fieldsKey}` 对象 / `{fields}` 对象」三种信封 → 一律返回**字段元素数组**;
147
+ - `datasetId` 传入时**覆盖** `dataSetId`(`fieldsBySource` 恒为 `0`,**直接落库会绑错数据集**);
148
+ - 返回 `{ fields, originFields, shape, dataSetIdInjected }`,`shape ∈ bare-array | fieldsKey-object | fields-array | empty`。
149
+
150
+ > **禁止**把 `fieldsBySource` 的原始 `data`(裸数组)当成 `{fieldsKey}` 取 —— `data.fieldsKey` 会是 `undefined`。
151
+ > **禁止**把 `fieldsBySource` 元素原样写入 `cellType.dataSetId` —— 必须换成**本报表真实 datasetId**。
152
+ > 另:语义上的「返回 data」= 接口的 `json.data`;`json.code === 200` 表示成功。
153
+
154
+ ---
155
+
156
+ ## 四、落库后强制门禁
157
+
158
+ `build spec` 已在 `getReportDevInfo` 回读阶段自动校验:
159
+
160
+ ```javascript
161
+ const fieldCells = fields.filter((f) => f.cellType === 'Field');
162
+ const missingTableName = fieldCells.filter((f) => !f.tableName);
163
+ if (missingTableName.length) {
164
+ console.error(`WARN ${missingTableName.length}/${fieldCells.length} 个 Field 单元格缺 tableName`);
165
+ process.exitCode = 2; // 非零退出,提示需修正
166
+ }
167
+ ```
168
+
169
+ 输出 JSON 附带:`tableName`(首格值)、`tableNameMissing`(缺失数)。
170
+
171
+ | 检查 | 通过标准 |
172
+ |------|----------|
173
+ | `tableName` 非空率 | **100%**(`tableNameMissing == 0`) |
174
+ | 后缀与注册形态一致 | LOGIC→`(业务模块)`;form→`(表单)` |
175
+ | `fieldId` / `fieldName` / `fieldText` 齐全 | 非空 |
176
+ | `name` ∈ fieldsKey | 见 `field-bind-exact-match-guide.md` |
177
+
178
+ ---
179
+
180
+ ## 四点五、修复存量报表(tableName 缺失)— 最小侵入路径 ✅ 已验证
181
+
182
+ > **场景**:报表已落库,但 `tableName` 缺失(旧脚本产物)。
183
+ > **报表 `1313789294296735745` 修复成功(HTTP 200 + 双向验证通过)。**
184
+
185
+ **关键接口认知(务必先读)**
186
+
187
+ | 接口 | 提交物 | 易错点 |
188
+ |------|--------|--------|
189
+ | `saveReportDevInfo` | **`workbook`**(gzip + base64) | ❌ 用 `fields=<json>` 提交 → **400 Bad Request** |
190
+ | `getReportDevInfo` | 返回 `fields[]` | ⚠️ 只有 `cellType: "Field"/"Const"` **类型标记**,**不含字段绑定明细**;明细只在 workbook 里 |
191
+
192
+ **`saveReportDevInfo` 完整表单(7 字段,multipart)**
193
+
194
+ ```
195
+ groupId / appId / reportId / name / nameLabelId / designKey / workbook
196
+ ```
197
+ - `designKey` 是**乐观锁**,必须取线上当前值(`getReportDevInfo.data.designKey`),否则拒写
198
+ - `workbook` = `base64(gzip(json.dumps(workbook), mtime=0))`
199
+
200
+ **获取「当前真实 workbook」(唯一可靠来源)**
201
+
202
+ 线上 `getReportDevInfo` **拿不到** `dataTable`(其 `workbookProps.sheets` 为空 `{}`)。正确做法:
203
+
204
+ 1. CDP 打开设计器:`https://{host}/sp/edc/report/designer/{reportId}`
205
+ 2. 派发 **Ctrl+S**(`Input.dispatchKeyEvent`,`modifiers:2`, `key:"s"`)触发一次保存
206
+ 3. 从 `Network.requestWillBeSent` 抓 `saveReportDevInfo` 的 `postData`
207
+ 4. 按 `name="workbook"\n\n(.*?)\n-{2,}`(**换行是 `\n`,不是 `\r\n`**)提取 → `gzip.decompress(base64.b64decode(...))`
208
+
209
+ **修复步骤**
210
+
211
+ ```python
212
+ wb = json.loads(解码后的workbook)
213
+ dt = wb["sheets"]["Sheet1"]["data"]["dataTable"] # {row: {col: {"style": {...}, "tag": {...}}}}
214
+ for r in dt:
215
+ for c in dt[r]:
216
+ ct = (dt[r][c].get("style") or {}).get("cellType") or {}
217
+ if ct.get("cellType") != "Field": continue
218
+ if str(ct.get("dataSetId")) == DS_OLD and not ct.get("tableName"):
219
+ newct = {}
220
+ for k, v in ct.items(): # 保持键顺序:插在 dataSetId 之后
221
+ newct[k] = v
222
+ if k == "dataSetId": newct["tableName"] = "党员发展(业务模块)"
223
+ dt[r][c]["style"]["cellType"] = newct
224
+ # 重新编码并提交 saveReportDevInfo
225
+ ```
226
+
227
+ **验证(双向)**
228
+
229
+ | 检查 | 通过标准 |
230
+ |------|----------|
231
+ | `getReportDevInfo` 回读 | `fields[]` 中带 `tableName` 的数量 = Field 总数 |
232
+ | 设计器实时 workbook | dataTable 内 `Field` 单元格 `tableName` 缺失数 = 0 |
233
+
234
+ > 结果:12/12 带 tableName ✅;设计器实时 workbook 11/11 Field 全齐、0 缺失 ✅
235
+
236
+ ---
237
+
238
+ ## 四点六、修复存量报表(tableName 缺失)— **免浏览器反向重建** ✅ 已验证(首选)
239
+
240
+ > **场景**:整张报表的 Field 单元格 `tableName` 全为空 → 设计器里单元格/属性面板不回显数据集名;
241
+ > 但**孤例**(某个手绑单元格)是对的。用户会说「参考 XX 单元格的规则才对,调整其他字段」。
242
+ >
243
+ > **报表 `1314970921403138199` 成功(2026-09-14)**:
244
+ > 48 个 Field 中 47 个 `tableName=""`,唯 `AM5`(row4,col38)为 `考勤汇总报表(优化)` → 一键补齐。
245
+
246
+ ### 为什么优先走这条路(而不是 §四点五 的 CDP 实际请求)
247
+
248
+ `getReportDevInfo` 的 `workbookProps.sheets` **恒为 `{}`**,拿不到 `dataTable`;
249
+ 但它的 **`fields[]` 是服务端对 workbook 的逐单元格回读**,字段足够重建:
250
+ `x/y`、`xCount/yCount`(合并跨度)、`leftX/leftY/topX/topY`(父子格)、`expandType/displayType`、
251
+ `countType`、`style`(整份 style JSON 串)、`name/text/nameIndex/dataSetId/fieldKey/tableName`、`width/height`。
252
+ **→ 不需要浏览器、不需要按键实际请求**。§四点五 的 CDP 路径仅作兜底。
253
+
254
+ ### 重建规则(照抄即可)
255
+
256
+ ```
257
+ dataTable[x][y] = { style: { ...JSON.parse(fields[].style), cellType }, tag: { fixed:false, formatterType:['common'] } }
258
+ spans = 每个 xCount>1 || yCount>1 的单元格 → { row:x, col:y, rowCount:xCount, colCount:yCount }
259
+ columns[c] = fields[].width(该列任一单元格); rows[r] = fields[].height
260
+ sheet.tag = sheetProps[0] 的 childMerge / showLocation / filterSheet / tableNameSuffix
261
+ + JSON.parse(columnConfig) + JSON.parse(sheetConfig)
262
+ workbook = { version, __scrollbarShowMax, __excelSheet, workbookConfig:{}, sheets }
263
+ cellType 键序 = 设计器真实键序(见 §一,逐字照排)
264
+ ```
265
+
266
+ ### ⚠️ 四个坑(踩过,必须照做,否则 `{"code":500,"msg":"报表内部错误"}`)
267
+
268
+ | # | 坑 | 正确做法 |
269
+ |---|----|----------|
270
+ | 1 | **`fields[]` 不回传 `typeName`/`allowOverflow`/`editorType`/`groupType`/`isActiveParent`/`arrowType`**,但服务端保存**必须要 `typeName`** | 这 6 个键由脚本**强制兜底**:`typeName='FieldCellType'/'ConstCellType'`、`allowOverflow=true`、`editorType=1`、`groupType=null`;`arrowType` 由 `expandType` 派生(Vertical/Horizontal/None);`isActiveParent` = Field 且 `leftX=-1 && topX=-1 && expandType∈{Vertical,Horizontal}` |
271
+ | 2 | `dateTimeProps` / `highlightDatas` / `allNeedFields` / `fillDtIndex` / `fillShow` / `fillAddLine` / `fillDelLine` / `fillMergeShow` / `fillSelectId` / `fillTextLength` 是**服务端保存时自行派生**的,设计器保存的 workbook 里**没有** | **排除,不得回写**(回写即 500) |
272
+ | 3 | `cellType.formatterType` 设计器保存值是 **`[]`**(不是 `['common']`;`['common']` 在 `tag.formatterType`) | 强制 `formatterType: []` |
273
+ | 4 | `designKey` **每次 GET 都返回新值**(即时令牌,不是静态乐观锁)→ 读后隔久了再存会失败 | 读取 `designKey` 与 `saveReportDevInfo` 必须**紧邻** |
274
+
275
+ 两个次要坑:
276
+ - `fields[].width/height` **可能合法为 0**(Excel 隐藏列,如「人员ID」)→ 不能用 `Number(w) || 40` 兜底,会把 0 吞成 40。
277
+ - 合并区覆盖但**无单元格**的列(日期块被合并掉的第 2/3 列)在 `fields[]` 里不存在 → 沿用左侧最近已知列宽,避免列宽塌成默认值。
278
+
279
+ > ⚠️ **与 `safe_report_save.js` 的一处分歧**:该脚本的 `stripWorkbookGridlineKeys()` 会删掉
280
+ > `gridline` / `__gridline`,注释称「存在即 500」。**在本环境(itsm.hongjing-wh.com:5001) 不成立**:
281
+ > 带 `__gridline: 0` 的 workbook 保存返回 200(报表 `1314970921403138199` 连续两次)。
282
+ > 该断言可能只对某站点成立 —— 保留删除动作更安全,但**不要据此判定其他 500 的成因**。
283
+
284
+ ### 合并单元格的副作用(重要)
285
+
286
+ 提交含合并区全部单元格的 workbook 时,**服务端/设计器会丢掉被合并覆盖的单元格,只留左上角**。
287
+ 例:日期带 `(0,45)(0,46)(0,47)` 三格 + span → 回读只剩 `(0,45)`。
288
+ **→ 重建时不要凭空补这些格子**;`fields[]` 里没有就是不该有。
289
+
290
+ ### 现成脚本
291
+
292
+ ```bash
293
+ # 默认 dry-run(打印计划 + 保真自检,不落库)
294
+ node e10-cli report fix table-name --report-id <rid> [--app-id <aid>] \
295
+ [--table-name "<数据集名>"] [--restore-from <备份workbook.json>]
296
+ # 确认后落库
297
+ node e10-cli report fix table-name --report-id <rid> --apply
298
+ ```
299
+ - 自动定值:`--table-name` > `fieldsKey[].datasetName` > `dataset/list[].name`
300
+ - `--restore-from`:把备份 workbook 中「线上已不存在」的单元格补回(例如被误删的手绑单元格)
301
+ - 内置门禁:重建保真度不一致即拒绝保存;保存后快照 diff 非 `tableName` 有差异则退出码 2
302
+ - 保存**必须** `--apply`(整份替换,防误覆盖)
303
+
304
+ ### 验收口径(保存前后 fields[] 快照 diff)
305
+
306
+ ```
307
+ 保存前 fields = A(含孤例),保存后 fields = B
308
+ diff(A,B) 期望:仅 `tableName` 变化(条数 = 缺失数)+ 可选 `(新增)`(补回的手绑单元格)
309
+ 其余键(cellType/name/dataSetId/父子格/expandType/displayType/style…)必须 0 差异
310
+ ```
311
+
312
+ 再跑 `e10-cli report verify all <rid> <appId>`(`ok:true, errors:[]`)+ 渲染回读
313
+ (`view/analysis` → `getJsonStr` → gunzip:`rowCount`/表头纵向合并条数/数据行非空数)确认版面未坏。
314
+
315
+ > ⚠️ **重建会覆盖服务端现状**:`saveReportDevInfo` 是**整份替换**。
316
+ > 若线上存在「`fields[]` 也看不到」的内容(未知键),重建会丢。故保存前**先把重建出的
317
+ > 『原样 workbook』落一份备份**(本脚本 `--restore-from` 亦依赖它补回被误删的手绑单元格)。
318
+
319
+
320
+ ---
321
+
322
+ - ❌ 只在 `fields[]` 回读层「补」tableName —— 必须写入 workbook 的 `cellType`,服务端才会落库
323
+ - ❌ **照抄 `fields[]` 的键集重建 cellType** —— `typeName` 等 6 个键服务端不回传,漏了必 500(见 §四点六 坑 1)
324
+ - ❌ **把服务端派生键回写 cellType**(`dateTimeProps`/`highlightDatas`/`allNeedFields`/`fill*`)—— 必 500(坑 2)
325
+ - ❌ 给共享表(form 契约)写 `(业务模块)` 后缀;给 SQL 视图(ETEAMS/sql)硬加后缀(形态 C 无后缀)
326
+ - ❌ 用 `saveReportDevInfo` 的 `fields[]` 数组下发字段 —— 服务端**只认 workbook**
327
+ - ❌ 重构时把本契约从 references 删除(本事故成因)
328
+
329
+ ---
330
+
331
+ ## 六、相关文档
332
+
333
+ | 文档 | 关系 |
334
+ |------|------|
335
+ | `add-dataset-registration-guide.md` | 两种注册形态(决定后缀) |
336
+ | `field-bind-exact-match-guide.md` | `name` 逐字匹配 fieldsKey |
337
+ | `spec-build-schema.md` | `build spec` 声明式用法 |
338
+ | `query-condition-api-guide.md` §2.1.2 | `browserType` 富对象(关联浏览分类元数据接口) |
339
+ | 旧包 `data_source_rule.md` §2.2/§2.5 | 本契约原始出处(已迁回本文件) |