weaver-e10-builder 1.6.9 → 1.6.11

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 (212) hide show
  1. package/dist/commands/form-data.d.ts.map +1 -1
  2. package/dist/commands/form-data.js +4 -1
  3. package/dist/commands/form-data.js.map +1 -1
  4. package/dist/commands/report-admin.d.ts.map +1 -1
  5. package/dist/commands/report-admin.js +378 -2
  6. package/dist/commands/report-admin.js.map +1 -1
  7. package/dist/commands/report-validate.d.ts.map +1 -1
  8. package/dist/commands/report-validate.js +1066 -3
  9. package/dist/commands/report-validate.js.map +1 -1
  10. package/dist/commands/report.d.ts.map +1 -1
  11. package/dist/commands/report.js +341 -3
  12. package/dist/commands/report.js.map +1 -1
  13. package/dist/commands/workflow-after-submit-comment.d.ts +3 -0
  14. package/dist/commands/workflow-after-submit-comment.d.ts.map +1 -0
  15. package/dist/commands/workflow-after-submit-comment.js +56 -0
  16. package/dist/commands/workflow-after-submit-comment.js.map +1 -0
  17. package/dist/commands/workflow-setting.d.ts.map +1 -1
  18. package/dist/commands/workflow-setting.js +2 -67
  19. package/dist/commands/workflow-setting.js.map +1 -1
  20. package/dist/services/action-detail.d.ts.map +1 -1
  21. package/dist/services/action-detail.js +1 -17
  22. package/dist/services/action-detail.js.map +1 -1
  23. package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -1
  24. package/dist/services/actionflow/components/action_eb_update_compiler.js +6 -2
  25. package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
  26. package/dist/services/actionflow/components/custom_trigger.js +1 -1
  27. package/dist/services/actionflow/components/custom_trigger.js.map +1 -1
  28. package/dist/services/actionflow/components/dml_execute.js +1 -1
  29. package/dist/services/actionflow/components/dml_execute.js.map +1 -1
  30. package/dist/services/actionflow/components/document_actions.js +1 -2
  31. package/dist/services/actionflow/components/document_actions.js.map +1 -1
  32. package/dist/services/actionflow/components/eb_get_data_by_id.d.ts.map +1 -1
  33. package/dist/services/actionflow/components/eb_get_data_by_id.js +2 -2
  34. package/dist/services/actionflow/components/eb_get_data_by_id.js.map +1 -1
  35. package/dist/services/actionflow/components/form_data_builder.d.ts.map +1 -1
  36. package/dist/services/actionflow/components/form_data_builder.js +18 -10
  37. package/dist/services/actionflow/components/form_data_builder.js.map +1 -1
  38. package/dist/services/actionflow/components/hrm_actions.js +0 -1
  39. package/dist/services/actionflow/components/hrm_actions.js.map +1 -1
  40. package/dist/services/actionflow/components/webhook_trigger.js +3 -3
  41. package/dist/services/actionflow/components/webhook_trigger.js.map +1 -1
  42. package/dist/services/actionflow/components/workflow_actions.js +3 -2
  43. package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
  44. package/dist/services/actionflow/filter_rules.d.ts.map +1 -1
  45. package/dist/services/actionflow/filter_rules.js +15 -13
  46. package/dist/services/actionflow/filter_rules.js.map +1 -1
  47. package/dist/services/actionflow/form_source.d.ts.map +1 -1
  48. package/dist/services/actionflow/form_source.js +59 -11
  49. package/dist/services/actionflow/form_source.js.map +1 -1
  50. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  51. package/dist/services/actionflow/formula_service.js +4 -1
  52. package/dist/services/actionflow/formula_service.js.map +1 -1
  53. package/dist/services/actionflow/option_field_types.d.ts +5 -0
  54. package/dist/services/actionflow/option_field_types.d.ts.map +1 -0
  55. package/dist/services/actionflow/option_field_types.js +20 -0
  56. package/dist/services/actionflow/option_field_types.js.map +1 -0
  57. package/dist/services/actionflow/param_group_dto.d.ts.map +1 -1
  58. package/dist/services/actionflow/param_group_dto.js +7 -3
  59. package/dist/services/actionflow/param_group_dto.js.map +1 -1
  60. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  61. package/dist/services/actionflow/preflight_service.js +42 -18
  62. package/dist/services/actionflow/preflight_service.js.map +1 -1
  63. package/dist/services/actionflow/webhook_source.d.ts.map +1 -1
  64. package/dist/services/actionflow/webhook_source.js +9 -4
  65. package/dist/services/actionflow/webhook_source.js.map +1 -1
  66. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  67. package/dist/services/actionflow/workflow_compiler.js +11 -8
  68. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  69. package/dist/services/report/blueprint.d.ts +109 -0
  70. package/dist/services/report/blueprint.d.ts.map +1 -0
  71. package/dist/services/report/blueprint.js +322 -0
  72. package/dist/services/report/blueprint.js.map +1 -0
  73. package/dist/services/report/build.d.ts.map +1 -1
  74. package/dist/services/report/build.js +8 -3
  75. package/dist/services/report/build.js.map +1 -1
  76. package/dist/services/report/card.d.ts +65 -0
  77. package/dist/services/report/card.d.ts.map +1 -0
  78. package/dist/services/report/card.js +151 -0
  79. package/dist/services/report/card.js.map +1 -0
  80. package/dist/services/report/copy-health.d.ts +31 -0
  81. package/dist/services/report/copy-health.d.ts.map +1 -0
  82. package/dist/services/report/copy-health.js +87 -0
  83. package/dist/services/report/copy-health.js.map +1 -0
  84. package/dist/services/report/dataset-heal.d.ts +64 -0
  85. package/dist/services/report/dataset-heal.d.ts.map +1 -0
  86. package/dist/services/report/dataset-heal.js +89 -0
  87. package/dist/services/report/dataset-heal.js.map +1 -0
  88. package/dist/services/report/dataset-ids.d.ts +70 -0
  89. package/dist/services/report/dataset-ids.d.ts.map +1 -0
  90. package/dist/services/report/dataset-ids.js +149 -0
  91. package/dist/services/report/dataset-ids.js.map +1 -0
  92. package/dist/services/report/dataset.d.ts.map +1 -1
  93. package/dist/services/report/dataset.js +3 -1
  94. package/dist/services/report/dataset.js.map +1 -1
  95. package/dist/services/report/empty-dataset.d.ts +51 -0
  96. package/dist/services/report/empty-dataset.d.ts.map +1 -0
  97. package/dist/services/report/empty-dataset.js +213 -0
  98. package/dist/services/report/empty-dataset.js.map +1 -0
  99. package/dist/services/report/field-binding.d.ts +75 -0
  100. package/dist/services/report/field-binding.d.ts.map +1 -0
  101. package/dist/services/report/field-binding.js +160 -0
  102. package/dist/services/report/field-binding.js.map +1 -0
  103. package/dist/services/report/forms.d.ts +32 -0
  104. package/dist/services/report/forms.d.ts.map +1 -1
  105. package/dist/services/report/forms.js +90 -0
  106. package/dist/services/report/forms.js.map +1 -1
  107. package/dist/services/report/formula-parent.d.ts +25 -0
  108. package/dist/services/report/formula-parent.d.ts.map +1 -0
  109. package/dist/services/report/formula-parent.js +116 -0
  110. package/dist/services/report/formula-parent.js.map +1 -0
  111. package/dist/services/report/locate.d.ts +40 -0
  112. package/dist/services/report/locate.d.ts.map +1 -0
  113. package/dist/services/report/locate.js +122 -0
  114. package/dist/services/report/locate.js.map +1 -0
  115. package/dist/services/report/reports.d.ts +4 -0
  116. package/dist/services/report/reports.d.ts.map +1 -1
  117. package/dist/services/report/reports.js +4 -2
  118. package/dist/services/report/reports.js.map +1 -1
  119. package/dist/services/report/scene.d.ts +22 -0
  120. package/dist/services/report/scene.d.ts.map +1 -0
  121. package/dist/services/report/scene.js +145 -0
  122. package/dist/services/report/scene.js.map +1 -0
  123. package/dist/services/report/types.d.ts +28 -0
  124. package/dist/services/report/types.d.ts.map +1 -1
  125. package/dist/services/report/verify.d.ts +24 -0
  126. package/dist/services/report/verify.d.ts.map +1 -1
  127. package/dist/services/report/verify.js +115 -2
  128. package/dist/services/report/verify.js.map +1 -1
  129. package/dist/services/report/workbook.d.ts +12 -1
  130. package/dist/services/report/workbook.d.ts.map +1 -1
  131. package/dist/services/report/workbook.js +107 -8
  132. package/dist/services/report/workbook.js.map +1 -1
  133. package/dist/services/workflow-after-submit-comment.d.ts +20 -0
  134. package/dist/services/workflow-after-submit-comment.d.ts.map +1 -0
  135. package/dist/services/workflow-after-submit-comment.js +81 -0
  136. package/dist/services/workflow-after-submit-comment.js.map +1 -0
  137. package/ecodecmd/src/build.js +36 -12
  138. package/package.json +1 -1
  139. package/skill-docs/SKILL.md +4 -4
  140. package/skill-docs/_catalog.md +10 -1
  141. package/skill-docs/actionflows/SKILL.md +1 -0
  142. package/skill-docs/actionflows/references/components/ebuilder/EnquiryForm.md +2 -2
  143. package/skill-docs/actionflows/references/components/trigger/CustomTrigger.md +2 -0
  144. package/skill-docs/actionflows/references/components/trigger/WebHookTrigger.md +19 -1
  145. package/skill-docs/references/coding/guide-form-crud.md +2 -0
  146. package/skill-docs/references/coding/guide-page-code.md +108 -0
  147. package/skill-docs/references/components/ref-component-common.md +98 -0
  148. package/skill-docs/references/report/add-dataset-registration-guide.md +44 -22
  149. package/skill-docs/references/report/advanced-crosstab-tree-guide.md +82 -0
  150. package/skill-docs/references/report/ai-report-workflow.md +100 -100
  151. package/skill-docs/references/report/api-auth-headers.md +129 -0
  152. package/skill-docs/references/report/api-report-build-fast-path.md +274 -275
  153. package/skill-docs/references/report/app-datasource-lookup-guide.md +230 -230
  154. package/skill-docs/references/report/branch-scene-guide.md +293 -0
  155. package/skill-docs/references/report/build-resilience-guide.md +99 -0
  156. package/skill-docs/references/report/card-report-guide.md +110 -0
  157. package/skill-docs/references/report/cell-config-echo-guide.md +44 -9
  158. package/skill-docs/references/report/cell-transform-guide.md +9 -9
  159. package/skill-docs/references/report/column-split-report-guide.md +96 -0
  160. package/skill-docs/references/report/condition-format-guide.md +49 -24
  161. package/skill-docs/references/report/cross-dataset-filter-guide.md +180 -69
  162. package/skill-docs/references/report/crosstab-raw-workbook-guide.md +265 -0
  163. package/skill-docs/references/report/dataset-query-filter-guide.md +231 -235
  164. package/skill-docs/references/report/dataset-sidebar-ops-guide.md +75 -34
  165. package/skill-docs/references/report/dataset-table-field-contract-guide.md +196 -46
  166. package/skill-docs/references/report/datasource-metadata-guide.md +128 -119
  167. package/skill-docs/references/report/datasource-selection-and-parent-filter-guide.md +183 -148
  168. package/skill-docs/references/report/date-range-query-reference.md +97 -102
  169. package/skill-docs/references/report/default-header-style-guide.md +8 -8
  170. package/skill-docs/references/report/designer-blank-prevention-guide.md +8 -8
  171. package/skill-docs/references/report/dossier-report-guide.md +69 -0
  172. package/skill-docs/references/report/drilldown-report-guide.md +59 -0
  173. package/skill-docs/references/report/event-hreflink-guide.md +53 -47
  174. package/skill-docs/references/report/expansion-block-parent-config-guide.md +208 -0
  175. package/skill-docs/references/report/failure-cleanup-and-nonblocking-guide.md +183 -0
  176. package/skill-docs/references/report/field-bind-exact-match-guide.md +208 -208
  177. package/skill-docs/references/report/financial-stats-report-guide.md +89 -0
  178. package/skill-docs/references/report/formula-cell-api-guide.md +325 -258
  179. package/skill-docs/references/report/golden-case-summary-sheet.md +200 -0
  180. package/skill-docs/references/report/guide-report-build.md +6 -1
  181. package/skill-docs/references/report/hidden-row-and-header-merge-guide.md +10 -10
  182. package/skill-docs/references/report/layout-showlocation-freeze-guide.md +39 -10
  183. package/skill-docs/references/report/multi-report-crosstab-casebook.md +263 -0
  184. package/skill-docs/references/report/paged-group-report-guide.md +68 -0
  185. package/skill-docs/references/report/preaggregate-auto-disable-guide.md +24 -13
  186. package/skill-docs/references/report/query-condition-api-guide.md +145 -125
  187. package/skill-docs/references/report/ref-report-commands.md +41 -3
  188. package/skill-docs/references/report/report-baseinfo-defaults-guide.md +117 -117
  189. package/skill-docs/references/report/report-building-guide.md +52 -52
  190. package/skill-docs/references/report/report-case-prompts.md +104 -0
  191. package/skill-docs/references/report/report-config-schema.md +281 -281
  192. package/skill-docs/references/report/report-create-modes-guide.md +73 -35
  193. package/skill-docs/references/report/report-data-model.md +131 -131
  194. package/skill-docs/references/report/report-delivery-contract.md +23 -3
  195. package/skill-docs/references/report/report-designer-feature-map.md +30 -35
  196. package/skill-docs/references/report/report-help-guide.md +304 -0
  197. package/skill-docs/references/report/report-internal-error-guide.md +71 -0
  198. package/skill-docs/references/report/report-knowledge-base.md +27 -27
  199. package/skill-docs/references/report/report-lifecycle-api-guide.md +126 -94
  200. package/skill-docs/references/report/report-list-page-ops-guide.md +54 -8
  201. package/skill-docs/references/report/report-permission-guide.md +99 -102
  202. package/skill-docs/references/report/report-requirement-analysis-template.md +93 -29
  203. package/skill-docs/references/report/report-self-check-guide.md +164 -164
  204. package/skill-docs/references/report/report-verification-discipline-guide.md +203 -0
  205. package/skill-docs/references/report/safe-partial-save-guide.md +151 -151
  206. package/skill-docs/references/report/shard-freeze-report-guide.md +97 -0
  207. package/skill-docs/references/report/snowflake-id-precision-guide.md +84 -84
  208. package/skill-docs/references/report/spec-build-schema.md +71 -71
  209. package/skill-docs/references/report/targeted-fix-guide.md +155 -97
  210. package/skill-docs/references/report/user-request-scope-only-guide.md +23 -4
  211. package/skill-docs/references/workflow/guide-after-submit-comment.md +58 -0
  212. package/skill-docs/references/workflow/guide-workflow.md +6 -0
@@ -3,7 +3,7 @@
3
3
  > **页面场景**:`/sp/ebdapp/detail/{appId}/report` 报表卡片「…」菜单
4
4
  > **源码依据**:`EdcReportDevBaseController.java`、`EdcDataPermissionController.java`、`EdcReportDevDesignController.java`(weaver-edcreportd)
5
5
  > **菜单 HTTP 封装**:e10-cli `menu.js` → `POST /api/cusapp/app/savePublishMenu`
6
- > **鉴权**:必须走 e10-login,请求头见 `api-auth-headers.md`(Cookie.raw + eteamsid + User-Agent 三项)
6
+ > **鉴权**:必须走 e10-cli auth,请求头见 `api-auth-headers.md`(Cookie.raw + eteamsid + User-Agent 三项)
7
7
 
8
8
  ---
9
9
 
@@ -44,7 +44,7 @@
44
44
 
45
45
  ## 一附 B、列表页其它操作(分组 / 视图 / 移动 / 转移 / 矩阵)
46
46
 
47
- > **完整规则与 CLI** → **`report-list-page-ops-guide.md`** · `e10-cli report --help-page`
47
+ > **完整规则与 CLI** → **`report-list-page-ops-guide.md`** ·
48
48
 
49
49
  | UI | API / 机制 | CLI |
50
50
  |----|------------|-----|
@@ -52,7 +52,7 @@
52
52
  | 卡片/列表视图 + 快速排序 | **localStorage / 内存**,无服务端写 | 仅文档;可读 `tableView` |
53
53
  | 权限矩阵增删 | `matrix/list` + `savePermissions` / `matrix/save` | `e10-cli report scope matrix …` |
54
54
  | 移动到 | `POST removeReport`(改 group_id);**无自建分组则不可选** | `e10-cli report lifecycle move` |
55
- | 转移到 | `app/list` 选启用应用 + `transferReport`;**重名须确认** | `e10-cli report app-search` · `lifecycle transfer` |
55
+ | 转移到 | `app/list` 选启用应用 + `transferReport`;**重名须确认** | `e10-cli report app search` · `lifecycle transfer` |
56
56
 
57
57
  ---
58
58
 
@@ -60,18 +60,18 @@
60
60
 
61
61
  ```mermaid
62
62
  flowchart LR
63
- subgraph listPage["报表列表页"]
64
- A[报表权限]
65
- B[编辑]
66
- C[添加到菜单]
67
- D[复制]
68
- E[删除]
69
- end
70
- A --> P1["permission/table/*"]
71
- B --> P2["GET baseInfo + 设计器 getReportDevInfo"]
72
- C --> P3["POST cusapp/app/savePublishMenu"]
73
- D --> P4["GET copySheet"]
74
- E --> P5["GET deleteReport"]
63
+ subgraph listPage["报表列表页"]
64
+ A[报表权限]
65
+ B[编辑]
66
+ C[添加到菜单]
67
+ D[复制]
68
+ E[删除]
69
+ end
70
+ A --> P1["permission/table/*"]
71
+ B --> P2["GET baseInfo + 设计器 getReportDevInfo"]
72
+ C --> P3["POST cusapp/app/savePublishMenu"]
73
+ D --> P4["GET copySheet"]
74
+ E --> P5["GET deleteReport"]
75
75
  ```
76
76
 
77
77
  ### 1. 报表权限设置
@@ -108,21 +108,21 @@ flowchart LR
108
108
 
109
109
  ```json
110
110
  {
111
- "<reportId>": {
112
- "viewRight": [
113
- {
114
- "sourceId": "<reportId>",
115
- "permissionId": "<DataRightType.REPORT_VIEW>",
116
- "targetType": 1,
117
- "targetId": "<userOrDeptId>",
118
- "permissionType": 1,
119
- "objType": "resource",
120
- "seclevel": { "min": -999, "max": 999 }
121
- }
122
- ],
123
- "viewMatrixRight": [],
124
- "disableRight": []
125
- }
111
+ "<reportId>": {
112
+ "viewRight": [
113
+ {
114
+ "sourceId": "<reportId>",
115
+ "permissionId": "<DataRightType.REPORT_VIEW>",
116
+ "targetType": 1,
117
+ "targetId": "<userOrDeptId>",
118
+ "permissionType": 1,
119
+ "objType": "resource",
120
+ "seclevel": { "min": -999, "max": 999 }
121
+ }
122
+ ],
123
+ "viewMatrixRight": [],
124
+ "disableRight": []
125
+ }
126
126
  }
127
127
  ```
128
128
 
@@ -169,38 +169,38 @@ flowchart LR
169
169
 
170
170
  ```json
171
171
  {
172
- "content": "销售经营分析报表",
173
- "id": "",
174
- "openMode": "1",
175
- "pid": "0",
176
- "type": "0",
177
- "params": [],
178
- "showType": "1",
179
- "showOrder": 1,
180
- "firstTabChange": false,
181
- "nameLabelId": "-1",
182
- "nameAlias": "",
183
- "tabs": "{}",
184
- "combinationId": "",
185
- "shareMap": [{
186
- "id": "0",
187
- "content": "所有人",
188
- "permissionId": "sys_view",
189
- "targetId": 0,
190
- "targetType": 11,
191
- "sourceType": 1,
192
- "objIdList": ["所有人"]
193
- }],
194
- "showRightBtn": "1",
195
- "urlLinkType": "0",
196
- "page": {
197
- "pageId": "<reportId>",
198
- "pageName": "销售经营分析报表",
199
- "pageType": "REPORT",
200
- "terminalScopes": "",
201
- "appid": "<appId>"
202
- },
203
- "unitFill": "0"
172
+ "content": "销售经营分析报表",
173
+ "id": "",
174
+ "openMode": "1",
175
+ "pid": "0",
176
+ "type": "0",
177
+ "params": [],
178
+ "showType": "1",
179
+ "showOrder": 1,
180
+ "firstTabChange": false,
181
+ "nameLabelId": "-1",
182
+ "nameAlias": "",
183
+ "tabs": "{}",
184
+ "combinationId": "",
185
+ "shareMap": [{
186
+ "id": "0",
187
+ "content": "所有人",
188
+ "permissionId": "sys_view",
189
+ "targetId": 0,
190
+ "targetType": 11,
191
+ "sourceType": 1,
192
+ "objIdList": ["所有人"]
193
+ }],
194
+ "showRightBtn": "1",
195
+ "urlLinkType": "0",
196
+ "page": {
197
+ "pageId": "<reportId>",
198
+ "pageName": "销售经营分析报表",
199
+ "pageType": "REPORT",
200
+ "terminalScopes": "",
201
+ "appid": "<appId>"
202
+ },
203
+ "unitFill": "0"
204
204
  }
205
205
  ```
206
206
 
@@ -237,7 +237,7 @@ GET /api/cusapp/app/allMenus?appId={appId}&terminalType=PC&isFront=0
237
237
 
238
238
  - Python:`ReportApiClient.add_report_to_menu(report_id, menu_name, menu_sys_id="")`
239
239
  - Node:参考 `e10-cli report lifecycle` → `addReportToMenu()`
240
- - 复制+权限+菜单一条龙:`node e10-cli report lifecycle copy-and-menu --app-id ... --source-name ...`
240
+ - 复制+权限+菜单一条龙:`e10-cli report lifecycle copy-and-menu --app-id ... --source-name ...`
241
241
 
242
242
  **相关读接口**:`GET /api/cusapp/app/allMenus?appId={appId}&terminalType=PC&isFront=0`
243
243
 
@@ -274,11 +274,11 @@ GET /api/cusapp/app/allMenus?appId={appId}&terminalType=PC&isFront=0
274
274
 
275
275
  ```mermaid
276
276
  flowchart LR
277
- subgraph deleteFlow["删除生命周期"]
278
- L[列表页删除] -->|deleteReport delete_type=1| R[回收站]
279
- R -->|revertRecycleReport delete_type=0| L
280
- R -->|deleteRecycleReport delete_type=3| X[彻底删除不可还原]
281
- end
277
+ subgraph deleteFlow["删除生命周期"]
278
+ L[列表页删除] -->|deleteReport delete_type=1| R[回收站]
279
+ R -->|revertRecycleReport delete_type=0| L
280
+ R -->|deleteRecycleReport delete_type=3| X[彻底删除不可还原]
281
+ end
282
282
  ```
283
283
 
284
284
  | delete_type | 含义 |
@@ -287,6 +287,38 @@ flowchart LR
287
287
  | `1` | 回收站中(可还原) |
288
288
  | `3` | 物理删除(不可还原) |
289
289
 
290
+ ### 0. 只有 reportId 时:先反查所属应用(★ 必读)
291
+
292
+ > 用户常直接给一条设计器地址 `https://<host>/sp/edc/report/designer/<reportId>` —— **URL 里没有 appId**,
293
+ > 而回收站接口**按应用维度**查。**别现场手写临时脚本**,用固化命令:
294
+
295
+ ```bash
296
+ e10-cli report locate --report-id <rid> [--app-id <id> | --app-name "应用名"] [--json]
297
+ ```
298
+
299
+ 判定口径(2026-09-15 实证):
300
+
301
+ | 步骤 | 接口 | 结论 |
302
+ |------|------|------|
303
+ | ① | `GET /api/bs/edc/report/baseInfo?id=<rid>&useTag=backend`(**无需 appId 头**) | 回出 `data.appId` → **正常态**,直接收工 |
304
+ | ② | 同上,`data` 为空(响应体**恰好 54 字节**:`{"code":200,"msg":"接口返回成功","status":true,"fail":false}`) | **已删除信号** → 扫回收站 |
305
+ | ③ | `POST /api/bs/edc/report/getRecycleReportWithPage`(并发扫,先 `--app-name` 收窄) | 命中 → 确认在该应用回收站 |
306
+ | ④ | `GET /api/bs/edc/report/list?appId=&appid=&groupid=-1&objId=-1` → `data.reportList[]` | 含该 id = 正常态;不含 = 非正常态 |
307
+
308
+ > ⚠️ **不要只看 `deleteType`**:验证报表 `1313903463073415168`「招标项目进度跟踪表」在回收站中
309
+ > `deleteType` 仍返回 **0**,与实际删除态不同步。必须靠「回收站列表命中 + live list 未命中」双判。
310
+ > `exit 3` = 既非正常态、也不在已扫应用回收站(可能已**彻底删除** `delete_type=3`,或当前账号无权限)。
311
+
312
+ **CLI**
313
+
314
+ ```bash
315
+ e10-cli report locate --report-id <rid> [--app-name "采购招标管理"] [--json]
316
+ e10-cli report lifecycle recycle-list --app-id <id> [--name "模糊"] [--json]
317
+ e10-cli report lifecycle recycle-restore --app-id <id> --report-id <rid> [--apply] # 默认 dry-run
318
+ ```
319
+
320
+ 还原后自动三重校验:①回收站列表不再含该 id;②`baseInfo` 恢复出 name/appId;③live list 已含该 id。
321
+
290
322
  ### 1. 回收站列表
291
323
 
292
324
  | 接口 | 方法 | Content-Type | 参数 |
@@ -306,7 +338,7 @@ flowchart LR
306
338
 
307
339
  **响应**:MyBatis-Plus 分页,`data.records[]` 含 `id`、`name`、`createTime`、`updateTime`、`creator`、`otherParams.creatorName` 等;`data.total` 为总数。
308
340
 
309
- **yunteams **(appId=`1310076187728674816`):回收站含 `1310085722612146177`(销售经营分析报表_20260901100141)。
341
+ **官方 SaaS 环境验证**(appId=`1310076187728674816`):回收站含 `1310085722612146177`(销售经营分析报表_20260901100141)。
310
342
 
311
343
  ### 2. 还原
312
344
 
@@ -336,31 +368,31 @@ flowchart LR
336
368
 
337
369
  ## 四、Python 客户端
338
370
 
339
- `已由 CLI 取代` 已封装:
371
+ 已封装:
340
372
 
341
373
  ```python
342
374
  from report_api_client import ReportApiClient
343
375
 
344
- cli = ReportApiClient(host, eteamsid, ebbusinessid, cookie, group_id, app_id, agent_type="Agent")
345
-
346
- cli.get_report_list() # 列表页
347
- cli.get_app_report_right(report_id) # 单报表权限
348
- cli.get_report_base_info(report_id) # 编辑前读基础信息
349
- cli.copy_sheet(report_id) # 复制(读 _newReportId)
350
- cli.delete_report(report_id) # 删除(进回收站)
351
- cli.list_recycle_reports(...) # 回收站列表
352
- cli.revert_recycle_report(report_id) # 还原
353
- cli.delete_recycle_report(report_id) # 回收站彻底删除
354
- cli.save_permissions(report_id, {...}) # 报表权限
355
- cli.add_report_to_menu(report_id, name, menu_sys_id="") # 添加到菜单(空 id=新建)
356
- cli.get_report_detail(report_id) # 设计器布局(编辑)
357
- cli.save_report_layout(...) # 保存布局(编辑)
376
+ cli = ReportApiClient(host, eteamsid, ebbusinessid, cookie, group_id, app_id, agent_type="WorkBuddy")
377
+
378
+ cli.get_report_list() # 列表页
379
+ cli.get_app_report_right(report_id) # 单报表权限
380
+ cli.get_report_base_info(report_id) # 编辑前读基础信息
381
+ cli.copy_sheet(report_id) # 复制(读 _newReportId)
382
+ cli.delete_report(report_id) # 删除(进回收站)
383
+ cli.list_recycle_reports(...) # 回收站列表
384
+ cli.revert_recycle_report(report_id) # 还原
385
+ cli.delete_recycle_report(report_id) # 回收站彻底删除
386
+ cli.save_permissions(report_id, {...}) # 报表权限
387
+ cli.add_report_to_menu(report_id, name, menu_sys_id="") # 添加到菜单(空 id=新建)
388
+ cli.get_report_detail(report_id) # 设计器布局(编辑)
389
+ cli.save_report_layout(...) # 保存布局(编辑)
358
390
 
359
391
  # Node 一条龙(复制+权限+菜单):
360
- # node e10-cli report lifecycle copy-and-menu --app-id {appId} --source-name "报表名"
392
+ # e10-cli report lifecycle copy-and-menu --app-id {appId} --source-name "报表名"
361
393
  ```
362
394
 
363
- 凭证来源:`e10-cli auth status`(CLI 自动解析)
395
+ 凭证来源:`e10-cli report creds --appid {appId}`
364
396
 
365
397
  ---
366
398
 
@@ -371,22 +403,22 @@ cli.save_report_layout(...) # 保存布局(编辑)
371
403
  | 新建报表外壳(三模式) | `create_report_shell` / `create_from_model` / `create_from_quickly_param` → `POST baseInfo`;CLI `e10-cli report create` |
372
404
  | 分组增删 / 移动 / 转移 | `list/save_report_groups` · `move_report` · `transfer_report` / `list_eb_apps`;CLI `group` · `lifecycle move\|transfer` · `app search` |
373
405
  | 布局/workbook | `formula-cell-api-guide.md`、`cross-dataset-filter-guide.md` |
374
- | **局部保存 · 设计区保护** | **`safe-partial-save-guide.md`** · `safe_report_save.js` |
406
+ | **局部保存 · 设计区保护** | **`safe-partial-save-guide.md`** · `` |
375
407
  | **使用/禁用权限** | **`report-permission-guide.md`** |
376
- | **定时快照** | **`set_snapshot_schedule.js`** / `e10-cli report snapshot set`(默认名 `{报表名}-{date}-{time}`;禁 Number sheetId;依赖 safe_report_save) |
377
- | **空白门禁** | **`validate_designer_blank_guard.js`** / `e10-cli report verify blank` |
378
- | **存为新版本 / 还原** | **`report-designer-feature-map.md` §8.1** · `save_as_version.js` · `GET rollbackReport` |
379
- | 鉴权 | `api-auth-headers.md`、`e10-login-integration.md` |
408
+ | **定时快照** | **`e10-cli report snapshot`** / `e10-cli report snapshot set`(默认名 `{报表名}-{date}-{time}`;禁 Number sheetId;依赖 safe_report_save) |
409
+ | **空白门禁** | **`e10-cli report validate blank`** / `e10-cli report verify blank` |
410
+ | **存为新版本 / 还原** | **`report-designer-feature-map.md` §8.1** · `e10-cli report version` · `GET rollbackReport` |
411
+ | 鉴权 | `api-auth-headers.md`、`e10-cli auth` 文档 |
380
412
  | e10-cli 菜单 | `e10-cli/references/menu/system-menus.md` |
381
413
 
382
414
  ---
383
415
 
384
- ## 六、yunteams 页面参数
416
+ ## 六、官方 SaaS 环境验证页面参数
385
417
 
386
418
  | 项 | 值 |
387
419
  |----|-----|
388
- | 页面 | `https://weapp.yunteams.cn/sp/ebdapp/detail/1310076187728674816/report` |
420
+ | 页面 | `https://<平台地址>/sp/ebdapp/detail/<appId>/report` |
389
421
  | appId | `1310076187728674816` |
390
422
  | 示例报表 | 销售经营分析报表(卡片菜单与截图一致) |
391
423
 
392
- > 浏览器未登录时无法 live 实际请求;上表接口来自 **edcreportd 源码 + 历史 yunteams 列表页实际请求 + e10-cli savePublishMenu ** 三方对齐。
424
+ > 浏览器未登录时无法 live 接口返回;上表接口来自 **edcreportd 源码 + 历史官方 SaaS 列表页接口返回 + e10-cli savePublishMenu 验证** 三方对齐。
@@ -3,7 +3,7 @@
3
3
  > **页面**:`/sp/ebdapp/detail/{appId}/report`
4
4
  > **源码**:`MenuGroupController` · `EdcReportDevBaseController.removeReport|transferReport` · `EdcDataPermissionController` · 前端 `localStorage edc_report_view_type`
5
5
  > **CLI**:`e10-cli report group|lifecycle move|lifecycle transfer|app search|scope matrix|policy list-page`
6
- > **鉴权**:e10-login 三项头(`api-auth-headers.md`)
6
+ > **鉴权**:e10-cli auth 三项头(`api-auth-headers.md`)
7
7
 
8
8
  ---
9
9
 
@@ -34,9 +34,55 @@
34
34
 
35
35
  | id | 含义 |
36
36
  |----|------|
37
- | `-1` | 全部 |
37
+ | `-1` | 全部(侧栏筛选)/**报表行上的 `groupId=-1` = 未分组桶(UI 建表的默认值)** |
38
38
  | `-2` | 我创建 |
39
39
  | `-3` | 未分组(部分租户) |
40
+ | `0` | **★ 孤儿分组 —— 不要写**(见下节) |
41
+
42
+ ### 1.1.1 ★ 报表行的 `groupId`:`-1` 才是「默认桶」,`0` 是孤儿分组(2026-09-15 实证)
43
+
44
+ **症状**:应用里点「菜单选取」时整个应用的报表都列不出来,只有手动建的能选到
45
+ —— 根因往往是这些报表的 `group_id = 0`:
46
+
47
+ - UI 建表写 `groupId = -1`(未分组桶);脚本历史把 `baseInfo` 表单的 `groupId` 硬编码成 `"0"`;
48
+ - **自建分组 id 是服务端分配的雪花号,不可能是 0** → `group_id=0` 指向一个不存在的分组;
49
+ - 后果:上游按「默认分组 / 未分组」枚举时看不到这些报表(就是菜单选取那条路)。
50
+
51
+ 验证对照(同一应用,`group/list` 为空):
52
+
53
+ | 报表 | group_id | 菜单/按分组枚举能否看到 |
54
+ |------|----------|------------------------|
55
+ | 手动建(UI) | `-1` | ✅ 能 |
56
+ | AI/脚本建 | `0` | ❌ 看不到 |
57
+
58
+ > ⚠️ **归因更正(2026-09-15 二次实证)**:**卡片菜单里的「复制」报 500「报表内部错误」与 `group_id` 无关** ——
59
+ > 把 `groupId=0` 的表改成 `-1` 之后复制**仍然 500**。
60
+ > **复制 500 的真因 = 数据集 `type` 是大写 `LOGIC`**(设计器/手动建表写的是小写 `logic`):
61
+ > 同应用同表单两张空壳,唯一差别 `--source-type logic` / `--source-type LOGIC` → 复制 **200 / 500**。
62
+ > 详见 `report-internal-error-guide.md` 速查表 · 注意点 **BUILD-29**。分组只影响「列表 / 菜单能否枚举到」。
63
+
64
+ ```bash
65
+ # 只读体检:标出孤儿分组(命中 exit 3)
66
+ e10-cli report group audit --app-id <appId> [--json]
67
+
68
+ # 批量对齐到「页面手动建表」口径(不传 --report-id = 自动全量孤儿;默认 dry-run)
69
+ e10-cli report group sync --app-id <appId> [--report-id <rid>]... [--apply]
70
+
71
+ # 单张改:移回「未分组」默认桶(默认 dry-run)
72
+ e10-cli report group set --app-id <appId> --report-id <rid> --group-id -1 [--apply]
73
+
74
+ # ★ 复制报 500 时走这条(诊断 + 修复),不要再用分组解释复制失败
75
+ e10-cli report copy-health --report-id <rid> --app-id <appId> [--clean]
76
+ e10-cli report dataset heal --report-id <rid> --app-id <appId> [--purge] --apply
77
+
78
+ # ★ 应用级批量(一个应用逐张过一遍;禁再写外层 shell 循环)
79
+ e10-cli report copy-health --app-id <appId> [--probe] [--clean] # 复制合规矩阵,BAD 行自带修复命令(exit 3)
80
+ e10-cli report dataset heal --app-id <appId> [--purge] [--apply] # 批量修复,只对有阻断项的报表落库
81
+ e10-cli report cleanup shells --app-id <appId> --match "__诊断" [--apply] # 清诊断/对照临时表(默认 dry-run)
82
+ ```
83
+
84
+ > **建表侧铁律**:新建 `groupId` 用 `-1`;保存已有报表一律原样回传 `baseInfo.groupId`。
85
+ > 需要覆盖默认值:环境变量 `EB_EDC_NEW_REPORT_GROUP_ID`。
40
86
 
41
87
  `save` 前须过滤掉 `id === "-1"` 等哨兵;只提交用户自建分组。
42
88
 
@@ -76,7 +122,7 @@ Agent:
76
122
  - 卡片列表仍用 `GET /api/bs/edc/report/list?appid=&groupid=&objId=`
77
123
 
78
124
  ```bash
79
- e10-cli report --help-page # 打印本节政策
125
+ # 打印本节政策
80
126
  ```
81
127
 
82
128
  ---
@@ -89,8 +135,8 @@ e10-cli report --help-page # 打印本节政策
89
135
 
90
136
  ```http
91
137
  POST /api/bs/edc/report/permission/matrix/list
92
- { "target": "<reportId>", "type": "1" } # 使用范围矩阵
93
- { "target": "<reportId>", "type": "-1" } # 禁用范围矩阵
138
+ { "target": "<reportId>", "type": "1" } # 使用范围矩阵
139
+ { "target": "<reportId>", "type": "-1" } # 禁用范围矩阵
94
140
  ```
95
141
 
96
142
  ### 3.2 添加
@@ -101,14 +147,14 @@ POST /api/bs/edc/report/permission/matrix/list
101
147
  | **禁用范围 · 矩阵** | **单独** `POST .../permission/matrix/save`,`rightsType:"-1"`;**不要**只靠 savePermissions |
102
148
 
103
149
  矩阵行字段:`selectedType` · `dataId` · `matrixConditionData` · `matrixValueRelation` · `targetId` · `rightsType` · `rightsName`
104
- **条件/取值字段 JSON 必须以设计器 Network 实际请求为准**,禁止臆造键名。
150
+ **条件/取值字段 JSON 必须以设计器 Network 接口返回为准**,禁止臆造键名。
105
151
 
106
152
  ### 3.3 删除
107
153
 
108
154
  | 范围 | 做法 |
109
155
  |------|------|
110
156
  | 使用矩阵 | `matrix/list` → 去掉目标行 → `savePermissions` 提交剩余 `viewMatrixRight`(可空数组=全清使用矩阵) |
111
- | 禁用矩阵 | `matrix/list type=-1` → 对目标行 `matrix/save` 且 **`deleteType: 1`**(或只保留要留下的行再 save;以实际请求为准) |
157
+ | 禁用矩阵 | `matrix/list type=-1` → 对目标行 `matrix/save` 且 **`deleteType: 1`**(或只保留要留下的行再 save;以接口返回为准) |
112
158
 
113
159
  ```bash
114
160
  e10-cli report scope matrix list --report-id <id> --app-id <appId> [--type 1|-1]
@@ -165,7 +211,7 @@ reportIds=<id>[&reportIds=<id2>]&appId=<目标应用ID>
165
211
  | 可选校验 | `GET /api/bs/edc/report/appRight?appId={目标}` 确认可操作 |
166
212
 
167
213
  ```bash
168
- e10-cli report app-search --name "办公" [--page 1] [--size 20]
214
+ e10-cli report app search --name "办公" [--page 1] [--size 20]
169
215
  e10-cli report lifecycle transfer --report-id <id> --app-id <目标appId>
170
216
  e10-cli report lifecycle transfer --report-id <id> --app-name "xxx"
171
217
  # --app-name 命中多条 → 输出 candidates,要求 --confirm-app-id