weaver-work-cli 0.1.24 → 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 (337) hide show
  1. package/README.md +10 -1
  2. package/dist/core/output.js +53 -1
  3. package/dist/internal/e10/auth/commands.js +17 -2
  4. package/dist/internal/e10/auth/crypto.js +52 -12
  5. package/dist/internal/e10/auth/xiaoe.js +112 -39
  6. package/dist/shortcuts/caizhilian/operations/handlers/fileops.js +67 -1
  7. package/dist/shortcuts/caizhilian/operations/handlers/setting-attach.js +198 -0
  8. package/dist/shortcuts/caizhilian/operations/shared.js +32 -0
  9. package/dist/shortcuts/caizhilian/operations/specs.js +15 -0
  10. package/dist/shortcuts/workflow/index.js +55 -1
  11. package/dist/shortcuts/workflow/operations/form.js +1252 -109
  12. package/dist/shortcuts/workflow/operations/read.js +75 -35
  13. package/dist/shortcuts/workflow/operations/shared.js +25 -0
  14. package/dist/shortcuts/workflow/stdout-compact.js +33 -0
  15. package/docs/caizhilian.md +4 -3
  16. package/docs/e10-auth.md +8 -1
  17. package/node_modules/@napi-rs/keyring/LICENSE +21 -0
  18. package/node_modules/@napi-rs/keyring/README.md +19 -0
  19. package/node_modules/@napi-rs/keyring/index.d.ts +166 -0
  20. package/node_modules/@napi-rs/keyring/index.js +514 -0
  21. package/node_modules/@napi-rs/keyring/keytar.d.ts +53 -0
  22. package/node_modules/@napi-rs/keyring/keytar.js +26 -0
  23. package/node_modules/@napi-rs/keyring/package.json +125 -0
  24. package/node_modules/@napi-rs/keyring-darwin-arm64/README.md +3 -0
  25. package/node_modules/@napi-rs/keyring-darwin-arm64/keyring.darwin-arm64.node +0 -0
  26. package/node_modules/@napi-rs/keyring-darwin-arm64/package.json +32 -0
  27. package/node_modules/commander/LICENSE +22 -0
  28. package/node_modules/commander/Readme.md +1149 -0
  29. package/node_modules/commander/esm.mjs +16 -0
  30. package/node_modules/commander/index.js +24 -0
  31. package/node_modules/commander/lib/argument.js +149 -0
  32. package/node_modules/commander/lib/command.js +2662 -0
  33. package/node_modules/commander/lib/error.js +39 -0
  34. package/node_modules/commander/lib/help.js +709 -0
  35. package/node_modules/commander/lib/option.js +367 -0
  36. package/node_modules/commander/lib/suggestSimilar.js +101 -0
  37. package/node_modules/commander/package-support.json +16 -0
  38. package/node_modules/commander/package.json +82 -0
  39. package/node_modules/commander/typings/esm.d.mts +3 -0
  40. package/node_modules/commander/typings/index.d.ts +1045 -0
  41. package/package.json +5 -1
  42. package/skills/weaver-e10-builder/SKILL.md +281 -0
  43. package/skills/weaver-e10-builder/_catalog.md +94 -0
  44. package/skills/weaver-e10-builder/actionflows/CONTEXT.md +71 -0
  45. package/skills/weaver-e10-builder/actionflows/SKILL.md +176 -0
  46. package/skills/weaver-e10-builder/actionflows/docs/adr/0001-generated-actionflow-cleanup-identity.md +5 -0
  47. package/skills/weaver-e10-builder/actionflows/docs/adr/0002-preserve-existing-actionflow-on-update.md +36 -0
  48. package/skills/weaver-e10-builder/actionflows/references/components/calendar/MeetingCreate.md +19 -0
  49. package/skills/weaver-e10-builder/actionflows/references/components/calendar/ScheduleCreate.md +17 -0
  50. package/skills/weaver-e10-builder/actionflows/references/components/database/DMLExecute.md +38 -0
  51. package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentCopy.md +17 -0
  52. package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentMove.md +17 -0
  53. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentCopy.md +17 -0
  54. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentDelete.md +17 -0
  55. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentEdit.md +17 -0
  56. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentMove.md +17 -0
  57. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentPermissionChange.md +17 -0
  58. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRenewal.md +17 -0
  59. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRevert.md +17 -0
  60. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSave.md +17 -0
  61. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscription.md +17 -0
  62. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionApprove.md +17 -0
  63. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionSendBack.md +17 -0
  64. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionWithdraw.md +17 -0
  65. package/skills/weaver-e10-builder/actionflows/references/components/document/FileFolderSave.md +17 -0
  66. package/skills/weaver-e10-builder/actionflows/references/components/document/GetAttachmentInfo.md +17 -0
  67. package/skills/weaver-e10-builder/actionflows/references/components/document/GetDocumentInfo.md +17 -0
  68. package/skills/weaver-e10-builder/actionflows/references/components/document/ModifyDocumentStatus.md +17 -0
  69. package/skills/weaver-e10-builder/actionflows/references/components/document/ReplaceAttachment.md +17 -0
  70. package/skills/weaver-e10-builder/actionflows/references/components/document/UpdatePrintNum.md +17 -0
  71. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbAdd.md +100 -0
  72. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbDelete.md +23 -0
  73. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbRecover.md +17 -0
  74. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbSaveVersion.md +17 -0
  75. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbUpdate.md +67 -0
  76. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/DateTrigger.md +32 -0
  77. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EbGetDataById.md +17 -0
  78. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EnquiryForm.md +107 -0
  79. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventButton.md +33 -0
  80. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventFormData.md +19 -0
  81. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/TimeBatchTrigger.md +19 -0
  82. package/skills/weaver-e10-builder/actionflows/references/components/http/Http.md +77 -0
  83. package/skills/weaver-e10-builder/actionflows/references/components/logic/Condition.md +23 -0
  84. package/skills/weaver-e10-builder/actionflows/references/components/logic/LogicFlowSet.md +17 -0
  85. package/skills/weaver-e10-builder/actionflows/references/components/logic/MultipleExecution.md +38 -0
  86. package/skills/weaver-e10-builder/actionflows/references/components/logic/Output.md +37 -0
  87. package/skills/weaver-e10-builder/actionflows/references/components/message/InnerMQSend.md +50 -0
  88. package/skills/weaver-e10-builder/actionflows/references/components/message/SendMessage.md +30 -0
  89. package/skills/weaver-e10-builder/actionflows/references/components/personnel/AlterPersonStatus.md +30 -0
  90. package/skills/weaver-e10-builder/actionflows/references/components/personnel/HrmEmployeeUpdate.md +34 -0
  91. package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelAlterType.md +38 -0
  92. package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelOnboarding.md +36 -0
  93. package/skills/weaver-e10-builder/actionflows/references/components/serverless/ServerlessAction.md +42 -0
  94. package/skills/weaver-e10-builder/actionflows/references/components/trigger/CustomTrigger.md +82 -0
  95. package/skills/weaver-e10-builder/actionflows/references/components/trigger/InnerMQListener.md +41 -0
  96. package/skills/weaver-e10-builder/actionflows/references/components/trigger/SimpleScheduler.md +19 -0
  97. package/skills/weaver-e10-builder/actionflows/references/components/trigger/WebHookTrigger.md +91 -0
  98. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAddSign.md +17 -0
  99. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAgreeRejectApply.md +17 -0
  100. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCommit.md +17 -0
  101. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveConsulTurnTodo.md +17 -0
  102. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCreate.md +17 -0
  103. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDelete.md +19 -0
  104. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoCirculate.md +17 -0
  105. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoForward.md +17 -0
  106. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoTurnTodo.md +17 -0
  107. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveEntrust.md +19 -0
  108. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveIntervention.md +17 -0
  109. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveMandatoryArchiving.md +17 -0
  110. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveManualCC.md +17 -0
  111. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRefuseRejectApply.md +17 -0
  112. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRejectApply.md +17 -0
  113. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSave.md +17 -0
  114. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSendBack.md +17 -0
  115. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveShareEntry.md +17 -0
  116. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveTrigger.md +99 -0
  117. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveWithdraw.md +17 -0
  118. package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkFlowDocEmpowerment.md +17 -0
  119. package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkflowToDoc.md +17 -0
  120. package/skills/weaver-e10-builder/actionflows/references/condition_rules.md +100 -0
  121. package/skills/weaver-e10-builder/actionflows/references/dynamic_capability_matrix.md +39 -0
  122. package/skills/weaver-e10-builder/actionflows/references/dynamic_resources.md +41 -0
  123. package/skills/weaver-e10-builder/actionflows/references/examples/enquiry-form-batch-insert-scene2.json +1043 -0
  124. package/skills/weaver-e10-builder/actionflows/references/function_rules.md +15 -0
  125. package/skills/weaver-e10-builder/actionflows/references/trigger_runtime_notes.md +53 -0
  126. package/skills/weaver-e10-builder/assets/dom-structure/Bar.json +341 -0
  127. package/skills/weaver-e10-builder/assets/dom-structure/BarStack.json +341 -0
  128. package/skills/weaver-e10-builder/assets/dom-structure/Bubble.json +323 -0
  129. package/skills/weaver-e10-builder/assets/dom-structure/Calendar.json +515 -0
  130. package/skills/weaver-e10-builder/assets/dom-structure/Circular.json +337 -0
  131. package/skills/weaver-e10-builder/assets/dom-structure/CollapsePanel.json +289 -0
  132. package/skills/weaver-e10-builder/assets/dom-structure/Comment.json +617 -0
  133. package/skills/weaver-e10-builder/assets/dom-structure/CountDown.json +755 -0
  134. package/skills/weaver-e10-builder/assets/dom-structure/DigitalPanel.json +191 -0
  135. package/skills/weaver-e10-builder/assets/dom-structure/EbButton.json +387 -0
  136. package/skills/weaver-e10-builder/assets/dom-structure/FastCreate.json +242 -0
  137. package/skills/weaver-e10-builder/assets/dom-structure/Gauge.json +282 -0
  138. package/skills/weaver-e10-builder/assets/dom-structure/HBar.json +336 -0
  139. package/skills/weaver-e10-builder/assets/dom-structure/HBarStack.json +337 -0
  140. package/skills/weaver-e10-builder/assets/dom-structure/Line.json +341 -0
  141. package/skills/weaver-e10-builder/assets/dom-structure/NList.json +712 -0
  142. package/skills/weaver-e10-builder/assets/dom-structure/NavBar.json +274 -0
  143. package/skills/weaver-e10-builder/assets/dom-structure/NavPanel.json +390 -0
  144. package/skills/weaver-e10-builder/assets/dom-structure/NewTab.json +606 -0
  145. package/skills/weaver-e10-builder/assets/dom-structure/Nightingale.json +336 -0
  146. package/skills/weaver-e10-builder/assets/dom-structure/PageHeader.json +205 -0
  147. package/skills/weaver-e10-builder/assets/dom-structure/Picture.json +209 -0
  148. package/skills/weaver-e10-builder/assets/dom-structure/Pie.json +338 -0
  149. package/skills/weaver-e10-builder/assets/dom-structure/ProgressChart.json +299 -0
  150. package/skills/weaver-e10-builder/assets/dom-structure/SearchGlobal.json +628 -0
  151. package/skills/weaver-e10-builder/assets/dom-structure/Slide.json +489 -0
  152. package/skills/weaver-e10-builder/assets/dom-structure/Treemap.json +324 -0
  153. package/skills/weaver-e10-builder/assets/factory/chart-dimensions.json +536 -0
  154. package/skills/weaver-e10-builder/assets/factory/example-btn-progress-collapse-configured.json +2515 -0
  155. package/skills/weaver-e10-builder/assets/factory/example-configured-2.json +13805 -0
  156. package/skills/weaver-e10-builder/assets/factory/example-configured.json +6735 -0
  157. package/skills/weaver-e10-builder/assets/factory/factory-bar-stack.json +326 -0
  158. package/skills/weaver-e10-builder/assets/factory/factory-bar.json +222 -0
  159. package/skills/weaver-e10-builder/assets/factory/factory-bubble.json +322 -0
  160. package/skills/weaver-e10-builder/assets/factory/factory-calendar.json +325 -0
  161. package/skills/weaver-e10-builder/assets/factory/factory-circular.json +320 -0
  162. package/skills/weaver-e10-builder/assets/factory/factory-collapse-panel.json +132 -0
  163. package/skills/weaver-e10-builder/assets/factory/factory-comment.json +388 -0
  164. package/skills/weaver-e10-builder/assets/factory/factory-count-down.json +198 -0
  165. package/skills/weaver-e10-builder/assets/factory/factory-digital-panel.json +108 -0
  166. package/skills/weaver-e10-builder/assets/factory/factory-eb-button.json +150 -0
  167. package/skills/weaver-e10-builder/assets/factory/factory-fast-create.json +62 -0
  168. package/skills/weaver-e10-builder/assets/factory/factory-gauge.json +312 -0
  169. package/skills/weaver-e10-builder/assets/factory/factory-h-bar-stack.json +328 -0
  170. package/skills/weaver-e10-builder/assets/factory/factory-h-bar.json +326 -0
  171. package/skills/weaver-e10-builder/assets/factory/factory-line.json +212 -0
  172. package/skills/weaver-e10-builder/assets/factory/factory-nav-bar.json +167 -0
  173. package/skills/weaver-e10-builder/assets/factory/factory-nav-menu.json +144 -0
  174. package/skills/weaver-e10-builder/assets/factory/factory-nav-panel.json +338 -0
  175. package/skills/weaver-e10-builder/assets/factory/factory-new-tab.json +163 -0
  176. package/skills/weaver-e10-builder/assets/factory/factory-nightingale.json +312 -0
  177. package/skills/weaver-e10-builder/assets/factory/factory-nlist.json +112 -0
  178. package/skills/weaver-e10-builder/assets/factory/factory-page-header.json +171 -0
  179. package/skills/weaver-e10-builder/assets/factory/factory-picture.json +169 -0
  180. package/skills/weaver-e10-builder/assets/factory/factory-pie.json +212 -0
  181. package/skills/weaver-e10-builder/assets/factory/factory-progress-chart.json +162 -0
  182. package/skills/weaver-e10-builder/assets/factory/factory-search-global.json +104 -0
  183. package/skills/weaver-e10-builder/assets/factory/factory-slide.json +164 -0
  184. package/skills/weaver-e10-builder/assets/factory/factory-treemap.json +322 -0
  185. package/skills/weaver-e10-builder/assets/icons.db +0 -0
  186. package/skills/weaver-e10-builder/assets/sample/.claude/settings.local.json +8 -0
  187. package/skills/weaver-e10-builder/assets/sample/api/formApi.js +510 -0
  188. package/skills/weaver-e10-builder/assets/sample/config/config.js +0 -0
  189. package/skills/weaver-e10-builder/assets/sample/config/configLoad.js +0 -0
  190. package/skills/weaver-e10-builder/assets/sample/config/configLoad_default.js +0 -0
  191. package/skills/weaver-e10-builder/assets/sample/config/config_default.js +0 -0
  192. package/skills/weaver-e10-builder/assets/sample/entry.js +22 -0
  193. package/skills/weaver-e10-builder/assets/sample/eslint.config.cjs +48 -0
  194. package/skills/weaver-e10-builder/assets/sample/memo.md +0 -0
  195. package/skills/weaver-e10-builder/assets/sample/readme.js +8 -0
  196. package/skills/weaver-e10-builder/references/app/guide-app-publish.md +92 -0
  197. package/skills/weaver-e10-builder/references/auth/guide-auth.md +88 -0
  198. package/skills/weaver-e10-builder/references/coding/guide-edit-backfill.md +189 -0
  199. package/skills/weaver-e10-builder/references/coding/guide-form-crud.md +262 -0
  200. package/skills/weaver-e10-builder/references/coding/guide-page-code.md +244 -0
  201. package/skills/weaver-e10-builder/references/coding/guide-page-export.md +119 -0
  202. package/skills/weaver-e10-builder/references/coding/ref-compile-rules.md +130 -0
  203. package/skills/weaver-e10-builder/references/common/guide-plan-template.md +164 -0
  204. package/skills/weaver-e10-builder/references/common/map.md +153 -0
  205. package/skills/weaver-e10-builder/references/common/ref-cli-commands.md +635 -0
  206. package/skills/weaver-e10-builder/references/components/@weapp-Button.md +104 -0
  207. package/skills/weaver-e10-builder/references/components/base-Badge.md +100 -0
  208. package/skills/weaver-e10-builder/references/components/base-Dialog.md +358 -0
  209. package/skills/weaver-e10-builder/references/components/base-Empty.md +58 -0
  210. package/skills/weaver-e10-builder/references/components/base-Tag.md +112 -0
  211. package/skills/weaver-e10-builder/references/components/display-Alert.md +64 -0
  212. package/skills/weaver-e10-builder/references/components/display-Avatar.md +150 -0
  213. package/skills/weaver-e10-builder/references/components/display-Calendar.md +263 -0
  214. package/skills/weaver-e10-builder/references/components/display-Carousel.md +115 -0
  215. package/skills/weaver-e10-builder/references/components/display-Collapse.md +299 -0
  216. package/skills/weaver-e10-builder/references/components/display-FilePreview.md +49 -0
  217. package/skills/weaver-e10-builder/references/components/display-Icon.md +66 -0
  218. package/skills/weaver-e10-builder/references/components/display-List.md +320 -0
  219. package/skills/weaver-e10-builder/references/components/display-Pagination.md +41 -0
  220. package/skills/weaver-e10-builder/references/components/display-Spin.md +34 -0
  221. package/skills/weaver-e10-builder/references/components/display-Steps.md +89 -0
  222. package/skills/weaver-e10-builder/references/components/display-Table.md +160 -0
  223. package/skills/weaver-e10-builder/references/components/display-Title.md +117 -0
  224. package/skills/weaver-e10-builder/references/components/form-Checkbox.md +161 -0
  225. package/skills/weaver-e10-builder/references/components/form-DepartmentBrowser-api.md +52 -0
  226. package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser-api.md +51 -0
  227. package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser.md +51 -0
  228. package/skills/weaver-e10-builder/references/components/form-Input.md +123 -0
  229. package/skills/weaver-e10-builder/references/components/form-Radio.md +145 -0
  230. package/skills/weaver-e10-builder/references/components/form-Select.md +191 -0
  231. package/skills/weaver-e10-builder/references/components/form-Switch.md +46 -0
  232. package/skills/weaver-e10-builder/references/components/form-Upload.md +53 -0
  233. package/skills/weaver-e10-builder/references/components/generic-Echarts.md +102 -0
  234. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-components.md +130 -0
  235. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-css.md +127 -0
  236. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-factory.md +460 -0
  237. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-version.md +111 -0
  238. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer.md +288 -0
  239. package/skills/weaver-e10-builder/references/esb-interface/guide-import.md +34 -0
  240. package/skills/weaver-e10-builder/references/form/guide-create-form.md +248 -0
  241. package/skills/weaver-e10-builder/references/form/guide-ebuilder-filter.md +73 -0
  242. package/skills/weaver-e10-builder/references/form/guide-ebuilder-scope.md +82 -0
  243. package/skills/weaver-e10-builder/references/form/guide-field-linkage.md +123 -0
  244. package/skills/weaver-e10-builder/references/form/guide-form-archive-permission.md +175 -0
  245. package/skills/weaver-e10-builder/references/form/guide-form-association.md +124 -0
  246. package/skills/weaver-e10-builder/references/form/guide-form-button.md +169 -0
  247. package/skills/weaver-e10-builder/references/form/guide-form-data.md +78 -0
  248. package/skills/weaver-e10-builder/references/form/guide-form-formula-functions.md +343 -0
  249. package/skills/weaver-e10-builder/references/form/guide-form-layout-incremental.md +90 -0
  250. package/skills/weaver-e10-builder/references/form/guide-form-layout-planning.md +68 -0
  251. package/skills/weaver-e10-builder/references/form/guide-form-linkage.md +269 -0
  252. package/skills/weaver-e10-builder/references/form/guide-form-message.md +74 -0
  253. package/skills/weaver-e10-builder/references/form/guide-form-physical-table.md +146 -0
  254. package/skills/weaver-e10-builder/references/form/guide-form-serial-mark.md +47 -0
  255. package/skills/weaver-e10-builder/references/form/guide-form-sub-detail.md +82 -0
  256. package/skills/weaver-e10-builder/references/form/guide-form-view-permission.md +38 -0
  257. package/skills/weaver-e10-builder/references/form/guide-form-view.md +371 -0
  258. package/skills/weaver-e10-builder/references/form/guide-formula-linkage.md +281 -0
  259. package/skills/weaver-e10-builder/references/form/guide-list-columns.md +52 -0
  260. package/skills/weaver-e10-builder/references/form/guide-list-custom-text.md +52 -0
  261. package/skills/weaver-e10-builder/references/form/guide-list-stats.md +136 -0
  262. package/skills/weaver-e10-builder/references/form/guide-virtual-form.md +156 -0
  263. package/skills/weaver-e10-builder/references/form/ref-form-fields.md +293 -0
  264. package/skills/weaver-e10-builder/references/form/style-templates.md +97 -0
  265. package/skills/weaver-e10-builder/references/hrm/guide-matrix.md +245 -0
  266. package/skills/weaver-e10-builder/references/hrm/guide-org-employee.md +155 -0
  267. package/skills/weaver-e10-builder/references/menu/system-menus.md +75 -0
  268. package/skills/weaver-e10-builder/references/report/add-dataset-registration-guide.md +139 -0
  269. package/skills/weaver-e10-builder/references/report/ai-report-workflow.md +412 -0
  270. package/skills/weaver-e10-builder/references/report/api-report-build-fast-path.md +275 -0
  271. package/skills/weaver-e10-builder/references/report/app-datasource-lookup-guide.md +230 -0
  272. package/skills/weaver-e10-builder/references/report/cell-config-echo-guide.md +163 -0
  273. package/skills/weaver-e10-builder/references/report/cell-transform-guide.md +147 -0
  274. package/skills/weaver-e10-builder/references/report/condition-format-guide.md +140 -0
  275. package/skills/weaver-e10-builder/references/report/cross-dataset-filter-guide.md +304 -0
  276. package/skills/weaver-e10-builder/references/report/dataset-query-filter-guide.md +235 -0
  277. package/skills/weaver-e10-builder/references/report/dataset-sidebar-ops-guide.md +280 -0
  278. package/skills/weaver-e10-builder/references/report/dataset-table-field-contract-guide.md +339 -0
  279. package/skills/weaver-e10-builder/references/report/datasource-metadata-guide.md +365 -0
  280. package/skills/weaver-e10-builder/references/report/datasource-selection-and-parent-filter-guide.md +148 -0
  281. package/skills/weaver-e10-builder/references/report/date-range-query-reference.md +102 -0
  282. package/skills/weaver-e10-builder/references/report/default-header-style-guide.md +70 -0
  283. package/skills/weaver-e10-builder/references/report/designer-blank-prevention-guide.md +111 -0
  284. package/skills/weaver-e10-builder/references/report/event-hreflink-guide.md +184 -0
  285. package/skills/weaver-e10-builder/references/report/field-bind-exact-match-guide.md +208 -0
  286. package/skills/weaver-e10-builder/references/report/formula-cell-api-guide.md +258 -0
  287. package/skills/weaver-e10-builder/references/report/guide-report-build.md +131 -0
  288. package/skills/weaver-e10-builder/references/report/guide-report-modify.md +100 -0
  289. package/skills/weaver-e10-builder/references/report/guide-report-multisource.md +143 -0
  290. package/skills/weaver-e10-builder/references/report/guide-report-query.md +98 -0
  291. package/skills/weaver-e10-builder/references/report/hidden-row-and-header-merge-guide.md +100 -0
  292. package/skills/weaver-e10-builder/references/report/layout-showlocation-freeze-guide.md +167 -0
  293. package/skills/weaver-e10-builder/references/report/preaggregate-auto-disable-guide.md +107 -0
  294. package/skills/weaver-e10-builder/references/report/query-condition-api-guide.md +890 -0
  295. package/skills/weaver-e10-builder/references/report/ref-report-commands.md +122 -0
  296. package/skills/weaver-e10-builder/references/report/ref-report-pitfalls.md +226 -0
  297. package/skills/weaver-e10-builder/references/report/report-baseinfo-defaults-guide.md +117 -0
  298. package/skills/weaver-e10-builder/references/report/report-building-guide.md +511 -0
  299. package/skills/weaver-e10-builder/references/report/report-config-schema.md +445 -0
  300. package/skills/weaver-e10-builder/references/report/report-create-modes-guide.md +182 -0
  301. package/skills/weaver-e10-builder/references/report/report-data-model.md +447 -0
  302. package/skills/weaver-e10-builder/references/report/report-delivery-contract.md +101 -0
  303. package/skills/weaver-e10-builder/references/report/report-designer-feature-map.md +500 -0
  304. package/skills/weaver-e10-builder/references/report/report-internal-error-guide.md +78 -0
  305. package/skills/weaver-e10-builder/references/report/report-knowledge-base.md +389 -0
  306. package/skills/weaver-e10-builder/references/report/report-lifecycle-api-guide.md +392 -0
  307. package/skills/weaver-e10-builder/references/report/report-list-page-ops-guide.md +191 -0
  308. package/skills/weaver-e10-builder/references/report/report-permission-guide.md +365 -0
  309. package/skills/weaver-e10-builder/references/report/report-requirement-analysis-template.md +202 -0
  310. package/skills/weaver-e10-builder/references/report/report-self-check-guide.md +164 -0
  311. package/skills/weaver-e10-builder/references/report/safe-partial-save-guide.md +151 -0
  312. package/skills/weaver-e10-builder/references/report/snowflake-id-precision-guide.md +84 -0
  313. package/skills/weaver-e10-builder/references/report/spec-build-schema.md +294 -0
  314. package/skills/weaver-e10-builder/references/report/targeted-fix-guide.md +97 -0
  315. package/skills/weaver-e10-builder/references/report/user-request-scope-only-guide.md +82 -0
  316. package/skills/weaver-e10-builder/references/workflow/guide-function-management.md +154 -0
  317. package/skills/weaver-e10-builder/references/workflow/guide-opinion-settings.md +126 -0
  318. package/skills/weaver-e10-builder/references/workflow/guide-workflow-action.md +174 -0
  319. package/skills/weaver-e10-builder/references/workflow/guide-workflow-auth-resp.md +224 -0
  320. package/skills/weaver-e10-builder/references/workflow/guide-workflow-condition.md +447 -0
  321. package/skills/weaver-e10-builder/references/workflow/guide-workflow-node-layout.md +181 -0
  322. package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc-setting.md +248 -0
  323. package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc.md +68 -0
  324. package/skills/weaver-e10-builder/references/workflow/guide-workflow.md +527 -0
  325. package/skills/weaver-e10-builder/references/workflow/operator-matrix.md +76 -0
  326. package/skills/weaver-e10-caizhilian/SKILL.md +7 -2
  327. package/skills/weaver-e10-caizhilian/references/files.md +15 -0
  328. package/skills/weaver-e10-caizhilian/references/setting-attach.md +48 -3
  329. package/skills/weaver-e10-caizhilian/references/source-manifest.json +99 -1
  330. package/skills/weaver-e10-shared/SKILL.md +8 -4
  331. package/skills/weaver-e10-shared/references/e10-auth-and-session.md +7 -5
  332. package/skills/weaver-e10-workflow/SKILL.md +23 -44
  333. package/skills/weaver-e10-workflow/references/source-manifest.json +27 -22
  334. package/skills/weaver-e10-workflow/references/workflow-create.md +238 -85
  335. package/skills/weaver-e10-workflow/references/workflow-edit.md +1 -1
  336. package/skills/weaver-e10-workflow/references/workflow-memory.md +1 -4
  337. package/skills/weaver-e10-workflow/references/workflow-query.md +2 -2
@@ -0,0 +1,258 @@
1
+ # 公式单元格 API 写入规范
2
+
3
+ > **适用场景**:通过 API / 脚本写入报表 workbook(`saveReportWithCacheConfig` + `saveReportDevInfo`),或生成含 Formula 单元格的 ReportProps JSON。
4
+ > **权威原则**:设计器手动保存的格式为准;文档与脚本冲突时以 `getReportDevInfo` 回读结果为准。
5
+
6
+ ---
7
+
8
+ ## 一、问题现象
9
+
10
+ 设计器里输入 `=IF(J3=0,0,L3/J3)` 能正常保存并展示,但 **API 脚本写入「相同公式」可能导致设计器整页空白**。
11
+
12
+ **根因不是 IF 函数被禁用**,而是持久化字段格式与手动保存不一致:
13
+
14
+ | 字段 | 设计器手动保存 ✅ | 脚本 API 常见错误 ❌ |
15
+ |------|-------------------|----------------------|
16
+ | `cellText` / 顶层 `formula` | `IF(J3=0,0,L3/J3)` **无前导 `=`** | `=IF(J3=0,0,L3/J3)` **带 `=`** |
17
+ | `countType` | `count` | `none` |
18
+ | `displayType` | `Group` | `List` |
19
+ | `groupType` | `null` | `none` |
20
+ | `style.formatter` | 空字符串 | `0.00%`、`General` 等 |
21
+
22
+ 平台源码(`EdcReportDevDesignServiceImpl`)从 workbook 提取 Formula 时:
23
+
24
+ ```java
25
+ if (field.getCellType() == Formula) {
26
+ field.setCellText(cell.getFormula()); // 原样写入 DB
27
+ }
28
+ ```
29
+
30
+ 设计器保存时会去掉 leading `=`;脚本若 workbook 顶层 `formula` 带 `=`,DB 里 `cellText` 也会带 `=`。
31
+ 设计器再次加载时 SpreadJS 可能再补 `=` → 变成 `==IF(...)` 或解析失败 → **整页空白**。
32
+
33
+ DB 种子数据同样 **不带 `=`**:`'IFERROR(G5/F5,"--")'`、`'SUM(F5)'`。
34
+
35
+ ---
36
+
37
+ ## 二、Agent 必遵守则(硬约束)
38
+
39
+ 生成或修改含公式单元格的报表时,**必须**同时满足:
40
+
41
+ 1. **`cellText` 与 workbook 顶层 `formula` 均不带前导 `=`**
42
+ - 设计器输入:`=IF(J3=0,0,L3/J3)`
43
+ - API 存储:`IF(J3=0,0,L3/J3)`
44
+ - 写入前统一:`bare = formula_expr.lstrip("=")`
45
+
46
+ 2. **`countType` 必须为 `count`**(勿用 `none`)
47
+
48
+ 3. **`displayType` 必须为 `Group`**(分组报表中的公式格;勿用 `List`)
49
+
50
+ 4. **`groupType` 必须为 `null`**(JSON 中写 `null`,勿写 `"none"`)
51
+
52
+ 5. **`expandType` 为 `NoExpand`**
53
+
54
+ 6. **`style.formatter` 为空字符串**(与手动保存对齐;百分比展示依赖公式结果或后续在设计器设格式,脚本勿擅自写 `0.00%`)
55
+
56
+ 7. **父格坐标**:公式格与同级 Field 子格一致,指向根格(如 `leftX=2, leftY=5` 对应 F 列责任人,0-based)
57
+
58
+ 8. **双保存**:`saveReportWithCacheConfig` + `saveReportDevInfo`,保存后用 `getReportDevInfo` 回读验证
59
+
60
+ 9. **除零保护**:占比/达成率类公式推荐 `IF(分母=0,0,分子/分母)`,与设计器手动写法一致
61
+
62
+ ---
63
+
64
+ ## 三、workbook 单元格结构(dataTable)
65
+
66
+ Formula 单元格在 workbook `dataTable[row][col]` 中的标准结构:
67
+
68
+ ```json
69
+ {
70
+ "formula": "IF(J3=0,0,L3/J3)",
71
+ "style": {
72
+ "hAlign": 1,
73
+ "vAlign": 1,
74
+ "formatter": "",
75
+ "cellType": {
76
+ "typeName": "FormulaCellType",
77
+ "editorType": 1,
78
+ "cellType": "Formula",
79
+ "cellText": "IF(J3=0,0,L3/J3)",
80
+ "displayType": "Group",
81
+ "countType": "count",
82
+ "groupType": null,
83
+ "expandType": "NoExpand",
84
+ "leftX": 2,
85
+ "leftY": 5,
86
+ "topX": -1,
87
+ "topY": -1,
88
+ "refX": -1,
89
+ "refY": -1,
90
+ "subordination": ["", ""],
91
+ "formatterType": [],
92
+ "orderType": "no",
93
+ "isActiveParent": false,
94
+ "arrowType": "None",
95
+ "textDirection": "FromLeftToRight",
96
+ "allowOverflow": true,
97
+ "hiddenContext": "0",
98
+ "transSelectOptions": [],
99
+ "browserType": [],
100
+ "thumbnail": "NoDisplay"
101
+ }
102
+ },
103
+ "tag": { "formatterType": ["common"] }
104
+ }
105
+ ```
106
+
107
+ **注意**:顶层 `formula` 与 `style.cellType.cellText` **内容相同且均无前导 `=`**。
108
+
109
+ ---
110
+
111
+ ## 四、参考实现 `make_formula()`
112
+
113
+ ```python
114
+ def make_formula(formula_expr, formatter=""):
115
+ """构建 Formula 单元格,格式对齐设计器手动保存。"""
116
+ bare = formula_expr.lstrip("=")
117
+ ct = {
118
+ "allowOverflow": True,
119
+ "typeName": "FormulaCellType",
120
+ "editorType": 1,
121
+ "leftX": ROOT_ROW,
122
+ "leftY": ROOT_COL,
123
+ "topX": -1,
124
+ "topY": -1,
125
+ "refX": -1,
126
+ "refY": -1,
127
+ "expandType": "NoExpand",
128
+ "displayType": "Group",
129
+ "cellType": "Formula",
130
+ "cellText": bare,
131
+ "transSelectOptions": [],
132
+ "browserType": [],
133
+ "thumbnail": "NoDisplay",
134
+ "hiddenContext": "0",
135
+ "orderType": "no",
136
+ "formatterType": [],
137
+ "subordination": ["", ""],
138
+ "countType": "count",
139
+ "groupType": None,
140
+ "isActiveParent": False,
141
+ "arrowType": "None",
142
+ "textDirection": "FromLeftToRight",
143
+ }
144
+ fmt = formatter if formatter is not None else ""
145
+ return {
146
+ "style": {"hAlign": 1, "vAlign": 1, "formatter": fmt, "cellType": ct},
147
+ "formula": bare,
148
+ "tag": {"formatterType": ["common"]},
149
+ }
150
+ ```
151
+
152
+ 项目参考:`本地工作目录` 的 `make_formula()`。
153
+
154
+ ---
155
+
156
+ ## 五、公式表达式规范
157
+
158
+ ### 5.1 单元格引用
159
+
160
+ - 使用 Excel A1 风格:`J3`、`L3`、`AA3`
161
+ - 行号与数据行一致(通常第 3 行即 `x=2` 的数据行写 `...3`)
162
+ - 引用同报表内 Field 汇总格,不引用数据集字段名
163
+
164
+ ### 5.2 常用模式
165
+
166
+ | 场景 | 设计器输入 | API 存储(无前导 `=`) |
167
+ |------|-----------|------------------------|
168
+ | 达成率 | `=IF(J3=0,0,L3/J3)` | `IF(J3=0,0,L3/J3)` |
169
+ | 业绩占比 | `=IF(L3=0,0,M3/L3)` | `IF(L3=0,0,M3/L3)` |
170
+ | 合计 | `=SUM(F4:F10)` | `SUM(F4:F10)` |
171
+ | 安全除法 | `=IFERROR(G5/F5,"--")` | `IFERROR(G5/F5,"--")` |
172
+
173
+ ### 5.3 IF / IFERROR
174
+
175
+ - **IF、IFERROR 均允许**通过 API 写入;此前「IF 导致空白」是格式错误,不是函数限制
176
+ - 占比类公式 **推荐** `IF(分母=0,0,...)` 而非裸除法
177
+
178
+ ### 5.4 禁止写法
179
+
180
+ | 禁止 | 原因 |
181
+ |------|------|
182
+ | `cellText: "=SUM(A1)"` | 双 `=` 导致 SpreadJS 解析失败 |
183
+ | `countType: "none"` | 与手动保存不一致,可能引发展示异常 |
184
+ | `displayType: "List"` | 公式格应为 `Group` |
185
+ | `groupType: "none"` | 应为 `null` |
186
+ | 仅写 `style.cellType.cellText` 不写顶层 `formula` | workbook 与设计器可能不同步 |
187
+
188
+ ---
189
+
190
+ ## 六、验证清单
191
+
192
+ 写入公式后,Agent **必须**执行:
193
+
194
+ ### 6.1 `getReportDevInfo` 回读
195
+
196
+ 对每个 Formula 格(如 K3 → `x=2, y=10`)检查:
197
+
198
+ - [ ] `cellType` 为 `Formula`
199
+ - [ ] `cellText` **不以 `=` 开头**
200
+ - [ ] `countType` 为 `count`
201
+ - [ ] `displayType` 为 `Group`
202
+ - [ ] `groupType` 为 `null`
203
+ - [ ] 公式内容与预期一致(如 `IF(J3=0,0,L3/J3)`)
204
+
205
+ ### 6.2 保存接口
206
+
207
+ - [ ] `saveReportWithCacheConfig` 返回 200
208
+ - [ ] `saveReportDevInfo` 返回 200
209
+ - [ ] `checkSave` 返回 200(可选)
210
+
211
+ ### 6.3 设计器 smoke test
212
+
213
+ - [ ] 刷新设计器 URL 后页面非空白
214
+ - [ ] 公式格可点击编辑,显示为 `=IF(...)`(设计器 UI 会自动加 `=`)
215
+ - [ ] 预览/解析后公式列有数值
216
+
217
+ ### 6.4 本地预检
218
+
219
+ ```bash
220
+ python e10-cli report validate <配置文件路径>
221
+ ```
222
+
223
+ 脚本会对 Formula 单元格检查前导 `=`、`countType`、`displayType` 等(见脚本内 `validate_formula_fields`)。
224
+
225
+ ---
226
+
227
+ ## 七、与父格 / 跨数据集筛选的关系
228
+
229
+ - 公式格 **不参与** subordination / leftFilterField(通常 `subordination: ["", ""]`)
230
+ - 公式引用的是 **同报表内已配置好的 Field 汇总格**(如 L3 总业绩、J3 指标)
231
+ - 被引用的 Field 格若跨数据集,须先按 `cross-dataset-filter-guide.md` 配好筛选;公式本身不再重复配 fieldKey
232
+
233
+ ---
234
+
235
+ ## 八、EBU 经营报表示例(37 列)
236
+
237
+ | 列 | 字段 | 公式(API 存储,无前导 `=`) |
238
+ |----|------|------------------------------|
239
+ | K | 达成率 | `IF(J3=0,0,L3/J3)` |
240
+ | R | 新客户业绩占比 | `IF(L3=0,0,M3/L3)` |
241
+ | S | 纯专项业绩占比 | `IF(L3=0,0,N3/L3)` |
242
+ | T | 信创客户业绩占比 | `IF(L3=0,0,O3/L3)` |
243
+ | X | 新签合同个数占比 | `IF(V3=0,0,W3/V3)` |
244
+ | Z | 纯专项合同个数占比 | `IF(V3=0,0,Y3/V3)` |
245
+ | AB | 信创合同个数占比 | `IF(V3=0,0,AA3/V3)` |
246
+
247
+ 报表 ID 示例:`1304979556231593985`
248
+ 验证脚本:`本地工作目录`
249
+
250
+ ---
251
+
252
+ ## 九、相关文档
253
+
254
+ - `SKILL.md` — 能力一步骤 6.2 公式配置
255
+ - `ai-report-workflow.md` §六 — 工作流中的公式规则
256
+ - `report-config-schema.md` §2.5 — Formula Schema
257
+ - `cross-dataset-filter-guide.md` — 跨数据集筛选(与公式格配合)
258
+ - `report-building-guide.md` §8.2 — 占比/同环比为前端 SpreadJS 计算
@@ -0,0 +1,131 @@
1
+ # 新建报表(声明式一步落库)
2
+
3
+ > 命令:`e10-cli report build --spec <spec.json>` · 结构详解见 `spec-build-schema.md`
4
+ > 交付形态:给出设计器地址即完成,详见 `report-delivery-contract.md`
5
+
6
+ ---
7
+
8
+ ## 一、一句话说清
9
+
10
+ 报表 = **一张表单当数据源** + **若干列绑定到该表单的字段** + 可选布局/查询条件/权限。
11
+
12
+ `report build` 一次调用跑完:定源 → 字段预检 → 建表 → 挂数据集 → 落库 → 回读,中途不留空壳。
13
+
14
+ ```bash
15
+ e10-cli report build --spec spec.json # 正式建表
16
+ e10-cli report build --spec spec.json --dry-run # 只看定源与字段绑定,不写任何数据
17
+ ```
18
+
19
+ ---
20
+
21
+ ## 二、最小 spec
22
+
23
+ ```json
24
+ {
25
+ "appId": "1315401436173942786",
26
+ "name": "销售明细报表",
27
+ "form": "销售订单",
28
+ "columns": [
29
+ { "title": "客户名称", "width": 160 },
30
+ { "title": "合同金额", "width": 120, "format": "货币" },
31
+ { "title": "签订日期", "width": 140, "format": "短日期" }
32
+ ]
33
+ }
34
+ ```
35
+
36
+ | 键 | 说明 |
37
+ |---|---|
38
+ | `appId` | 应用 ID(必填) |
39
+ | `name` | 报表名。**写入即最终名**,不留 `__build_*`、不落库后改名 |
40
+ | `form` / `sourceId` | 表单名或表单 id。**两个都不给就是没指明表**,会停下让你选 |
41
+ | `columns[]` | 列定义。`title` 同时是**字段匹配键** |
42
+ | `layout` | `{ title, freezeRows, showLocation }` |
43
+ | `style` / `titleStyle` / `headerStyle` / `bodyStyle` | 分层样式;不给就是默认表头样式 |
44
+
45
+ 列的可选项:`width`、`format`(`货币`/`短日期`/`百分比`…,见 `cell-config-echo-guide.md`)、`formula`(公式列不参与字段绑定)、`groupType`(日期分组)、`rule`(条件格式,见 `condition-format-guide.md`)、`field` / `fieldName`(显式指定字段)。
46
+
47
+ ---
48
+
49
+ ## 三、两处「必须问用户」的门禁
50
+
51
+ 这是本能力最重要的两条规则。两处都**不建表、不回退、不猜**。
52
+
53
+ ### 规则 B · 表没指明或不是完全精准匹配
54
+
55
+ 触发:需求没写表名;或应用内检索是模糊命中 / 同名多条 / 未命中。
56
+
57
+ 行为:退出码 **3**,列出 `candidates[]`,**不建任何报表**。
58
+
59
+ ```bash
60
+ e10-cli report find <appId> --list # 列应用内全部表单
61
+ e10-cli report find <appId> "销售订单" # 精确/模糊查找
62
+ e10-cli report build --spec spec.json --form-confirmed --source-id <id> # 用户确认后复跑
63
+ ```
64
+
65
+ ### 规则 A · 列字段没有精确匹配
66
+
67
+ 触发:列标题与该表单字段的**显示名**对不上(归一化后仍不等),且没有显式指定。
68
+
69
+ 行为:退出码 **4**,列出 `unmatched[]` + `allFields[]`(全量可选字段),**不建报表**(若已建到一半会删掉)。
70
+
71
+ **绝对禁止**用系统字段(`name`/`id`/`create_time`…)兜底。历史事故:需求写「姓名」,被静默绑到系统字段 `name`(真实显示名是「标题」),报表能用但数据全错,用户毫不知情。
72
+
73
+ 三种收场方式:
74
+
75
+ ```bash
76
+ # 1) 从候选里挑,写进 spec.fieldMap
77
+ "fieldMap": { "党组织": "所属党委" }
78
+
79
+ # 2) 文案与字段真实显示名不同但确实有意如此
80
+ e10-cli report build --spec spec.json --field-confirmed "列名A,列名B"
81
+ e10-cli report build --spec spec.json --field-confirmed # 不带值 = 全部确认
82
+
83
+ # 3) 先看清楚再决定
84
+ e10-cli report build --spec spec.json --dry-run
85
+ ```
86
+
87
+ ---
88
+
89
+ ## 四、退出码
90
+
91
+ | 码 | 含义 |
92
+ |---|---|
93
+ | 0 | 成功,已输出设计器地址 |
94
+ | 2 | 成功但有警告(显示名不一致 / tableName 缺失 / 重复数据集挂载) |
95
+ | 3 | 规则 B:需要用户指定表,**未建表** |
96
+ | 4 | 规则 A:需要用户指定字段,**未建表或已删掉未完成的报表** |
97
+ | 1 | 失败 |
98
+
99
+ ---
100
+
101
+ ## 五、建完之后
102
+
103
+ ```bash
104
+ e10-cli report read <reportId> --fields # 回读字段记录
105
+ e10-cli report verify bind <reportId> --app-id <appId> # 字段绑定体检
106
+ e10-cli report verify all <reportId> --app-id <appId> # 综合自检
107
+ ```
108
+
109
+ **搭表不要求渲染。** 落库成功、字段绑定正确就是交付完成。全量渲染超过 5 万格必然失败且空耗几十秒,
110
+ 真要评估用 `e10-cli report verify limit <reportId>` 做算术预检(见 `report-designer-feature-map.md`)。
111
+
112
+ ---
113
+
114
+ ## 六、不要做的事
115
+
116
+ - ❌ 建 `__build_*` / `__probe_*` 空壳试探 —— 字段预检不需要报表就能做
117
+ - ❌ 落库后再改报表名 —— 直接用目标名建
118
+ - ❌ 跨报表复用 `datasetId` —— 数据集不能跨报表引用
119
+ - ❌ 同一张表挂两次 —— 左侧会出现重复数据源分组;`report dataset list` 可核对
120
+ - ❌ 一上来拉全系统表单分组树 —— 用户给了应用就在应用内找(`report find`)
121
+
122
+ ---
123
+
124
+ ## 相关文档
125
+
126
+ - `spec-build-schema.md` —— spec 全字段
127
+ - `add-dataset-registration-guide.md` —— 数据集注册契约
128
+ - `field-bind-exact-match-guide.md` —— 字段精确绑定细则
129
+ - `dataset-table-field-contract-guide.md` —— `tableName` 与字段三件套
130
+ - `api-report-build-fast-path.md` —— 接口层逐步流程
131
+ - `report-create-modes-guide.md` —— 空白 / 模板 / 快速构建三种建法
@@ -0,0 +1,100 @@
1
+ # 修改已有报表(只改用户点名项)
2
+
3
+ > **最高优先级规则**:用户没点名的东西,一个都不动。
4
+ > 完整版见 `user-request-scope-only-guide.md`。
5
+
6
+ ---
7
+
8
+ ## 一、铁律
9
+
10
+ 改已有报表时,**默认什么都不改**。用户说了什么就改什么,其余部分原样写回。
11
+
12
+ **禁止**:
13
+
14
+ - ❌ 「顺便」改单元格内容、合并、样式、行高、父格、公式、查询条件、数据集、权限、快照、报表名
15
+ - ❌ 为了「好维护」把整张表重新识别、重扫字段、重建布局
16
+ - ❌ 用「全表重写更干净」当借口覆盖用户的手工调整
17
+ - ❌ 改列宽/冻结/居左时顺手改样式或拆掉合并 —— 这些是**独立**的改动
18
+
19
+ **允许**:只 patch 点名项;其余从回读结果原样写回。
20
+
21
+ 拿不准就**问用户**,不要替用户决定。
22
+
23
+ ---
24
+
25
+ ## 二、典型改法
26
+
27
+ ### 改字段(列)
28
+
29
+ ```bash
30
+ e10-cli report read <reportId> --fields # 先看清楚现状
31
+ ```
32
+
33
+ 改列 = 重建布局再整体保存。走 `report build` 的重跑不适用(会新建一张),
34
+ 定点改要用 `report fix` 系列或重新组表后 `saveReportDevInfo`。
35
+
36
+ **关键**:保存前必须回读最新的 `designKey`(乐观锁),并且**从回读的 `fields[]` 重建工作簿**,
37
+ 不能把读到的空 `sheets` 原样写回 —— 那会把整张表的布局清掉。详见 `safe-partial-save-guide.md`。
38
+
39
+ ### 改显示名 / 改名
40
+
41
+ 报表名走 `baseInfo`,字段显示名走字段接口,两者不是一回事。
42
+
43
+ ### 改共享范围
44
+
45
+ ```bash
46
+ e10-cli report scope list <reportId> --app-id <appId> # 先读
47
+ e10-cli report scope set <reportId> --app-id <appId> --scope "部门:销售部"
48
+ ```
49
+
50
+ ⚠️ `savePermissions` 是**全量替换**:只改 `viewRight` 时,`disableRight` 与 `viewMatrixRight`
51
+ 必须原样带回,否则会把「不可见」矩阵一起清掉。
52
+
53
+ ### 冻结 / 居左
54
+
55
+ ```bash
56
+ e10-cli report fix freeze <reportId> --anchor <x,y> # 预演
57
+ e10-cli report fix freeze <reportId> --anchor <x,y> --apply
58
+ ```
59
+
60
+ 唯一持久化标记是 `cell.tag.fixed`;`frozenRowCount` / `tag.fixedCell` 只影响设计器显示。
61
+
62
+ ### 改查询条件
63
+
64
+ 见 `guide-report-query.md`。**改条件不改显示方式**,除非用户点名。
65
+
66
+ ---
67
+
68
+ ## 三、改完必做
69
+
70
+ ```bash
71
+ e10-cli report verify all <reportId> --app-id <appId> # 绑定 + 结构 + tableName
72
+ ```
73
+
74
+ 改坏了**立刻回滚**:
75
+
76
+ ```bash
77
+ e10-cli report version list <reportId> # 找版本
78
+ e10-cli report restore <reportId> --version <versionId> # 回滚
79
+ ```
80
+
81
+ 布局被冲掉(字段数骤降)时的首选是回滚,不是「再存一次试试」。
82
+
83
+ ---
84
+
85
+ ## 四、保存前的三道防线
86
+
87
+ CLI 已内置,改动时不要绕过:
88
+
89
+ 1. **布局守卫** —— 字段与工作簿内容不能同时为空;保存后字段数不能掉。
90
+ 2. **空白守卫** —— `showLocation=0` 会被纠正为 2;`scrollPage=1` 却没内容字段会拦下。
91
+ 3. **雪花守卫** —— `snapshot.sheetId/id/jobId` 是 number 直接拒绝保存(`Number()` 截断会让设计区空白)。
92
+
93
+ ---
94
+
95
+ ## 相关文档
96
+
97
+ - `targeted-fix-guide.md` —— 定点改的细则
98
+ - `safe-partial-save-guide.md` —— 安全局部保存
99
+ - `designer-blank-prevention-guide.md` —— 设计区空白的成因与预防
100
+ - `report-delivery-contract.md` —— 改完交付什么
@@ -0,0 +1,143 @@
1
+ # 多数据源报表(跨数据集)· spec 写法与落地
2
+
3
+ > **命令**:`e10-cli report build --spec <spec.json>`
4
+ > **校验**:`e10-cli report verify parents <reportId> --app-id <id>`
5
+ > **证明跑得通**:`e10-cli report render <reportId> --app-id <id>`
6
+ > 配套规则见 `cross-dataset-filter-guide.md`(fieldKey 写法)、
7
+ > `datasource-selection-and-parent-filter-guide.md`(区域与入口格)。
8
+
9
+ ---
10
+
11
+ ## 一、什么时候需要多数据源
12
+
13
+ **先问能不能不加。** 主表上已有可展示字段时,不要为了"好看/完整"再挂一张表回显名称
14
+ (`datasource-selection-and-parent-filter-guide.md` §一)。只有主表确实取不到该字段、
15
+ 且业务必须跨表关联时才加第二源。
16
+
17
+ 典型:主从明细(客户 × 该客户的订单)、维度下钻(合同 × 供应商主数据)。
18
+
19
+ ---
20
+
21
+ ## 二、spec 写法
22
+
23
+ ```json
24
+ {
25
+ "appId": "1316387504760741888",
26
+ "name": "客户订单综合分析",
27
+ "formConfirmed": true,
28
+ "sources": [
29
+ { "key": "customer", "form": "客户信息表" },
30
+ { "key": "order", "form": "销售订单表",
31
+ "link": { "parent": "customer", "parentField": "客户名称", "childField": "客户名称",
32
+ "type": "Equals" } }
33
+ ],
34
+ "layout": { "title": "客户订单综合分析", "freezeRows": 1, "showLocation": "left" },
35
+ "columns": [
36
+ { "source": "customer", "title": "客户名称", "field": "客户名称", "width": 170 },
37
+ { "source": "customer", "title": "客户等级", "field": "客户等级", "width": 120 },
38
+ { "source": "order", "title": "订单编号", "field": "订单编号", "width": 150 },
39
+ { "source": "order", "title": "销售金额", "field": "销售金额", "width": 150, "format": "huobi" }
40
+ ]
41
+ }
42
+ ```
43
+
44
+ | 键 | 说明 |
45
+ |---|---|
46
+ | `sources[0]` | **父源**。它的列区域是报表的根,不写 `link` |
47
+ | `sources[].key` | spec 内引用名,`columns[].source` 用它;必须唯一 |
48
+ | `sources[].form` / `sourceId` | 与单源 spec 同义;`sourceId` 是已确认的表单 ID |
49
+ | `sources[].sourceType/Group/Name` | 数据集注册契约,普通应用留空即可(默认 `LOGIC` + `weaver-ebuilder-form-service`) |
50
+ | `sources[].link.parent` | 挂在哪个源上;**必须是左边紧邻的那个源** |
51
+ | `link.parentField` / `childField` | 关联字段,写**显示名或 `field_xxx`**,各自在**本方**表里解析 |
52
+ | `link.type` | 比较方式,TitleCase 枚举,默认 `Equals` |
53
+ | `columns[].source` | 该列属于哪个源;**缺省 = 父源** |
54
+
55
+ **不写 `sources` 时行为与单源报表完全一致** —— 老 spec 不需要改。
56
+
57
+ ---
58
+
59
+ ## 三、布局是怎么排的
60
+
61
+ 平台侧"多数据集"的机制是:字段按来源排成**连续区域**,区域入口格挂到左边区域的父格上。
62
+
63
+ ```
64
+ ┌─ 父源区域 ────────┐┌─ 子源区域(连续) ──────────┐
65
+ │ 客户名称 客户等级 ││ 订单编号 销售金额 订单状态 │
66
+ │ ↑ ││ ↑ 入口格(挂父格筛选) │
67
+ │ └── 默认父格 ││ 其余格:普通链式父格 │
68
+ └───────────────────┘└─────────────────────────────┘
69
+ ```
70
+
71
+ CLI 按 `columns[]` 的顺序自动切区域:
72
+
73
+ - **父源区域**:整行首列默认父格,其余逐列链式;
74
+ - **子源区域**:**只有入口格**(该区域第一列)写 `subordination` + `leftFilterField` 并指向父区域,
75
+ 其余格一律普通链式父格 —— **不逐格重复配**(逐格重复会让预览异常)。
76
+
77
+ ### 关键:关联键不必是入口格自己的字段
78
+
79
+ 文档示例里入口格指向「联系方式」,而关联字段是「供应商名称」。**锚点看位置,关联键看字段引用**,
80
+ 两者互不相干。所以 `link.parentField`/`childField` 只要能在那张表里唯一定位到字段即可,
81
+ **不需要**把关联字段单独排成一列。
82
+
83
+ ### 当前限制
84
+
85
+ 每个**子源只能占一段**连续区域(父源可以多段)。平台允许一段以上(每段各配一次入口筛选),
86
+ CLI 暂不支持——需要时请在设计器里手工补,或把该源的列排到一起。
87
+
88
+ ---
89
+
90
+ ## 四、落库时 CLI 自动做的事
91
+
92
+ 1. 逐个源走**规则 B**(定源)与**规则 A**(字段精确绑定),任一不通过都不建表;
93
+ 2. 逐个源挂数据集,并断言 N 个 datasetId 互不相同(两个源指向同一张表会退化成自引用,直接报错);
94
+ 3. 按 `link` 解析关联字段(显示名歧义时报错,不取首条);
95
+ 4. 组表时把 `subordination` / `leftFilterField` 写到入口格;
96
+ 5. **双保存**:先 `saveReportDevInfo`,再 `saveReportWithCacheConfig`;
97
+ 6. 跨源报表**自动关预聚合**(`dataPreAgg=false`)—— 父格筛选参与取数,预聚合结果不成立,
98
+ 这是必然代价不是配置错误。设计器「预聚合」开关会显示为关闭。
99
+
100
+ > `saveReportWithCacheConfig` 并非所有站点都有。缺该路由时 CLI 降级为警告,
101
+ > 报表本身仍然建成;此时跨源缓存的生效情况需在设计器里手工保存一次确认。
102
+
103
+ ---
104
+
105
+ ## 五、验证
106
+
107
+ ```bash
108
+ e10-cli report verify parents <reportId> --app-id <appId> # 结构合规
109
+ e10-cli report render <reportId> --app-id <appId> # 真跑一遍看行数
110
+ ```
111
+
112
+ `verify parents` 检查:入口格唯一、同区域其余格留空、`subordination[1] === leftFilterField[0].currentField`、
113
+ `id === currentField`、`type` 在白名单内、fieldKey 三段式且指向正确的数据集、锚点落在真实的父区域单元格上。
114
+
115
+ **`render` 是唯一能证明关联真的生效的手段** —— 结构对不代表数据对。判读方式:
116
+
117
+ - 父源 N 行、子表 M 条明细 → 展开后数据行数应 = 子表匹配到的明细数;
118
+ - 用 `--dump <file>` 把 workbook 写出来,逐行看父源字段是否只在该组第一行出现、后续行留空。
119
+
120
+ ---
121
+
122
+ ## 六、常见报错与处置
123
+
124
+ | 报错 | 含义 | 处置 |
125
+ |---|---|---|
126
+ | `源「b」的列排在源「a」后面,但没写 link` | 子源没声明怎么关联 | 补 `link` |
127
+ | `link.parent=「a」,但它左边紧邻的区域来自「b」` | 关联只能指向左边紧邻区域 | 调整列顺序或改 `link.parent` |
128
+ | `源「b」被拆成了 N 段连续区域` | 子源列没排在一起 | 把该源的列排到一起 |
129
+ | `源「x」与「y」解析到同一张表单` | 两个源指同一张表 | 改为单源布局 |
130
+ | `源「x」的父格关联字段「…」匹配到 N 个字段` | 显示名歧义 | 改用 `field_xxx` 精确指定 |
131
+ | `带缓存保存未成功` | 站点缺 `saveReportWithCacheConfig` 路由 | 见 §四 说明;在设计器里手工保存一次 |
132
+
133
+ ---
134
+
135
+ ## 七、相关文档
136
+
137
+ | 文档 | 关系 |
138
+ |---|---|
139
+ | `cross-dataset-filter-guide.md` | fieldKey 三段式、`id=currentField`、filter 结构权威说明 |
140
+ | `datasource-selection-and-parent-filter-guide.md` | 区域/入口格规则、少挂源的判定顺序 |
141
+ | `spec-build-schema.md` | spec 全量字段 |
142
+ | `preaggregate-auto-disable-guide.md` | 为什么跨源必须关预聚合 |
143
+ | `api-report-build-fast-path.md` | 双保存顺序与禁忌 |