weaver-work-cli 0.1.23 → 0.1.25

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 (358) hide show
  1. package/README.md +33 -3
  2. package/dist/core/output.js +53 -1
  3. package/dist/internal/e10/auth/commands.js +210 -17
  4. package/dist/internal/e10/auth/crypto.js +52 -12
  5. package/dist/internal/e10/auth/xiaoe.js +117 -35
  6. package/dist/internal/e10/context.js +3 -3
  7. package/dist/internal/e10/request-runtime.js +46 -4
  8. package/dist/shortcuts/caizhilian/file-upload/metadata.js +124 -0
  9. package/dist/shortcuts/caizhilian/file-upload/multipart.js +47 -0
  10. package/dist/shortcuts/caizhilian/file-upload/protocol.js +116 -0
  11. package/dist/shortcuts/caizhilian/file-upload/receipt.js +37 -0
  12. package/dist/shortcuts/caizhilian/host.js +13 -5
  13. package/dist/shortcuts/caizhilian/operations/handlers/file-upload.js +72 -179
  14. package/dist/shortcuts/caizhilian/operations/handlers/fileops.js +67 -1
  15. package/dist/shortcuts/caizhilian/operations/handlers/folder.js +701 -4
  16. package/dist/shortcuts/caizhilian/operations/handlers/setting-attach.js +198 -0
  17. package/dist/shortcuts/caizhilian/operations/registry.js +5 -1
  18. package/dist/shortcuts/caizhilian/operations/shared.js +32 -0
  19. package/dist/shortcuts/caizhilian/operations/specs.js +67 -0
  20. package/dist/shortcuts/workflow/continuation.js +14 -9
  21. package/dist/shortcuts/workflow/endpoints.js +11 -1
  22. package/dist/shortcuts/workflow/index.js +55 -1
  23. package/dist/shortcuts/workflow/operations/flow-status.js +63 -0
  24. package/dist/shortcuts/workflow/operations/form.js +1822 -547
  25. package/dist/shortcuts/workflow/operations/read.js +414 -13
  26. package/dist/shortcuts/workflow/operations/shared.js +28 -0
  27. package/dist/shortcuts/workflow/operations/write.js +5 -5
  28. package/dist/shortcuts/workflow/operations.js +8 -6
  29. package/dist/shortcuts/workflow/stdout-compact.js +33 -0
  30. package/docs/caizhilian.md +12 -5
  31. package/docs/e10-auth.md +25 -3
  32. package/node_modules/@napi-rs/keyring/LICENSE +21 -0
  33. package/node_modules/@napi-rs/keyring/README.md +19 -0
  34. package/node_modules/@napi-rs/keyring/index.d.ts +166 -0
  35. package/node_modules/@napi-rs/keyring/index.js +514 -0
  36. package/node_modules/@napi-rs/keyring/keytar.d.ts +53 -0
  37. package/node_modules/@napi-rs/keyring/keytar.js +26 -0
  38. package/node_modules/@napi-rs/keyring/package.json +125 -0
  39. package/node_modules/@napi-rs/keyring-darwin-arm64/README.md +3 -0
  40. package/node_modules/@napi-rs/keyring-darwin-arm64/keyring.darwin-arm64.node +0 -0
  41. package/node_modules/@napi-rs/keyring-darwin-arm64/package.json +32 -0
  42. package/node_modules/commander/LICENSE +22 -0
  43. package/node_modules/commander/Readme.md +1149 -0
  44. package/node_modules/commander/esm.mjs +16 -0
  45. package/node_modules/commander/index.js +24 -0
  46. package/node_modules/commander/lib/argument.js +149 -0
  47. package/node_modules/commander/lib/command.js +2662 -0
  48. package/node_modules/commander/lib/error.js +39 -0
  49. package/node_modules/commander/lib/help.js +709 -0
  50. package/node_modules/commander/lib/option.js +367 -0
  51. package/node_modules/commander/lib/suggestSimilar.js +101 -0
  52. package/node_modules/commander/package-support.json +16 -0
  53. package/node_modules/commander/package.json +82 -0
  54. package/node_modules/commander/typings/esm.d.mts +3 -0
  55. package/node_modules/commander/typings/index.d.ts +1045 -0
  56. package/package.json +5 -1
  57. package/skills/weaver-e10-builder/SKILL.md +281 -0
  58. package/skills/weaver-e10-builder/_catalog.md +94 -0
  59. package/skills/weaver-e10-builder/actionflows/CONTEXT.md +71 -0
  60. package/skills/weaver-e10-builder/actionflows/SKILL.md +176 -0
  61. package/skills/weaver-e10-builder/actionflows/docs/adr/0001-generated-actionflow-cleanup-identity.md +5 -0
  62. package/skills/weaver-e10-builder/actionflows/docs/adr/0002-preserve-existing-actionflow-on-update.md +36 -0
  63. package/skills/weaver-e10-builder/actionflows/references/components/calendar/MeetingCreate.md +19 -0
  64. package/skills/weaver-e10-builder/actionflows/references/components/calendar/ScheduleCreate.md +17 -0
  65. package/skills/weaver-e10-builder/actionflows/references/components/database/DMLExecute.md +38 -0
  66. package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentCopy.md +17 -0
  67. package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentMove.md +17 -0
  68. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentCopy.md +17 -0
  69. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentDelete.md +17 -0
  70. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentEdit.md +17 -0
  71. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentMove.md +17 -0
  72. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentPermissionChange.md +17 -0
  73. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRenewal.md +17 -0
  74. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRevert.md +17 -0
  75. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSave.md +17 -0
  76. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscription.md +17 -0
  77. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionApprove.md +17 -0
  78. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionSendBack.md +17 -0
  79. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionWithdraw.md +17 -0
  80. package/skills/weaver-e10-builder/actionflows/references/components/document/FileFolderSave.md +17 -0
  81. package/skills/weaver-e10-builder/actionflows/references/components/document/GetAttachmentInfo.md +17 -0
  82. package/skills/weaver-e10-builder/actionflows/references/components/document/GetDocumentInfo.md +17 -0
  83. package/skills/weaver-e10-builder/actionflows/references/components/document/ModifyDocumentStatus.md +17 -0
  84. package/skills/weaver-e10-builder/actionflows/references/components/document/ReplaceAttachment.md +17 -0
  85. package/skills/weaver-e10-builder/actionflows/references/components/document/UpdatePrintNum.md +17 -0
  86. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbAdd.md +100 -0
  87. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbDelete.md +23 -0
  88. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbRecover.md +17 -0
  89. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbSaveVersion.md +17 -0
  90. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbUpdate.md +67 -0
  91. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/DateTrigger.md +32 -0
  92. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EbGetDataById.md +17 -0
  93. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EnquiryForm.md +107 -0
  94. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventButton.md +33 -0
  95. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventFormData.md +19 -0
  96. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/TimeBatchTrigger.md +19 -0
  97. package/skills/weaver-e10-builder/actionflows/references/components/http/Http.md +77 -0
  98. package/skills/weaver-e10-builder/actionflows/references/components/logic/Condition.md +23 -0
  99. package/skills/weaver-e10-builder/actionflows/references/components/logic/LogicFlowSet.md +17 -0
  100. package/skills/weaver-e10-builder/actionflows/references/components/logic/MultipleExecution.md +38 -0
  101. package/skills/weaver-e10-builder/actionflows/references/components/logic/Output.md +37 -0
  102. package/skills/weaver-e10-builder/actionflows/references/components/message/InnerMQSend.md +50 -0
  103. package/skills/weaver-e10-builder/actionflows/references/components/message/SendMessage.md +30 -0
  104. package/skills/weaver-e10-builder/actionflows/references/components/personnel/AlterPersonStatus.md +30 -0
  105. package/skills/weaver-e10-builder/actionflows/references/components/personnel/HrmEmployeeUpdate.md +34 -0
  106. package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelAlterType.md +38 -0
  107. package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelOnboarding.md +36 -0
  108. package/skills/weaver-e10-builder/actionflows/references/components/serverless/ServerlessAction.md +42 -0
  109. package/skills/weaver-e10-builder/actionflows/references/components/trigger/CustomTrigger.md +82 -0
  110. package/skills/weaver-e10-builder/actionflows/references/components/trigger/InnerMQListener.md +41 -0
  111. package/skills/weaver-e10-builder/actionflows/references/components/trigger/SimpleScheduler.md +19 -0
  112. package/skills/weaver-e10-builder/actionflows/references/components/trigger/WebHookTrigger.md +91 -0
  113. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAddSign.md +17 -0
  114. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAgreeRejectApply.md +17 -0
  115. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCommit.md +17 -0
  116. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveConsulTurnTodo.md +17 -0
  117. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCreate.md +17 -0
  118. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDelete.md +19 -0
  119. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoCirculate.md +17 -0
  120. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoForward.md +17 -0
  121. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoTurnTodo.md +17 -0
  122. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveEntrust.md +19 -0
  123. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveIntervention.md +17 -0
  124. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveMandatoryArchiving.md +17 -0
  125. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveManualCC.md +17 -0
  126. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRefuseRejectApply.md +17 -0
  127. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRejectApply.md +17 -0
  128. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSave.md +17 -0
  129. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSendBack.md +17 -0
  130. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveShareEntry.md +17 -0
  131. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveTrigger.md +99 -0
  132. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveWithdraw.md +17 -0
  133. package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkFlowDocEmpowerment.md +17 -0
  134. package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkflowToDoc.md +17 -0
  135. package/skills/weaver-e10-builder/actionflows/references/condition_rules.md +100 -0
  136. package/skills/weaver-e10-builder/actionflows/references/dynamic_capability_matrix.md +39 -0
  137. package/skills/weaver-e10-builder/actionflows/references/dynamic_resources.md +41 -0
  138. package/skills/weaver-e10-builder/actionflows/references/examples/enquiry-form-batch-insert-scene2.json +1043 -0
  139. package/skills/weaver-e10-builder/actionflows/references/function_rules.md +15 -0
  140. package/skills/weaver-e10-builder/actionflows/references/trigger_runtime_notes.md +53 -0
  141. package/skills/weaver-e10-builder/assets/dom-structure/Bar.json +341 -0
  142. package/skills/weaver-e10-builder/assets/dom-structure/BarStack.json +341 -0
  143. package/skills/weaver-e10-builder/assets/dom-structure/Bubble.json +323 -0
  144. package/skills/weaver-e10-builder/assets/dom-structure/Calendar.json +515 -0
  145. package/skills/weaver-e10-builder/assets/dom-structure/Circular.json +337 -0
  146. package/skills/weaver-e10-builder/assets/dom-structure/CollapsePanel.json +289 -0
  147. package/skills/weaver-e10-builder/assets/dom-structure/Comment.json +617 -0
  148. package/skills/weaver-e10-builder/assets/dom-structure/CountDown.json +755 -0
  149. package/skills/weaver-e10-builder/assets/dom-structure/DigitalPanel.json +191 -0
  150. package/skills/weaver-e10-builder/assets/dom-structure/EbButton.json +387 -0
  151. package/skills/weaver-e10-builder/assets/dom-structure/FastCreate.json +242 -0
  152. package/skills/weaver-e10-builder/assets/dom-structure/Gauge.json +282 -0
  153. package/skills/weaver-e10-builder/assets/dom-structure/HBar.json +336 -0
  154. package/skills/weaver-e10-builder/assets/dom-structure/HBarStack.json +337 -0
  155. package/skills/weaver-e10-builder/assets/dom-structure/Line.json +341 -0
  156. package/skills/weaver-e10-builder/assets/dom-structure/NList.json +712 -0
  157. package/skills/weaver-e10-builder/assets/dom-structure/NavBar.json +274 -0
  158. package/skills/weaver-e10-builder/assets/dom-structure/NavPanel.json +390 -0
  159. package/skills/weaver-e10-builder/assets/dom-structure/NewTab.json +606 -0
  160. package/skills/weaver-e10-builder/assets/dom-structure/Nightingale.json +336 -0
  161. package/skills/weaver-e10-builder/assets/dom-structure/PageHeader.json +205 -0
  162. package/skills/weaver-e10-builder/assets/dom-structure/Picture.json +209 -0
  163. package/skills/weaver-e10-builder/assets/dom-structure/Pie.json +338 -0
  164. package/skills/weaver-e10-builder/assets/dom-structure/ProgressChart.json +299 -0
  165. package/skills/weaver-e10-builder/assets/dom-structure/SearchGlobal.json +628 -0
  166. package/skills/weaver-e10-builder/assets/dom-structure/Slide.json +489 -0
  167. package/skills/weaver-e10-builder/assets/dom-structure/Treemap.json +324 -0
  168. package/skills/weaver-e10-builder/assets/factory/chart-dimensions.json +536 -0
  169. package/skills/weaver-e10-builder/assets/factory/example-btn-progress-collapse-configured.json +2515 -0
  170. package/skills/weaver-e10-builder/assets/factory/example-configured-2.json +13805 -0
  171. package/skills/weaver-e10-builder/assets/factory/example-configured.json +6735 -0
  172. package/skills/weaver-e10-builder/assets/factory/factory-bar-stack.json +326 -0
  173. package/skills/weaver-e10-builder/assets/factory/factory-bar.json +222 -0
  174. package/skills/weaver-e10-builder/assets/factory/factory-bubble.json +322 -0
  175. package/skills/weaver-e10-builder/assets/factory/factory-calendar.json +325 -0
  176. package/skills/weaver-e10-builder/assets/factory/factory-circular.json +320 -0
  177. package/skills/weaver-e10-builder/assets/factory/factory-collapse-panel.json +132 -0
  178. package/skills/weaver-e10-builder/assets/factory/factory-comment.json +388 -0
  179. package/skills/weaver-e10-builder/assets/factory/factory-count-down.json +198 -0
  180. package/skills/weaver-e10-builder/assets/factory/factory-digital-panel.json +108 -0
  181. package/skills/weaver-e10-builder/assets/factory/factory-eb-button.json +150 -0
  182. package/skills/weaver-e10-builder/assets/factory/factory-fast-create.json +62 -0
  183. package/skills/weaver-e10-builder/assets/factory/factory-gauge.json +312 -0
  184. package/skills/weaver-e10-builder/assets/factory/factory-h-bar-stack.json +328 -0
  185. package/skills/weaver-e10-builder/assets/factory/factory-h-bar.json +326 -0
  186. package/skills/weaver-e10-builder/assets/factory/factory-line.json +212 -0
  187. package/skills/weaver-e10-builder/assets/factory/factory-nav-bar.json +167 -0
  188. package/skills/weaver-e10-builder/assets/factory/factory-nav-menu.json +144 -0
  189. package/skills/weaver-e10-builder/assets/factory/factory-nav-panel.json +338 -0
  190. package/skills/weaver-e10-builder/assets/factory/factory-new-tab.json +163 -0
  191. package/skills/weaver-e10-builder/assets/factory/factory-nightingale.json +312 -0
  192. package/skills/weaver-e10-builder/assets/factory/factory-nlist.json +112 -0
  193. package/skills/weaver-e10-builder/assets/factory/factory-page-header.json +171 -0
  194. package/skills/weaver-e10-builder/assets/factory/factory-picture.json +169 -0
  195. package/skills/weaver-e10-builder/assets/factory/factory-pie.json +212 -0
  196. package/skills/weaver-e10-builder/assets/factory/factory-progress-chart.json +162 -0
  197. package/skills/weaver-e10-builder/assets/factory/factory-search-global.json +104 -0
  198. package/skills/weaver-e10-builder/assets/factory/factory-slide.json +164 -0
  199. package/skills/weaver-e10-builder/assets/factory/factory-treemap.json +322 -0
  200. package/skills/weaver-e10-builder/assets/icons.db +0 -0
  201. package/skills/weaver-e10-builder/assets/sample/.claude/settings.local.json +8 -0
  202. package/skills/weaver-e10-builder/assets/sample/api/formApi.js +510 -0
  203. package/skills/weaver-e10-builder/assets/sample/config/config.js +0 -0
  204. package/skills/weaver-e10-builder/assets/sample/config/configLoad.js +0 -0
  205. package/skills/weaver-e10-builder/assets/sample/config/configLoad_default.js +0 -0
  206. package/skills/weaver-e10-builder/assets/sample/config/config_default.js +0 -0
  207. package/skills/weaver-e10-builder/assets/sample/entry.js +22 -0
  208. package/skills/weaver-e10-builder/assets/sample/eslint.config.cjs +48 -0
  209. package/skills/weaver-e10-builder/assets/sample/memo.md +0 -0
  210. package/skills/weaver-e10-builder/assets/sample/readme.js +8 -0
  211. package/skills/weaver-e10-builder/references/app/guide-app-publish.md +92 -0
  212. package/skills/weaver-e10-builder/references/auth/guide-auth.md +88 -0
  213. package/skills/weaver-e10-builder/references/coding/guide-edit-backfill.md +189 -0
  214. package/skills/weaver-e10-builder/references/coding/guide-form-crud.md +262 -0
  215. package/skills/weaver-e10-builder/references/coding/guide-page-code.md +244 -0
  216. package/skills/weaver-e10-builder/references/coding/guide-page-export.md +119 -0
  217. package/skills/weaver-e10-builder/references/coding/ref-compile-rules.md +130 -0
  218. package/skills/weaver-e10-builder/references/common/guide-plan-template.md +164 -0
  219. package/skills/weaver-e10-builder/references/common/map.md +153 -0
  220. package/skills/weaver-e10-builder/references/common/ref-cli-commands.md +635 -0
  221. package/skills/weaver-e10-builder/references/components/@weapp-Button.md +104 -0
  222. package/skills/weaver-e10-builder/references/components/base-Badge.md +100 -0
  223. package/skills/weaver-e10-builder/references/components/base-Dialog.md +358 -0
  224. package/skills/weaver-e10-builder/references/components/base-Empty.md +58 -0
  225. package/skills/weaver-e10-builder/references/components/base-Tag.md +112 -0
  226. package/skills/weaver-e10-builder/references/components/display-Alert.md +64 -0
  227. package/skills/weaver-e10-builder/references/components/display-Avatar.md +150 -0
  228. package/skills/weaver-e10-builder/references/components/display-Calendar.md +263 -0
  229. package/skills/weaver-e10-builder/references/components/display-Carousel.md +115 -0
  230. package/skills/weaver-e10-builder/references/components/display-Collapse.md +299 -0
  231. package/skills/weaver-e10-builder/references/components/display-FilePreview.md +49 -0
  232. package/skills/weaver-e10-builder/references/components/display-Icon.md +66 -0
  233. package/skills/weaver-e10-builder/references/components/display-List.md +320 -0
  234. package/skills/weaver-e10-builder/references/components/display-Pagination.md +41 -0
  235. package/skills/weaver-e10-builder/references/components/display-Spin.md +34 -0
  236. package/skills/weaver-e10-builder/references/components/display-Steps.md +89 -0
  237. package/skills/weaver-e10-builder/references/components/display-Table.md +160 -0
  238. package/skills/weaver-e10-builder/references/components/display-Title.md +117 -0
  239. package/skills/weaver-e10-builder/references/components/form-Checkbox.md +161 -0
  240. package/skills/weaver-e10-builder/references/components/form-DepartmentBrowser-api.md +52 -0
  241. package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser-api.md +51 -0
  242. package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser.md +51 -0
  243. package/skills/weaver-e10-builder/references/components/form-Input.md +123 -0
  244. package/skills/weaver-e10-builder/references/components/form-Radio.md +145 -0
  245. package/skills/weaver-e10-builder/references/components/form-Select.md +191 -0
  246. package/skills/weaver-e10-builder/references/components/form-Switch.md +46 -0
  247. package/skills/weaver-e10-builder/references/components/form-Upload.md +53 -0
  248. package/skills/weaver-e10-builder/references/components/generic-Echarts.md +102 -0
  249. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-components.md +130 -0
  250. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-css.md +127 -0
  251. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-factory.md +460 -0
  252. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-version.md +111 -0
  253. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer.md +288 -0
  254. package/skills/weaver-e10-builder/references/esb-interface/guide-import.md +34 -0
  255. package/skills/weaver-e10-builder/references/form/guide-create-form.md +248 -0
  256. package/skills/weaver-e10-builder/references/form/guide-ebuilder-filter.md +73 -0
  257. package/skills/weaver-e10-builder/references/form/guide-ebuilder-scope.md +82 -0
  258. package/skills/weaver-e10-builder/references/form/guide-field-linkage.md +123 -0
  259. package/skills/weaver-e10-builder/references/form/guide-form-archive-permission.md +175 -0
  260. package/skills/weaver-e10-builder/references/form/guide-form-association.md +124 -0
  261. package/skills/weaver-e10-builder/references/form/guide-form-button.md +169 -0
  262. package/skills/weaver-e10-builder/references/form/guide-form-data.md +78 -0
  263. package/skills/weaver-e10-builder/references/form/guide-form-formula-functions.md +343 -0
  264. package/skills/weaver-e10-builder/references/form/guide-form-layout-incremental.md +90 -0
  265. package/skills/weaver-e10-builder/references/form/guide-form-layout-planning.md +68 -0
  266. package/skills/weaver-e10-builder/references/form/guide-form-linkage.md +269 -0
  267. package/skills/weaver-e10-builder/references/form/guide-form-message.md +74 -0
  268. package/skills/weaver-e10-builder/references/form/guide-form-physical-table.md +146 -0
  269. package/skills/weaver-e10-builder/references/form/guide-form-serial-mark.md +47 -0
  270. package/skills/weaver-e10-builder/references/form/guide-form-sub-detail.md +82 -0
  271. package/skills/weaver-e10-builder/references/form/guide-form-view-permission.md +38 -0
  272. package/skills/weaver-e10-builder/references/form/guide-form-view.md +371 -0
  273. package/skills/weaver-e10-builder/references/form/guide-formula-linkage.md +281 -0
  274. package/skills/weaver-e10-builder/references/form/guide-list-columns.md +52 -0
  275. package/skills/weaver-e10-builder/references/form/guide-list-custom-text.md +52 -0
  276. package/skills/weaver-e10-builder/references/form/guide-list-stats.md +136 -0
  277. package/skills/weaver-e10-builder/references/form/guide-virtual-form.md +156 -0
  278. package/skills/weaver-e10-builder/references/form/ref-form-fields.md +293 -0
  279. package/skills/weaver-e10-builder/references/form/style-templates.md +97 -0
  280. package/skills/weaver-e10-builder/references/hrm/guide-matrix.md +245 -0
  281. package/skills/weaver-e10-builder/references/hrm/guide-org-employee.md +155 -0
  282. package/skills/weaver-e10-builder/references/menu/system-menus.md +75 -0
  283. package/skills/weaver-e10-builder/references/report/add-dataset-registration-guide.md +139 -0
  284. package/skills/weaver-e10-builder/references/report/ai-report-workflow.md +412 -0
  285. package/skills/weaver-e10-builder/references/report/api-report-build-fast-path.md +275 -0
  286. package/skills/weaver-e10-builder/references/report/app-datasource-lookup-guide.md +230 -0
  287. package/skills/weaver-e10-builder/references/report/cell-config-echo-guide.md +163 -0
  288. package/skills/weaver-e10-builder/references/report/cell-transform-guide.md +147 -0
  289. package/skills/weaver-e10-builder/references/report/condition-format-guide.md +140 -0
  290. package/skills/weaver-e10-builder/references/report/cross-dataset-filter-guide.md +304 -0
  291. package/skills/weaver-e10-builder/references/report/dataset-query-filter-guide.md +235 -0
  292. package/skills/weaver-e10-builder/references/report/dataset-sidebar-ops-guide.md +280 -0
  293. package/skills/weaver-e10-builder/references/report/dataset-table-field-contract-guide.md +339 -0
  294. package/skills/weaver-e10-builder/references/report/datasource-metadata-guide.md +365 -0
  295. package/skills/weaver-e10-builder/references/report/datasource-selection-and-parent-filter-guide.md +148 -0
  296. package/skills/weaver-e10-builder/references/report/date-range-query-reference.md +102 -0
  297. package/skills/weaver-e10-builder/references/report/default-header-style-guide.md +70 -0
  298. package/skills/weaver-e10-builder/references/report/designer-blank-prevention-guide.md +111 -0
  299. package/skills/weaver-e10-builder/references/report/event-hreflink-guide.md +184 -0
  300. package/skills/weaver-e10-builder/references/report/field-bind-exact-match-guide.md +208 -0
  301. package/skills/weaver-e10-builder/references/report/formula-cell-api-guide.md +258 -0
  302. package/skills/weaver-e10-builder/references/report/guide-report-build.md +131 -0
  303. package/skills/weaver-e10-builder/references/report/guide-report-modify.md +100 -0
  304. package/skills/weaver-e10-builder/references/report/guide-report-multisource.md +143 -0
  305. package/skills/weaver-e10-builder/references/report/guide-report-query.md +98 -0
  306. package/skills/weaver-e10-builder/references/report/hidden-row-and-header-merge-guide.md +100 -0
  307. package/skills/weaver-e10-builder/references/report/layout-showlocation-freeze-guide.md +167 -0
  308. package/skills/weaver-e10-builder/references/report/preaggregate-auto-disable-guide.md +107 -0
  309. package/skills/weaver-e10-builder/references/report/query-condition-api-guide.md +890 -0
  310. package/skills/weaver-e10-builder/references/report/ref-report-commands.md +122 -0
  311. package/skills/weaver-e10-builder/references/report/ref-report-pitfalls.md +226 -0
  312. package/skills/weaver-e10-builder/references/report/report-baseinfo-defaults-guide.md +117 -0
  313. package/skills/weaver-e10-builder/references/report/report-building-guide.md +511 -0
  314. package/skills/weaver-e10-builder/references/report/report-config-schema.md +445 -0
  315. package/skills/weaver-e10-builder/references/report/report-create-modes-guide.md +182 -0
  316. package/skills/weaver-e10-builder/references/report/report-data-model.md +447 -0
  317. package/skills/weaver-e10-builder/references/report/report-delivery-contract.md +101 -0
  318. package/skills/weaver-e10-builder/references/report/report-designer-feature-map.md +500 -0
  319. package/skills/weaver-e10-builder/references/report/report-internal-error-guide.md +78 -0
  320. package/skills/weaver-e10-builder/references/report/report-knowledge-base.md +389 -0
  321. package/skills/weaver-e10-builder/references/report/report-lifecycle-api-guide.md +392 -0
  322. package/skills/weaver-e10-builder/references/report/report-list-page-ops-guide.md +191 -0
  323. package/skills/weaver-e10-builder/references/report/report-permission-guide.md +365 -0
  324. package/skills/weaver-e10-builder/references/report/report-requirement-analysis-template.md +202 -0
  325. package/skills/weaver-e10-builder/references/report/report-self-check-guide.md +164 -0
  326. package/skills/weaver-e10-builder/references/report/safe-partial-save-guide.md +151 -0
  327. package/skills/weaver-e10-builder/references/report/snowflake-id-precision-guide.md +84 -0
  328. package/skills/weaver-e10-builder/references/report/spec-build-schema.md +294 -0
  329. package/skills/weaver-e10-builder/references/report/targeted-fix-guide.md +97 -0
  330. package/skills/weaver-e10-builder/references/report/user-request-scope-only-guide.md +82 -0
  331. package/skills/weaver-e10-builder/references/workflow/guide-function-management.md +154 -0
  332. package/skills/weaver-e10-builder/references/workflow/guide-opinion-settings.md +126 -0
  333. package/skills/weaver-e10-builder/references/workflow/guide-workflow-action.md +174 -0
  334. package/skills/weaver-e10-builder/references/workflow/guide-workflow-auth-resp.md +224 -0
  335. package/skills/weaver-e10-builder/references/workflow/guide-workflow-condition.md +447 -0
  336. package/skills/weaver-e10-builder/references/workflow/guide-workflow-node-layout.md +181 -0
  337. package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc-setting.md +248 -0
  338. package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc.md +68 -0
  339. package/skills/weaver-e10-builder/references/workflow/guide-workflow.md +527 -0
  340. package/skills/weaver-e10-builder/references/workflow/operator-matrix.md +76 -0
  341. package/skills/weaver-e10-caizhilian/SKILL.md +14 -4
  342. package/skills/weaver-e10-caizhilian/references/file-upload.md +100 -295
  343. package/skills/weaver-e10-caizhilian/references/files.md +15 -0
  344. package/skills/weaver-e10-caizhilian/references/folder.md +31 -3
  345. package/skills/weaver-e10-caizhilian/references/setting-attach.md +48 -3
  346. package/skills/weaver-e10-caizhilian/references/source-manifest.json +634 -25
  347. package/skills/weaver-e10-jiuchuanhui/SKILL.md +9 -1
  348. package/skills/weaver-e10-shared/SKILL.md +19 -5
  349. package/skills/weaver-e10-shared/references/e10-auth-and-session.md +25 -5
  350. package/skills/weaver-e10-workflow/SKILL.md +28 -47
  351. package/skills/weaver-e10-workflow/references/source-manifest.json +46 -36
  352. package/skills/weaver-e10-workflow/references/workflow-batch.md +2 -4
  353. package/skills/weaver-e10-workflow/references/workflow-create.md +261 -86
  354. package/skills/weaver-e10-workflow/references/workflow-edit.md +2 -1
  355. package/skills/weaver-e10-workflow/references/workflow-memory.md +3 -6
  356. package/skills/weaver-e10-workflow/references/workflow-operate.md +2 -1
  357. package/skills/weaver-e10-workflow/references/workflow-query.md +11 -9
  358. package/skills/weaver-e10-workflow/references/workflow-share.md +2 -0
@@ -0,0 +1,280 @@
1
+ # 设计器 · 数据集侧栏菜单操作(强制)
2
+
3
+ > **入口**:报表设计器左侧数据集标题 `…` 菜单
4
+ > **页面例**:`/sp/edc/report/designer/{reportId}`
5
+ > **CLI**:`e10-cli report dataset rename|agg|sort|replace|delete|check-used|preview`
6
+ > **鉴权**:e10-login 三项头(`api-auth-headers.md`)
7
+
8
+ ---
9
+
10
+ ## 〇、能力总表
11
+
12
+ | # | UI | API | 说明 |
13
+ |---|-----|-----|------|
14
+ | 1 | **自定义名称** | `GET /api/bs/edc/dataset/rename` | 改 `edc_dataset_dev.name` |
15
+ | 2 | **数据聚合** | `POST/GET …/dataset/aggregationSave\|Get` | 数据集级分组+度量;≠ 页面 `dataPreAgg` |
16
+ | 3 | **数据排序** | `POST/GET …/dataset/sortSave\|Get` | 数据集级多字段排序 |
17
+ | 4 | **替换数据集** | `POST /api/bs/edc/dataset/replaceDataset` | JSON:新源 + `fieldMap`;返回新 datasetId |
18
+ | 5 | **移除** | `POST /api/bs/edc/report/delDataset` | `sourceIds`=**datasetId**;被引用则禁删 |
19
+
20
+ 同菜单已有完整指南:
21
+
22
+ | UI | 文档 |
23
+ |----|------|
24
+ | 筛选条件 | `dataset-query-filter-guide.md`(`queryInfoSave`) |
25
+ | 数据预览 | `GET /api/bs/edc/dataset/getPreviewData?dataSetId=`(本指南 §六) |
26
+
27
+ ---
28
+
29
+ ## 一、自定义名称
30
+
31
+ ```http
32
+ GET /api/bs/edc/dataset/rename?datasetId={id}&name={显示名}&nameLabelId=-1
33
+ ```
34
+
35
+ | 参数 | 必填 | 说明 |
36
+ |------|------|------|
37
+ | `datasetId` | ✅ | 侧栏数据集实例 id |
38
+ | `name` | ✅ | 自定义显示名(空名前端拦截) |
39
+ | `nameLabelId` | 建议 | 无多语言传 `-1` |
40
+
41
+ ```bash
42
+ e10-cli report dataset rename --dataset-id <id> --name "轻资产主表" [--name-label-id -1]
43
+ ```
44
+
45
+ ---
46
+
47
+ ## 二、数据聚合(侧栏 · 勿与预聚合混淆)
48
+
49
+ ### 2.1 接口
50
+
51
+ | 动作 | 方法 | 路径 |
52
+ |------|------|------|
53
+ | 读 | GET | `/api/bs/edc/dataset/aggregationGet?datasetId=` |
54
+ | 写 | POST | `/api/bs/edc/dataset/aggregationSave` form:`datasetId` + `aggreData`(JSON 数组字符串) |
55
+
56
+ 写时服务端先删该 dataset 全部聚合行再插入(全量替换)。表:`edc_reportdsaggregate_dev`。
57
+
58
+ ### 2.2 `aggreData` 结构
59
+
60
+ ```json
61
+ [
62
+ {
63
+ "fieldId": "{datasetId}.{tableId}.{fieldName}",
64
+ "countType": "sum",
65
+ "showName": "库存合计",
66
+ "fieldName": "s_sum_field_xxx"
67
+ },
68
+ { "groupBy": "{datasetId}.{tableId}.{fieldName}" }
69
+ ]
70
+ ```
71
+
72
+ | 行类型 | 关键字段 | 说明 |
73
+ |--------|----------|------|
74
+ | 度量 | `fieldId` + `countType` + `showName` | `countType`:`sum`/`max`/`min`/`avg`/`count` 等;`fieldName` 常为 `s_{countType}_{leaf}` |
75
+ | 维度 | `groupBy` | 完整 fieldKey;无 `countType` |
76
+
77
+ 规则(对齐设计器):
78
+
79
+ - 须同时有维度 + 度量,或两者皆空(清空聚合)
80
+ - 保存后 `fieldsAndOriginFields` 可见字段变为「分组字段 + 度量别名」
81
+
82
+ ### 2.3 ≠ 页面「数据预聚合」
83
+
84
+ | | 侧栏「数据聚合」 | 页面「解析优化 · 数据预聚合」 |
85
+ |--|------------------|------------------------------|
86
+ | 存储 | `aggregationSave` / `edc_reportdsaggregate_dev` | `sheetConfig.dataPreAgg` |
87
+ | 指南 | **本文 §二** | `preaggregate-auto-disable-guide.md` |
88
+ | CLI | `e10-cli report dataset agg …` | `e10-cli report py preagg` |
89
+
90
+ 有侧栏聚合时,引擎侧预聚合路径会被跳过/弱化。
91
+
92
+ ```bash
93
+ e10-cli report dataset agg get --dataset-id <id>
94
+ e10-cli report dataset agg save --dataset-id <id> --file aggre.json
95
+ e10-cli report dataset agg clear --dataset-id <id>
96
+ ```
97
+
98
+ ---
99
+
100
+ ## 三、数据排序
101
+
102
+ | 动作 | 方法 | 路径 |
103
+ |------|------|------|
104
+ | 读 | GET | `/api/bs/edc/dataset/sortGet?datasetId=` |
105
+ | 写 | POST | `/api/bs/edc/dataset/sortSave` form:`datasetId` + `sortData` |
106
+
107
+ 全量替换;表 `edc_reportdsorderby_dev`。数组下标 = `priority`(越前越优先)。
108
+
109
+ ```json
110
+ [
111
+ { "fieldId": "{datasetId}.{tableId}.{name}", "orderType": "asc" },
112
+ { "fieldId": "{datasetId}.{tableId}.{name2}", "orderType": "desc" }
113
+ ]
114
+ ```
115
+
116
+ `orderType`:`asc` / `desc`。清空:提交 `[]` 或无 `fieldId` 的占位被设计器清掉。
117
+
118
+ ```bash
119
+ e10-cli report dataset sort get --dataset-id <id>
120
+ e10-cli report dataset sort save --dataset-id <id> --file sort.json
121
+ e10-cli report dataset sort clear --dataset-id <id>
122
+ ```
123
+
124
+ ---
125
+
126
+ ## 四、替换数据集
127
+
128
+ ```http
129
+ POST /api/bs/edc/dataset/replaceDataset
130
+ Content-Type: application/json
131
+ ```
132
+
133
+ ```json
134
+ {
135
+ "reportId": 1313049481975267329,
136
+ "builtinId": 旧datasetId,
137
+ "name": "新数据源显示名",
138
+ "sourceType": "LOGIC",
139
+ "sourceId": "新表单sourceId",
140
+ "sourceGroup": "weaver-ebuilder-form-service",
141
+ "appid": "<appId>",
142
+ "fieldMap": [
143
+ {
144
+ "builtinField": "旧字段leaf或度量别名",
145
+ "replaceField": "新字段name",
146
+ "replaceFieldName": "新显示名"
147
+ }
148
+ ]
149
+ }
150
+ ```
151
+
152
+ - 返回 `data` = **新 datasetId**(字符串)
153
+ - 服务端:新建数据集 → 映射字段/筛选/聚合/排序/查询引用 → 删除旧 `builtinId`
154
+ - 影响分析(可选):`POST /api/bs/edc/report/getReplaceFields`(`dataSetId`/`sheetId`/`fields`)
155
+
156
+ ```bash
157
+ e10-cli report dataset replace --file replace-body.json
158
+ ```
159
+
160
+ 替换后须用新 id 再 `fieldsAndOriginFields` / 必要时 remap 单元格 `dataSetId`/`fieldKey`。
161
+
162
+ ---
163
+
164
+ ## 五、移除(删除数据集)
165
+
166
+ ### 5.1 引用检查
167
+
168
+ ```http
169
+ GET /api/bs/edc/dataset/checkDataSetUsed?reportId=&datasetId=
170
+ ```
171
+
172
+ `data=true` → 设计器禁止移除(字段等仍引用)。Agent 须先 check,为 true 时提示用户先清画布引用。
173
+
174
+ ### 5.2 删除
175
+
176
+ ```http
177
+ POST /api/bs/edc/report/delDataset
178
+ form: reportId=<报表ID>&sourceIds=<datasetId>
179
+ ```
180
+
181
+ > **`sourceIds` 参数名历史遗留,实际传的是 datasetId**,不是表单 sourceId。
182
+
183
+ ```bash
184
+ e10-cli report dataset check-used --report-id <rid> --dataset-id <did>
185
+ e10-cli report dataset delete --report-id <rid> --dataset-id <did> [--force]
186
+ ```
187
+
188
+ 无 `--force` 时若 `checkDataSetUsed=true` 则拒绝删除。
189
+
190
+ 注册错误重建场景见 `add-dataset-registration-guide.md`(须带正确 `reportId`+`sourceIds=datasetId`)。
191
+
192
+ ### 5.3 ⚠️ 侧栏出现「重复数据源分组」的根因与清理(2026-09-11 实证)
193
+
194
+ **症状**:设计器左侧「数据集」下出现 **两个同名分组**,例如 `党员发展` 与 `党员发展(业务模块)`,字段列表完全相同;或分组名缺失 `(业务模块)` 后缀。
195
+
196
+ **根因(两层,须分查)**:
197
+
198
+ | 层 | 现象 | 定位接口 |
199
+ |---|---|---|
200
+ | **① 报表挂载了重复数据集** | `dataset/list` 返回 **2 条同 `sourceId`、同 `name`** 的数据集记录 | `GET /api/bs/edc/dataset/list?hasField=true&reportId=` |
201
+ | **② 画布存在游离单元格** | 某单元格 `dataSetId` 指向第二个数据集,常在**另一张 sheet 或表格远端的孤立格** | 遍历 workbook 全部 sheet 的 `dataTable`,按 `cellType.dataSetId` 统计 |
202
+
203
+ > **关键陷阱**:游离单元格**不一定在 Sheet1**。本例游标藏在 **Sheet2 的 B3**(`sheetIndex:1, x:2, y:1`),只扫 Sheet1 会漏诊。**必须遍历全部 sheet**。
204
+
205
+ **左侧树显示名的权威来源**:`GET /api/bs/edc/dataset/listWithPageReport?hasField=true&reportId=` → 返回**源级**记录(`id` 是 **sourceId 而非 datasetId**),其 `name`/`tableText` 决定分组显示名。
206
+ - 正常:`name = '事项清单(uf_ydsxqd_1)'`(业务模块名 + 物理表名)
207
+ - 异常:`name = '党员发展'`(纯中文名,无后缀)→ 面板显示纯名
208
+
209
+ > **一键体检**:`e10-cli report verify bind <reportId> [appId]` 会直接列出
210
+ > `duplicate_dataset_mount`(同源重复挂载)、`dataset_name_mismatch`(回显名 vs 源级名)、
211
+ > `display_mismatch`(单元格文案 vs 字段真实显示名)三类待确认项。
212
+ >
213
+ > ⚠️ **非物理表表单**(`form/obj/getList` → `isPhysical:false`、`tableType:""`)本身就没有物理表名,
214
+ > 源级名只能是纯中文名(本例报表 `1313789294296735745` 的 14 张表全为此类)——
215
+ > 这**不是**报表脚本能改的,要带后缀需在 eBuilder 侧给表单配置物理表/业务模块。
216
+
217
+ **清理步骤(顺序不可颠倒)**:
218
+
219
+ ```python
220
+ # 1) 先摘除游标:遍历 workbook 全 sheet,删除/改绑指向重复数据集的单元格
221
+ for sheet_name, sh in wb["sheets"].items():
222
+ dt = (sh.get("data") or {}).get("dataTable") or {}
223
+ for ri in list(dt):
224
+ for ci in list(dt[ri]):
225
+ ct = ((dt[ri][ci].get("style") or {}).get("cellType")) or {}
226
+ if ct.get("dataSetId") == DUP_DS:
227
+ del dt[ri][ci] # 或改绑 KEEP_DS
228
+
229
+ # 2) saveReportDevInfo 落库(提交 workbook,gzip+base64,带 designKey)
230
+
231
+ # 3) 再调用 delDataset 删除重复数据集
232
+ POST /api/bs/edc/report/delDataset form: reportId=<rid>&sourceIds=<dupDatasetId>
233
+
234
+ # 4) 校验
235
+ dataset/list → 只剩 1 条同源数据集
236
+ getReportDevInfo.fields → 无任何字段引用 DUP_DS(注意看 sheetIndex 分布)
237
+ 列表/面板 → 顶层分组只剩 1 个
238
+ ```
239
+
240
+ > **顺序原因**:被引用时 `delDataset` 会被服务端拒绝(引用检查)。必须先清画布再删数据集。
241
+ >
242
+ > **验证要点**:`getReportDevInfo.fields` 按 `(sheetIndex, dataSetId)` 分组统计,确认 `DUP_DS` 计数为 0 —— 只看 Sheet1 会假阳性通过。
243
+ >
244
+ > **`delDataset` 返回 `code:200` 但 `data` 为空是正常的**;探针传 `sourceIds=0` 同样返回 200 且不删任何东西,**不可用返回码判断是否真的删掉了**,必须回读 `dataset/list` 核对。
245
+
246
+ ---
247
+
248
+ ## 六、数据预览(同菜单)
249
+
250
+ ```http
251
+ GET /api/bs/edc/dataset/getPreviewData?dataSetId={id}&isFront=true
252
+ ```
253
+
254
+ ```bash
255
+ e10-cli report dataset preview --dataset-id <id>
256
+ ```
257
+
258
+ ---
259
+
260
+ ## 七、Agent 检查清单
261
+
262
+ - [ ] 自定义名称走 `rename`,未误改 `sourceName` 当永久显示名唯一手段
263
+ - [ ] 「数据聚合」未写成改 `sheetConfig.dataPreAgg`
264
+ - [ ] 聚合/排序 JSON 用完整 fieldKey;保存后回读 Get
265
+ - [ ] 替换带 `fieldMap`;拿到新 datasetId 再继续
266
+ - [ ] 删除前 `checkDataSetUsed`;`sourceIds`=datasetId
267
+ - [ ] **重复分组定位:先 `dataset/list` 查重复数据集,再遍历「全部 sheet」找游离单元格**(勿只看 Sheet1)
268
+ - [ ] 清理顺序:**先摘游标 → saveReportDevInfo → 再 delDataset**
269
+ - [ ] 删除成功以 **回读 `dataset/list`** 为准,不以返回码为准
270
+
271
+ ---
272
+
273
+ ## 关联
274
+
275
+ - `dataset-query-filter-guide.md` — 筛选条件
276
+ - `add-dataset-registration-guide.md` — 添加/重建
277
+ - `preaggregate-auto-disable-guide.md` — 页面预聚合
278
+ - `dataset-table-field-contract-guide.md` — 字段落库契约(`tableName` 等)
279
+ - `report-designer-feature-map.md` §六
280
+ - `field-bind-exact-match-guide.md` — 字段绑定
@@ -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 | 本契约原始出处(已迁回本文件) |