weaver-e10-builder 1.6.10 → 1.6.12
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.
- package/dist/commands/form-browser-definition.d.ts.map +1 -1
- package/dist/commands/form-browser-definition.js +108 -7
- package/dist/commands/form-browser-definition.js.map +1 -1
- package/dist/commands/form-browser-scope-rules.d.ts +27 -0
- package/dist/commands/form-browser-scope-rules.d.ts.map +1 -0
- package/dist/commands/form-browser-scope-rules.js +141 -0
- package/dist/commands/form-browser-scope-rules.js.map +1 -0
- package/dist/commands/form-browser-scope-tree.d.ts +14 -0
- package/dist/commands/form-browser-scope-tree.d.ts.map +1 -0
- package/dist/commands/form-browser-scope-tree.js +115 -0
- package/dist/commands/form-browser-scope-tree.js.map +1 -0
- package/dist/commands/matrix-maintainer.d.ts +3 -0
- package/dist/commands/matrix-maintainer.d.ts.map +1 -0
- package/dist/commands/matrix-maintainer.js +117 -0
- package/dist/commands/matrix-maintainer.js.map +1 -0
- package/dist/commands/matrix.d.ts.map +1 -1
- package/dist/commands/matrix.js +2 -0
- package/dist/commands/matrix.js.map +1 -1
- package/dist/commands/report-admin.d.ts.map +1 -1
- package/dist/commands/report-admin.js +378 -2
- package/dist/commands/report-admin.js.map +1 -1
- package/dist/commands/report-validate.d.ts.map +1 -1
- package/dist/commands/report-validate.js +1102 -3
- package/dist/commands/report-validate.js.map +1 -1
- package/dist/commands/report.d.ts.map +1 -1
- package/dist/commands/report.js +341 -3
- package/dist/commands/report.js.map +1 -1
- package/dist/commands/role.d.ts.map +1 -1
- package/dist/commands/role.js +354 -0
- package/dist/commands/role.js.map +1 -1
- package/dist/commands/special.d.ts.map +1 -1
- package/dist/commands/special.js +67 -31
- package/dist/commands/special.js.map +1 -1
- package/dist/commands/wf-form.d.ts.map +1 -1
- package/dist/commands/wf-form.js +1 -121
- package/dist/commands/wf-form.js.map +1 -1
- package/dist/commands/workflow-after-submit-comment.d.ts +3 -0
- package/dist/commands/workflow-after-submit-comment.d.ts.map +1 -0
- package/dist/commands/workflow-after-submit-comment.js +56 -0
- package/dist/commands/workflow-after-submit-comment.js.map +1 -0
- package/dist/commands/workflow-layout-components.d.ts +3 -0
- package/dist/commands/workflow-layout-components.d.ts.map +1 -0
- package/dist/commands/workflow-layout-components.js +36 -0
- package/dist/commands/workflow-layout-components.js.map +1 -0
- package/dist/commands/workflow-node-batch.d.ts +3 -0
- package/dist/commands/workflow-node-batch.d.ts.map +1 -0
- package/dist/commands/workflow-node-batch.js +136 -0
- package/dist/commands/workflow-node-batch.js.map +1 -0
- package/dist/commands/workflow-node-opinion.d.ts +3 -0
- package/dist/commands/workflow-node-opinion.d.ts.map +1 -0
- package/dist/commands/workflow-node-opinion.js +51 -0
- package/dist/commands/workflow-node-opinion.js.map +1 -0
- package/dist/commands/workflow-node-reject.js +1 -1
- package/dist/commands/workflow-node-reject.js.map +1 -1
- package/dist/commands/workflow-node.d.ts.map +1 -1
- package/dist/commands/workflow-node.js +4 -3
- package/dist/commands/workflow-node.js.map +1 -1
- package/dist/commands/workflow-setting.d.ts.map +1 -1
- package/dist/commands/workflow-setting.js +2 -67
- package/dist/commands/workflow-setting.js.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/services/actionflow/components/send_message.d.ts.map +1 -1
- package/dist/services/actionflow/components/send_message.js +8 -3
- package/dist/services/actionflow/components/send_message.js.map +1 -1
- package/dist/services/actionflow/context_preflight.js +1 -1
- package/dist/services/actionflow/context_preflight.js.map +1 -1
- package/dist/services/actionflow/formula_service.d.ts +1 -0
- package/dist/services/actionflow/formula_service.d.ts.map +1 -1
- package/dist/services/actionflow/formula_service.js +107 -31
- package/dist/services/actionflow/formula_service.js.map +1 -1
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +4 -1
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/form-layout-describe.d.ts.map +1 -1
- package/dist/services/form-layout-describe.js +3 -2
- package/dist/services/form-layout-describe.js.map +1 -1
- package/dist/services/form-layout-document.d.ts.map +1 -1
- package/dist/services/form-layout-document.js +2 -1
- package/dist/services/form-layout-document.js.map +1 -1
- package/dist/services/matrix-maintainer.d.ts +27 -0
- package/dist/services/matrix-maintainer.d.ts.map +1 -0
- package/dist/services/matrix-maintainer.js +142 -0
- package/dist/services/matrix-maintainer.js.map +1 -0
- package/dist/services/report/blueprint.d.ts +109 -0
- package/dist/services/report/blueprint.d.ts.map +1 -0
- package/dist/services/report/blueprint.js +322 -0
- package/dist/services/report/blueprint.js.map +1 -0
- package/dist/services/report/build.d.ts.map +1 -1
- package/dist/services/report/build.js +8 -3
- package/dist/services/report/build.js.map +1 -1
- package/dist/services/report/card.d.ts +65 -0
- package/dist/services/report/card.d.ts.map +1 -0
- package/dist/services/report/card.js +151 -0
- package/dist/services/report/card.js.map +1 -0
- package/dist/services/report/copy-health.d.ts +31 -0
- package/dist/services/report/copy-health.d.ts.map +1 -0
- package/dist/services/report/copy-health.js +87 -0
- package/dist/services/report/copy-health.js.map +1 -0
- package/dist/services/report/dataset-heal.d.ts +64 -0
- package/dist/services/report/dataset-heal.d.ts.map +1 -0
- package/dist/services/report/dataset-heal.js +89 -0
- package/dist/services/report/dataset-heal.js.map +1 -0
- package/dist/services/report/dataset-ids.d.ts +70 -0
- package/dist/services/report/dataset-ids.d.ts.map +1 -0
- package/dist/services/report/dataset-ids.js +149 -0
- package/dist/services/report/dataset-ids.js.map +1 -0
- package/dist/services/report/dataset.d.ts.map +1 -1
- package/dist/services/report/dataset.js +3 -1
- package/dist/services/report/dataset.js.map +1 -1
- package/dist/services/report/drill.d.ts +74 -0
- package/dist/services/report/drill.d.ts.map +1 -0
- package/dist/services/report/drill.js +259 -0
- package/dist/services/report/drill.js.map +1 -0
- package/dist/services/report/empty-dataset.d.ts +51 -0
- package/dist/services/report/empty-dataset.d.ts.map +1 -0
- package/dist/services/report/empty-dataset.js +213 -0
- package/dist/services/report/empty-dataset.js.map +1 -0
- package/dist/services/report/field-binding.d.ts +75 -0
- package/dist/services/report/field-binding.d.ts.map +1 -0
- package/dist/services/report/field-binding.js +160 -0
- package/dist/services/report/field-binding.js.map +1 -0
- package/dist/services/report/forms.d.ts +32 -0
- package/dist/services/report/forms.d.ts.map +1 -1
- package/dist/services/report/forms.js +90 -0
- package/dist/services/report/forms.js.map +1 -1
- package/dist/services/report/formula-parent.d.ts +25 -0
- package/dist/services/report/formula-parent.d.ts.map +1 -0
- package/dist/services/report/formula-parent.js +116 -0
- package/dist/services/report/formula-parent.js.map +1 -0
- package/dist/services/report/locate.d.ts +40 -0
- package/dist/services/report/locate.d.ts.map +1 -0
- package/dist/services/report/locate.js +122 -0
- package/dist/services/report/locate.js.map +1 -0
- package/dist/services/report/reports.d.ts +4 -0
- package/dist/services/report/reports.d.ts.map +1 -1
- package/dist/services/report/reports.js +4 -2
- package/dist/services/report/reports.js.map +1 -1
- package/dist/services/report/scene.d.ts +22 -0
- package/dist/services/report/scene.d.ts.map +1 -0
- package/dist/services/report/scene.js +145 -0
- package/dist/services/report/scene.js.map +1 -0
- package/dist/services/report/types.d.ts +28 -0
- package/dist/services/report/types.d.ts.map +1 -1
- package/dist/services/report/verify.d.ts +24 -0
- package/dist/services/report/verify.d.ts.map +1 -1
- package/dist/services/report/verify.js +115 -2
- package/dist/services/report/verify.js.map +1 -1
- package/dist/services/report/workbook.d.ts +12 -1
- package/dist/services/report/workbook.d.ts.map +1 -1
- package/dist/services/report/workbook.js +107 -8
- package/dist/services/report/workbook.js.map +1 -1
- package/dist/services/role-function-permission.d.ts +12 -0
- package/dist/services/role-function-permission.d.ts.map +1 -0
- package/dist/services/role-function-permission.js +46 -0
- package/dist/services/role-function-permission.js.map +1 -0
- package/dist/services/special-layout.d.ts +113 -0
- package/dist/services/special-layout.d.ts.map +1 -0
- package/dist/services/special-layout.js +178 -0
- package/dist/services/special-layout.js.map +1 -0
- package/dist/services/workflow-after-submit-comment.d.ts +20 -0
- package/dist/services/workflow-after-submit-comment.d.ts.map +1 -0
- package/dist/services/workflow-after-submit-comment.js +81 -0
- package/dist/services/workflow-after-submit-comment.js.map +1 -0
- package/dist/services/workflow-base-settings.d.ts +1 -10
- package/dist/services/workflow-base-settings.d.ts.map +1 -1
- package/dist/services/workflow-field-permission-route.d.ts +15 -41
- package/dist/services/workflow-field-permission-route.d.ts.map +1 -1
- package/dist/services/workflow-field-permission-route.js +23 -8
- package/dist/services/workflow-field-permission-route.js.map +1 -1
- package/dist/services/workflow-layout-components.d.ts +52 -0
- package/dist/services/workflow-layout-components.d.ts.map +1 -0
- package/dist/services/workflow-layout-components.js +66 -0
- package/dist/services/workflow-layout-components.js.map +1 -0
- package/dist/services/workflow-layout-draft.d.ts +49 -0
- package/dist/services/workflow-layout-draft.d.ts.map +1 -0
- package/dist/services/workflow-layout-draft.js +98 -0
- package/dist/services/workflow-layout-draft.js.map +1 -0
- package/dist/services/workflow-node-batch-spec.d.ts +122 -0
- package/dist/services/workflow-node-batch-spec.d.ts.map +1 -0
- package/dist/services/workflow-node-batch-spec.js +496 -0
- package/dist/services/workflow-node-batch-spec.js.map +1 -0
- package/dist/services/workflow-node-batch.d.ts +73 -0
- package/dist/services/workflow-node-batch.d.ts.map +1 -0
- package/dist/services/workflow-node-batch.js +328 -0
- package/dist/services/workflow-node-batch.js.map +1 -0
- package/dist/services/workflow-node-opinion-description.d.ts +12 -0
- package/dist/services/workflow-node-opinion-description.d.ts.map +1 -0
- package/dist/services/workflow-node-opinion-description.js +52 -0
- package/dist/services/workflow-node-opinion-description.js.map +1 -0
- package/dist/services/workflow-node-opinion-layout.d.ts +22 -0
- package/dist/services/workflow-node-opinion-layout.d.ts.map +1 -0
- package/dist/services/workflow-node-opinion-layout.js +113 -0
- package/dist/services/workflow-node-opinion-layout.js.map +1 -0
- package/dist/services/workflow-node-opinion-range.d.ts +21 -0
- package/dist/services/workflow-node-opinion-range.d.ts.map +1 -0
- package/dist/services/workflow-node-opinion-range.js +74 -0
- package/dist/services/workflow-node-opinion-range.js.map +1 -0
- package/dist/services/workflow-node-opinion.d.ts +43 -0
- package/dist/services/workflow-node-opinion.d.ts.map +1 -0
- package/dist/services/workflow-node-opinion.js +198 -0
- package/dist/services/workflow-node-opinion.js.map +1 -0
- package/dist/services/workflow-opinion-settings.d.ts +14 -0
- package/dist/services/workflow-opinion-settings.d.ts.map +1 -1
- package/dist/services/workflow-opinion-settings.js +18 -2
- package/dist/services/workflow-opinion-settings.js.map +1 -1
- package/ecodecmd/src/build.js +36 -12
- package/package.json +1 -1
- package/skill-docs/SKILL.md +164 -162
- package/skill-docs/_catalog.md +13 -3
- package/skill-docs/actionflows/references/components/message/SendMessage.md +32 -30
- package/skill-docs/references/coding/guide-page-code.md +95 -0
- package/skill-docs/references/common/guide-plan-template.md +4 -1
- package/skill-docs/references/common/map.md +28 -4
- package/skill-docs/references/common/ref-cli-commands.md +14 -4
- package/skill-docs/references/components/ref-component-common.md +98 -0
- package/skill-docs/references/form/guide-browser-definition.md +2 -219
- package/skill-docs/references/form/guide-browser-scope.md +285 -0
- package/skill-docs/references/form/guide-create-form.md +1 -1
- package/skill-docs/references/hrm/guide-matrix.md +276 -245
- package/skill-docs/references/hrm/guide-role.md +77 -0
- package/skill-docs/references/report/add-dataset-registration-guide.md +44 -22
- package/skill-docs/references/report/advanced-crosstab-tree-guide.md +82 -0
- package/skill-docs/references/report/ai-report-workflow.md +100 -100
- package/skill-docs/references/report/api-auth-headers.md +129 -0
- package/skill-docs/references/report/api-report-build-fast-path.md +274 -275
- package/skill-docs/references/report/app-datasource-lookup-guide.md +230 -230
- package/skill-docs/references/report/branch-scene-guide.md +293 -0
- package/skill-docs/references/report/build-resilience-guide.md +99 -0
- package/skill-docs/references/report/card-report-guide.md +110 -0
- package/skill-docs/references/report/cell-config-echo-guide.md +44 -9
- package/skill-docs/references/report/cell-transform-guide.md +9 -9
- package/skill-docs/references/report/column-split-report-guide.md +96 -0
- package/skill-docs/references/report/condition-format-guide.md +49 -24
- package/skill-docs/references/report/cross-dataset-filter-guide.md +180 -69
- package/skill-docs/references/report/crosstab-raw-workbook-guide.md +265 -0
- package/skill-docs/references/report/dataset-query-filter-guide.md +231 -235
- package/skill-docs/references/report/dataset-sidebar-ops-guide.md +75 -34
- package/skill-docs/references/report/dataset-table-field-contract-guide.md +196 -46
- package/skill-docs/references/report/datasource-metadata-guide.md +128 -119
- package/skill-docs/references/report/datasource-selection-and-parent-filter-guide.md +183 -148
- package/skill-docs/references/report/date-range-query-reference.md +97 -102
- package/skill-docs/references/report/default-header-style-guide.md +8 -8
- package/skill-docs/references/report/designer-blank-prevention-guide.md +8 -8
- package/skill-docs/references/report/dossier-report-guide.md +69 -0
- package/skill-docs/references/report/drilldown-report-guide.md +75 -0
- package/skill-docs/references/report/event-hreflink-guide.md +55 -47
- package/skill-docs/references/report/expansion-block-parent-config-guide.md +208 -0
- package/skill-docs/references/report/failure-cleanup-and-nonblocking-guide.md +183 -0
- package/skill-docs/references/report/field-bind-exact-match-guide.md +208 -208
- package/skill-docs/references/report/financial-stats-report-guide.md +89 -0
- package/skill-docs/references/report/formula-cell-api-guide.md +325 -258
- package/skill-docs/references/report/golden-case-summary-sheet.md +200 -0
- package/skill-docs/references/report/guide-report-build.md +6 -1
- package/skill-docs/references/report/hidden-row-and-header-merge-guide.md +10 -10
- package/skill-docs/references/report/layout-showlocation-freeze-guide.md +39 -10
- package/skill-docs/references/report/multi-report-crosstab-casebook.md +263 -0
- package/skill-docs/references/report/paged-group-report-guide.md +68 -0
- package/skill-docs/references/report/preaggregate-auto-disable-guide.md +24 -13
- package/skill-docs/references/report/query-condition-api-guide.md +174 -125
- package/skill-docs/references/report/ref-report-commands.md +41 -3
- package/skill-docs/references/report/report-baseinfo-defaults-guide.md +117 -117
- package/skill-docs/references/report/report-building-guide.md +52 -52
- package/skill-docs/references/report/report-case-prompts.md +104 -0
- package/skill-docs/references/report/report-config-schema.md +281 -281
- package/skill-docs/references/report/report-create-modes-guide.md +73 -35
- package/skill-docs/references/report/report-data-model.md +131 -131
- package/skill-docs/references/report/report-delivery-contract.md +23 -3
- package/skill-docs/references/report/report-designer-feature-map.md +30 -35
- package/skill-docs/references/report/report-help-guide.md +304 -0
- package/skill-docs/references/report/report-internal-error-guide.md +71 -0
- package/skill-docs/references/report/report-knowledge-base.md +27 -27
- package/skill-docs/references/report/report-lifecycle-api-guide.md +126 -94
- package/skill-docs/references/report/report-list-page-ops-guide.md +54 -8
- package/skill-docs/references/report/report-permission-guide.md +99 -102
- package/skill-docs/references/report/report-requirement-analysis-template.md +93 -29
- package/skill-docs/references/report/report-self-check-guide.md +164 -164
- package/skill-docs/references/report/report-verification-discipline-guide.md +203 -0
- package/skill-docs/references/report/safe-partial-save-guide.md +151 -151
- package/skill-docs/references/report/shard-freeze-report-guide.md +97 -0
- package/skill-docs/references/report/snowflake-id-precision-guide.md +84 -84
- package/skill-docs/references/report/spec-build-schema.md +71 -71
- package/skill-docs/references/report/targeted-fix-guide.md +155 -97
- package/skill-docs/references/report/user-request-scope-only-guide.md +23 -4
- package/skill-docs/references/workflow/guide-after-submit-comment.md +58 -0
- package/skill-docs/references/workflow/guide-layout-components.md +26 -0
- package/skill-docs/references/workflow/guide-node-opinion.md +58 -0
- package/skill-docs/references/workflow/guide-workflow.md +49 -0
- package/skill-docs/references/form/guide-ebuilder-scope.md +0 -82
|
@@ -1,275 +1,274 @@
|
|
|
1
|
-
# API 从零搭建报表 · 快速路径(强制)
|
|
2
|
-
|
|
3
|
-
> **适用**:用户要求「在 XX 应用下搭建报表」「根据需求文档/Excel 建表」,且走 API/脚本落库。
|
|
4
|
-
> **目标**:**一次跑通**,禁止反复试探性 API、禁止二分调试脚本、禁止无用户许可的 copySheet。
|
|
5
|
-
> **优先级**:与本节冲突的旧文档表述(如「先 cache 后 dev」针对**新空报表**)以本节为准。
|
|
6
|
-
> **模式选型**:列表页「新建报表」三卡片见 **`report-create-modes-guide.md`**(模版创建 / 快速构建-列表式用 `e10-cli report create`)。**本节默认 = 从空白创建** 后的细粒度搭建。
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 〇、上下文与数据源定位(先于一切 ds API)
|
|
11
|
-
|
|
12
|
-
> **必加载** `app-datasource-lookup-guide.md` — 应用内 vs 全系统查找 + **§六探测预算/打断询问**。
|
|
13
|
-
> **必加载** `datasource-selection-and-parent-filter-guide.md` — **少挂数据源** + 连续区域只配入口父格筛选。
|
|
14
|
-
|
|
15
|
-
| 用户输入 | 行为 |
|
|
16
|
-
|----------|------|
|
|
17
|
-
| **已给 appId 或 appName** | 解析 appId → **先** `GET …/form/obj/getList/{appId}`(应用内)→ **未命中再**别处(lookup-guide §三);合计见探测预算 |
|
|
18
|
-
| **未给准确表名**(仅业务词/报表名) | **只在当前应用**检索候选 → **二次确认**后再 `addDataset`(lookup §2.0);CLI:`find form <appId> --suggest "…"`;**禁止**静默绑错表 |
|
|
19
|
-
| **已给 appId + sourceId** | **跳过**数据源搜索 |
|
|
20
|
-
| **未给 app** | 才允许全系统带关键字检索(**合计 ≤3**)→ 仍须用户确认唯一表 |
|
|
21
|
-
| **预算用尽仍不准** | **打断询问** — **禁止**继续盲扫 / 开浏览器扫页 / 固定 sleep |
|
|
22
|
-
|
|
23
|
-
**禁止**:用户已指定应用时,仍遍历全系统 `/ds/group` 或多分组空扫 —— 这是「发需求后响应慢」的首要原因。
|
|
24
|
-
|
|
25
|
-
**少挂源**:主表已有用户/部门等字段时,不要再挂人员表、部门表(见 selection-guide §一)。
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## 一、执行纪律(响应时间)
|
|
29
|
-
|
|
30
|
-
| 规则 | 说明 |
|
|
31
|
-
|------|------|
|
|
32
|
-
| **单脚本单次交付** | 登录 → 定位 sourceId → 建壳 → 绑数据集 → 组 workbook → 保存 → 回读验证;**禁止**为定位再写 3~5 个 debug_*.js |
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
46
|
-
|
|
|
47
|
-
|
|
|
48
|
-
|
|
|
49
|
-
|
|
|
50
|
-
|
|
|
51
|
-
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
0. e10-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
0.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
2.
|
|
66
|
-
|
|
67
|
-
3.
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
> **必加载** `
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
|
118
|
-
|
|
|
119
|
-
|
|
|
120
|
-
|
|
|
121
|
-
|
|
|
122
|
-
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
nf.
|
|
132
|
-
nf.
|
|
133
|
-
nf.
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
nf.
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
-
|
|
145
|
-
-
|
|
146
|
-
-
|
|
147
|
-
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
const
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
style.
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
const
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
//
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
| `
|
|
211
|
-
|
|
|
212
|
-
|
|
|
213
|
-
|
|
|
214
|
-
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
|
224
|
-
|
|
|
225
|
-
|
|
|
226
|
-
|
|
|
227
|
-
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
| `
|
|
251
|
-
| `
|
|
252
|
-
| `
|
|
253
|
-
| `
|
|
254
|
-
| `
|
|
255
|
-
| `
|
|
256
|
-
| `
|
|
257
|
-
| `
|
|
258
|
-
| `
|
|
259
|
-
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
`designKey` 来自当次 `getReportDevInfo`;保存前只拉 **一次**。
|
|
1
|
+
# API 从零搭建报表 · 快速路径(强制)
|
|
2
|
+
|
|
3
|
+
> **适用**:用户要求「在 XX 应用下搭建报表」「根据需求文档/Excel 建表」,且走 API/脚本落库。
|
|
4
|
+
> **目标**:**一次跑通**,禁止反复试探性 API、禁止二分调试脚本、禁止无用户许可的 copySheet。
|
|
5
|
+
> **优先级**:与本节冲突的旧文档表述(如「先 cache 后 dev」针对**新空报表**)以本节为准。
|
|
6
|
+
> **模式选型**:列表页「新建报表」三卡片见 **`report-create-modes-guide.md`**(模版创建 / 快速构建-列表式用 `e10-cli report create`)。**本节默认 = 从空白创建** 后的细粒度搭建。
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 〇、上下文与数据源定位(先于一切 ds API)
|
|
11
|
+
|
|
12
|
+
> **必加载** `app-datasource-lookup-guide.md` — 应用内 vs 全系统查找 + **§六探测预算/打断询问**。
|
|
13
|
+
> **必加载** `datasource-selection-and-parent-filter-guide.md` — **少挂数据源** + 连续区域只配入口父格筛选。
|
|
14
|
+
|
|
15
|
+
| 用户输入 | 行为 |
|
|
16
|
+
|----------|------|
|
|
17
|
+
| **已给 appId 或 appName** | 解析 appId → **先** `GET …/form/obj/getList/{appId}`(应用内)→ **未命中再**别处(lookup-guide §三);合计见探测预算 |
|
|
18
|
+
| **未给准确表名**(仅业务词/报表名) | **只在当前应用**检索候选 → **二次确认**后再 `addDataset`(lookup §2.0);CLI:`find form <appId> --suggest "…"`;**禁止**静默绑错表 |
|
|
19
|
+
| **已给 appId + sourceId** | **跳过**数据源搜索 |
|
|
20
|
+
| **未给 app** | 才允许全系统带关键字检索(**合计 ≤3**)→ 仍须用户确认唯一表 |
|
|
21
|
+
| **预算用尽仍不准** | **打断询问** — **禁止**继续盲扫 / 开浏览器扫页 / 固定 sleep |
|
|
22
|
+
|
|
23
|
+
**禁止**:用户已指定应用时,仍遍历全系统 `/ds/group` 或多分组空扫 —— 这是「发需求后响应慢」的首要原因。
|
|
24
|
+
|
|
25
|
+
**少挂源**:主表已有用户/部门等字段时,不要再挂人员表、部门表(见 selection-guide §一)。
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 一、执行纪律(响应时间)
|
|
29
|
+
|
|
30
|
+
| 规则 | 说明 |
|
|
31
|
+
|------|------|
|
|
32
|
+
| **单脚本单次交付** | 登录 → 定位 sourceId → 建壳 → 绑数据集 → 组 workbook → 保存 → 回读验证;**禁止**为定位再写 3~5 个 debug_*.js |
|
|
33
|
+
| **找表:先应用后别处** | 已给 app → **先** `GET /api/bs/ebuilder/form/obj/getList/{appId}`;未命中才别处检索;见 lookup-guide §二→§三 |
|
|
34
|
+
| **禁止固定 sleep** | `addDataset` 后用 **短轮询** `dataset/list`(如 100ms×≤8),**禁止** `sleep(800)` / 盲等 |
|
|
35
|
+
| **禁止为 API 启浏览器** | 建表/找表用 `https` multipart;**禁止** `chromium.launch` + 打开应用页扫表单 |
|
|
36
|
+
| **禁止探索性 API** | 未指向明确目的不得 copySheet、preCheck 全表、跨报表对比、全系统 ds/group 首轮遍历;找表超预算必须问用户 |
|
|
37
|
+
| **禁止擅自 copySheet** | 仅当用户**明确要求复制某张表**时使用;从模板 JSON 搭布局是默认路径 |
|
|
38
|
+
| **失败最多重试 1 次** | 同一 API/步骤最多再试 1 次;布局仍失败 → **删空壳**(见下)禁止同 id 死循环 |
|
|
39
|
+
| **失败/中止必删空壳** | 建壳后若布局未成功落库,或任务失败/用户中止 → **`deleteReport` 清掉临时壳**;禁止列表残留空白报表。见 `failure-cleanup-and-nonblocking-guide.md` §一 |
|
|
40
|
+
| **附属失败不卡死** | 查询条件/权限/快照等失败 → **提示用户** → 继续其它步骤 → 交付主表 → 收尾再自动补试 1 次;禁止卡在单点。见同指南 §二 |
|
|
41
|
+
| **CLI 优先** | 历史沉淀可执行点一律 `e10-cli report`(见 `e10-cli report-cli.md` §一映射);禁止堆 debug 脚本 |
|
|
42
|
+
| **多表关联** | 需求写明 → 按需求配;未写明 → `e10-cli report join suggest` + **提示用户确认**(selection-guide §2.5) |
|
|
43
|
+
| **查询条件** | `e10-cli report query save`(multipart 单对象);失败提示后继续 |
|
|
44
|
+
| **失败删壳** | `e10-cli report cleanup shells` |
|
|
45
|
+
| **交付自检** | `e10-cli report verify all`(可后台) |
|
|
46
|
+
| **交付物克制** | **布局落库成功后立刻给设计器地址并结束**(`report-delivery-contract.md`);**默认不**做 HTML / verify / 预聚合 / 需求分析;用户要分析时才走分析模板 |
|
|
47
|
+
| **默认表头样式** | 用户未指定样式且无效果图 → 自动蓝标题+灰列头(`default-header-style-guide.md`);有指定/效果图则完全按用户 |
|
|
48
|
+
| **文档输入一次解析** | Excel/JSON 需求只解析一次 |
|
|
49
|
+
| **首建跳过 cache** | 单数据集、无跨表 leftFilterField 时,首次可省略 `saveReportWithCacheConfig` |
|
|
50
|
+
| **页面布局默认关闭** | 网格线 page `gridLine=0`;**workbook 禁写 gridline**(存在→500);落库前 `validate gridline`(§4.6.1) |
|
|
51
|
+
| **耗时目标** | 已给 app+表名:找表 **≤2s**;整段落库 **≤5s**(不含用户确认) |
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 二、标准流程(约数秒,非 30~60s)
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
0. e10-cli auth status(本地,勿 sleep)
|
|
59
|
+
0.2 【优先 CLI】e10-cli report find form <appId> <准确表名>
|
|
60
|
+
若用户未给准确表名 → find form <appId> --suggest "需求关键词" → **等用户确认** → 禁止静默 addDataset
|
|
61
|
+
0.3 多表且需求未写关联 → e10-cli report join suggest … → 提示用户确认(可先按 best 配并标注待确认)
|
|
62
|
+
0.5 解析 appId;GET form/obj/getList/{appId} → sourceId(未中再别处,见 lookup-guide)
|
|
63
|
+
1. POST baseInfo(id=0, **name=目标报表名**) → reportId
|
|
64
|
+
2. POST addDataset(sourceId) **须** `sourceType=LOGIC` + `sourceGroup=weaver-ebuilder-form-service`(普通应用;见 `add-dataset-registration-guide.md`)
|
|
65
|
+
2.1 poll dataset/list 直到 sourceId 命中 → datasetId(禁止固定 sleep;**禁止跨报表复用 datasetId**)
|
|
66
|
+
3. GET fieldsAndOriginFields?isFront=true → data.fieldsKey(**同 reportId,禁止另建探测壳取字段**)
|
|
67
|
+
3.1 **门禁**:业务字段应含 `field_*`;若多为裸雪花 → 注册错,delDataset 重建(禁止在 Field 上手工补前缀)
|
|
68
|
+
4. 按模板 remap 字段 + buildWorkbook(多表入口格配父格筛选)
|
|
69
|
+
5. POST saveReportDevInfo(**name=目标报表名**)
|
|
70
|
+
6. [可选] saveReportWithCacheConfig
|
|
71
|
+
7. GET getReportDevInfo 验证;**禁止**再 rename
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**失败清理**:步骤 1 已拿到 `reportId`,但步骤 5 未成功或任务中止 → **必须** `deleteReport` 删除空壳,见 `failure-cleanup-and-nonblocking-guide.md`。
|
|
75
|
+
|
|
76
|
+
### 2.05 提速三件事(验证;细则 `api-report-build-fast-path.md` §六补充)
|
|
77
|
+
|
|
78
|
+
1. **HTTPS 连接复用**:全程一条连接(keep-alive)。每请求 new 一次 ≈271ms/次,复用 ≈115ms/次。
|
|
79
|
+
2. **ETEAMSID 只解析一次**:`e10-cli auth status` ≈0.9s,写本地缓存复用;禁止每脚本/每请求 subprocess。
|
|
80
|
+
3. **可省的接口**:新空壳 `saveReportDevInfo` 的 `designKey` 传空串即可(无需先 `getReportDevInfo`);`fillDatasetConfig` 只在运行态取不到数据时补;`dataset/list` 通常首次即命中,**禁止**预 sleep。
|
|
81
|
+
|
|
82
|
+
> 另:**禁止跨报表复用 datasetId**;仅本 report 已挂载的数据集可复用。取字段必须在本表 `addDataset` 之后。
|
|
83
|
+
|
|
84
|
+
### 2.1 新建报表命名(禁止空壳临时名)
|
|
85
|
+
|
|
86
|
+
> **必加载** `report-baseinfo-defaults-guide.md`(平台默认值权威表)。
|
|
87
|
+
|
|
88
|
+
- **`baseInfo` / `saveReportDevInfo` 全程用目标报表名**;**禁止** `__build_*` / `__probe_*`。
|
|
89
|
+
- **禁止**落库后再 rename(撞名易残留壳名)。
|
|
90
|
+
- **字段先预检再建表**:`fieldsBySource` 精确匹配通过才 `baseInfo`;否则 exit 4(**不建表**)。
|
|
91
|
+
- **同源只挂一次**:本表已有同 `sourceId` 数据集必须复用,禁止二次 `addDataset`(否则左侧重复分组)。
|
|
92
|
+
- **对齐平台默认**:`groupId=0`、`showOrder=1`、`nameLabelId="-1"`;`groupId` 禁止写 `-1`(列表哨兵)。
|
|
93
|
+
- **`name` / `nameLabelId`**:trim;禁控制字符;落库前可 `validate base`。
|
|
94
|
+
- 定源未确认(fuzzy)前 **禁止** `baseInfo`。CLI:`e10-cli report build spec`。
|
|
95
|
+
|
|
96
|
+
### 2.2 保存顺序(新空报表 · 已验证)
|
|
97
|
+
|
|
98
|
+
| 顺序 | 接口 | 新空报表 | 已有 layout 的报表 |
|
|
99
|
+
|------|------|----------|-------------------|
|
|
100
|
+
| **①** | `saveReportDevInfo` | **必须** | 必须(改 layout) |
|
|
101
|
+
| **②** | `saveReportWithCacheConfig` | 可选,且在 ① 成功之后 | 可选(跨表筛选缓存) |
|
|
102
|
+
|
|
103
|
+
**禁止**:新报表在 **从未** 成功 `saveReportDevInfo` 之前单独调用 `saveReportWithCacheConfig` —— 会损坏报表壳,后续 dev 保存持续 500。
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 三、字段映射(禁止字符串全局替换 · 禁止匹配失败)
|
|
108
|
+
|
|
109
|
+
> **必加载** `field-bind-exact-match-guide.md` — 字段名唯一来源、裸雪花 ID 事故、保存前后门禁。
|
|
110
|
+
> **必加载** `add-dataset-registration-guide.md` — **addDataset 必须与设计器一致**,否则 `fieldsKey` 无 `field_`。
|
|
111
|
+
|
|
112
|
+
### 3.0 硬约束(零容忍)
|
|
113
|
+
|
|
114
|
+
| 规则 | 说明 |
|
|
115
|
+
|------|------|
|
|
116
|
+
| **注册先于绑定** | 普通应用 `addDataset`:`sourceType=LOGIC` + `sourceGroup=weaver-ebuilder-form-service`;错用 `form`+`sourceGroup=appId` → fieldsKey 裸雪花 |
|
|
117
|
+
| **唯一来源** | Field 的 `name` **必须**等于 **当前 dataset** 的 `fieldsKey[].name`(不是显示名、不是臆造前缀) |
|
|
118
|
+
| **常见形态** | 设计器兼容注册下业务字段为 `field_{雪花}`;系统字段为 `create_time` / `name` / `creator` 等原样 |
|
|
119
|
+
| **禁止去前缀** | `field_3506…` **不可**写成 `3506…` —— 设计器有格、取数全挂(事故 AAA) |
|
|
120
|
+
| **禁止手工补前缀** | fieldsKey 已是裸雪花时,**先修注册**再绑定;禁止只在 cell 上加 `field_` 凑数 |
|
|
121
|
+
| **保存前门禁** | 每个 Field:`fieldsKey.name` 集合 `.has(name)`;失败则**中止保存** |
|
|
122
|
+
| **保存后门禁** | `e10-cli report verify bind <reportId> [appId]` 必须 PASS 才可交付 |
|
|
123
|
+
|
|
124
|
+
### 3.1 正确做法
|
|
125
|
+
|
|
126
|
+
对每个 `cellType=Field` 的模板单元格 **逐对象** 改写:
|
|
127
|
+
|
|
128
|
+
```javascript
|
|
129
|
+
// fieldName = fieldsKey 中按 text/showName 命中的那一项的 .name
|
|
130
|
+
nf.dataSetId = newDatasetId;
|
|
131
|
+
nf.nameIndex = newSourceId;
|
|
132
|
+
nf.name = fieldName; // 必须 === fieldsKey[].name(含 field_ 前缀)
|
|
133
|
+
nf.fieldKey = `${newDatasetId}.${newSourceId}.${fieldName}`;
|
|
134
|
+
// 同步 patch style 内嵌的 cellType 对象(见 §四)
|
|
135
|
+
nf.allNeedFields = '';
|
|
136
|
+
assert(legalNames.has(nf.name), `name 必须∈ fieldsKey: ${nf.name}`);
|
|
137
|
+
// 裸雪花 / field_ 前缀以 fieldsKey 为准,禁止凭记忆改写
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### 3.2 禁止
|
|
142
|
+
|
|
143
|
+
- `JSON.stringify` 全量后 `split(oldId).join(newId)` 替换 fieldKey(datasetId 先替换会导致 fieldKey 替换失败,残留旧字段 ID)
|
|
144
|
+
- 用裸雪花 ID(无 `field_`)作 `name` / fieldKey 末段 —— **字段获取不上**
|
|
145
|
+
- 用显示名(如「资产类别」)作 `name` 或完整 fieldKey
|
|
146
|
+
- 截断字段名(`field_5`)或臆造 `field_*`
|
|
147
|
+
- 用表单 fieldId 未与 `fieldsKey.name` 交叉核对就直接写入
|
|
148
|
+
|
|
149
|
+
### 3.3 字段 discovery
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
# ① 建表前预检(无需报表;与 fieldsKey 同形)
|
|
153
|
+
GET /api/bs/edc/dataset/fieldsBySource?sourceId=&sourceType=logic&groupId=weaver-ebuilder-form-service
|
|
154
|
+
# ② 落库前权威(本表 addDataset 之后)
|
|
155
|
+
GET /api/bs/edc/dataset/fieldsAndOriginFields
|
|
156
|
+
?datasetId={id}&hasField=true&isFront=true&reportId={reportId}
|
|
157
|
+
→ data.fieldsKey[] // 权威;取 .name 写入;isFront=false 常返回空
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
`addDataset` 不返回 datasetId → 必须 `dataset/list?reportId=` 按 **sourceId** 匹配,**禁止**按数组下标。
|
|
161
|
+
|
|
162
|
+
**字段绑定门禁(2026-09-11 强制)**:用 构建层,仅**精确**匹配
|
|
163
|
+
(`fieldName`/`fieldMap` → 列标题 === `text` → `field` === `text`/`name`);
|
|
164
|
+
任一列无精确命中 → **exit 4**,把 `candidates`/`allFields` 交用户指定,**禁止模糊兜底、禁止回退系统字段**。
|
|
165
|
+
详见 `field-bind-exact-match-guide.md §2.0`。
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## 四、workbook 单元格 style 键名(字段丢失根因)
|
|
170
|
+
|
|
171
|
+
平台 `getFieldsFromWorkbook` 读取的是 Java 字段 **`style.cellType`**(`AnalysisFieldCellType`),**不是** `analysisFieldCellType`。
|
|
172
|
+
|
|
173
|
+
| 场景 | 正确键名 |
|
|
174
|
+
|------|----------|
|
|
175
|
+
| **上传 workbook(saveReportDevInfo)** | `style.cellType` |
|
|
176
|
+
| **getReportDevInfo 回读的 fields[].style 字符串** | 可能含 `analysisFieldCellType`(库内序列化) |
|
|
177
|
+
|
|
178
|
+
**buildCellFromField 模板**:
|
|
179
|
+
|
|
180
|
+
```javascript
|
|
181
|
+
const style = parseJson(f.style, {});
|
|
182
|
+
const ct = style.analysisFieldCellType || style.cellType;
|
|
183
|
+
if (ct && typeof ct === 'object') {
|
|
184
|
+
style.cellType = ct;
|
|
185
|
+
delete style.analysisFieldCellType;
|
|
186
|
+
}
|
|
187
|
+
// Formula 另加 cell.formula = f.cellText(无前导 =)
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**症状**:`fields.length=21` 但 `cellType` 全是 `Const`、设计器无字段绑定 → 即 style 键名错误。
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## 五、保存后验证(一次回读 · 含字段精确匹配)
|
|
195
|
+
|
|
196
|
+
```javascript
|
|
197
|
+
const dev = getReportDevInfo.data;
|
|
198
|
+
const types = countBy(dev.fields, 'cellType');
|
|
199
|
+
// 期望示例:{ Const: 11, Field: 8, Formula: 2 }
|
|
200
|
+
types.Field >= 1 || FAIL;
|
|
201
|
+
dev.fields.some(f => f.fieldKey && f.cellType === 'Field') || FAIL;
|
|
202
|
+
|
|
203
|
+
// 强制:每个 Field.name / fieldKey末段 ∈ fieldsKey.name(见 field-bind-exact-match-guide.md)
|
|
204
|
+
// 或: e10-cli report verify bind <reportId> <appId>
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
| 检查项 | 通过标准 |
|
|
208
|
+
|--------|----------|
|
|
209
|
+
| `fields.length` | ≥ 预期单元格数(通常 >15) |
|
|
210
|
+
| `cellType` 分布 | 含 `Field` 与(如有公式)`Formula` |
|
|
211
|
+
| fieldKey 三段 | `{datasetId}.{sourceId}.{fieldsKey.name}` |
|
|
212
|
+
| **精确匹配** | **每个** Field 的 `name` ∈ 当前数据集 `fieldsKey.name`;禁止裸雪花 ID |
|
|
213
|
+
| `e10-cli report verify bind` | Exit 0;失败则**禁止交付** |
|
|
214
|
+
| 损坏壳 | save 500 且 fields 全 Const/0 → `deleteReport` 重建,勿 resume |
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## 六、故障对照表(禁止盲目重试)
|
|
219
|
+
|
|
220
|
+
| 现象 | 根因 | 处理 |
|
|
221
|
+
|------|------|------|
|
|
222
|
+
| saveReportDevInfo **500** 新空壳 | 先调了 cache / 壳已损坏 / dev 保存用了目标名 | 删 reportId → 临时名重建 → dev 保存 **name=临时名** → 成功后再 baseInfo 改名 |
|
|
223
|
+
| fields 全 **Const** | workbook 用了 `analysisFieldCellType` | 改为 `style.cellType` 重保存 |
|
|
224
|
+
| fieldKey 末段仍是旧雪花 ID | 字符串 replace 顺序错误 | 逐字段对象 remap(§三) |
|
|
225
|
+
| **有 Field 格但字段获取不上 / 取数空** | **`name` 为裸雪花 ID(缺 `field_`)或不在 fieldsKey** | 按 `field-bind-exact-match-guide.md` 重绑;`e10-cli report verify bind` |
|
|
226
|
+
| 设计器 0 字段 / workbook cells 0 | 损坏壳或空 workbook 落库 | deleteReport + 重建;见 `safe-partial-save-guide.md` |
|
|
227
|
+
| 同名第二张报表 | 重复 baseInfo | 列表查重,删多余壳,只保留一张 |
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## 七、禁止走的弯路(已验证浪费时间)
|
|
232
|
+
|
|
233
|
+
1. **copySheet** 探路 + 再手工建表(用户未要求复制时)
|
|
234
|
+
2. **preCheck** 全表二分 / 去掉公式逐格试(应先查 §四 style 键名)
|
|
235
|
+
3. **跨报表**把 A 报表 fields 保存到 B 报表壳(壳损坏时仍 500,不能证明 layout 有问题)
|
|
236
|
+
4. 在同一损坏 **reportId** 上连续 save 10+ 次
|
|
237
|
+
5. 收尾打开源码、changed files;或交链后仍跑 verify/HTML/配置检测
|
|
238
|
+
6. 用户只要搭表时跑需求分析模板或多轮「深度解析」
|
|
239
|
+
7. 「检测生成报表配置」整包自检后再搭表
|
|
240
|
+
8. 查找已删除的测试用例/原型脚本(`generate_test_case` / `prototype-design`)
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## 八、与现有文档关系
|
|
246
|
+
|
|
247
|
+
| 文档 | 关系 |
|
|
248
|
+
|------|------|
|
|
249
|
+
| `safe-partial-save-guide.md` | 已有报表改快照/权限;**新报表首次落 layout 以本节 §二 顺序为准** |
|
|
250
|
+
| `cross-dataset-filter-guide.md` | fieldKey / leftFilterField 细节 |
|
|
251
|
+
| `formula-cell-api-guide.md` | 公式 cellText、countType |
|
|
252
|
+
| `report-delivery-contract.md` | 收尾交付格式 |
|
|
253
|
+
| `failure-cleanup-and-nonblocking-guide.md` | 失败删空壳;附属失败不卡死 |
|
|
254
|
+
| `app-datasource-lookup-guide.md` | 应用内 sourceId 查找 + 探测预算/打断(§〇 强制) |
|
|
255
|
+
| `datasource-selection-and-parent-filter-guide.md` | 少挂源;连续区域仅入口父格筛选 |
|
|
256
|
+
| `field-bind-exact-match-guide.md` | Field.name 必须 ∈ fieldsKey;裸 ID 事故与门禁 |
|
|
257
|
+
| `add-dataset-registration-guide.md` | addDataset 与设计器对齐;fieldsKey 无 field_ 的根因 |
|
|
258
|
+
| `e10-cli report verify bind` | 保存后字段精确匹配校验(交付前必跑) |
|
|
259
|
+
| `` | mergeWorkbookSafe;新建布局仍用本节 buildCellFromField |
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## 九、API 请求头与 multipart 最小集(禁止浏览器自动化)
|
|
264
|
+
|
|
265
|
+
```javascript
|
|
266
|
+
// headers 每次请求
|
|
267
|
+
{ eteamsid, ebBusinessId, ebbusinessid, Referer: .../designer/{reportId},
|
|
268
|
+
'User-Agent': 'Mozilla/5.0 AgentType=WorkBuddy,IsAgent=true' }
|
|
269
|
+
|
|
270
|
+
// saveReportDevInfo multipart
|
|
271
|
+
{ groupId, appId, reportId, name, nameLabelId: '-1', designKey, workbook: gzipBase64 }
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
`designKey` 来自当次 `getReportDevInfo`;保存前只拉 **一次**。
|