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.
- package/dist/commands/form-data.d.ts.map +1 -1
- package/dist/commands/form-data.js +4 -1
- package/dist/commands/form-data.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 +1066 -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/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-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/services/action-detail.d.ts.map +1 -1
- package/dist/services/action-detail.js +1 -17
- package/dist/services/action-detail.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.js +6 -2
- package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
- package/dist/services/actionflow/components/custom_trigger.js +1 -1
- package/dist/services/actionflow/components/custom_trigger.js.map +1 -1
- package/dist/services/actionflow/components/dml_execute.js +1 -1
- package/dist/services/actionflow/components/dml_execute.js.map +1 -1
- package/dist/services/actionflow/components/document_actions.js +1 -2
- package/dist/services/actionflow/components/document_actions.js.map +1 -1
- package/dist/services/actionflow/components/eb_get_data_by_id.d.ts.map +1 -1
- package/dist/services/actionflow/components/eb_get_data_by_id.js +2 -2
- package/dist/services/actionflow/components/eb_get_data_by_id.js.map +1 -1
- package/dist/services/actionflow/components/form_data_builder.d.ts.map +1 -1
- package/dist/services/actionflow/components/form_data_builder.js +18 -10
- package/dist/services/actionflow/components/form_data_builder.js.map +1 -1
- package/dist/services/actionflow/components/hrm_actions.js +0 -1
- package/dist/services/actionflow/components/hrm_actions.js.map +1 -1
- package/dist/services/actionflow/components/webhook_trigger.js +3 -3
- package/dist/services/actionflow/components/webhook_trigger.js.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.js +3 -2
- package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
- package/dist/services/actionflow/filter_rules.d.ts.map +1 -1
- package/dist/services/actionflow/filter_rules.js +15 -13
- package/dist/services/actionflow/filter_rules.js.map +1 -1
- package/dist/services/actionflow/form_source.d.ts.map +1 -1
- package/dist/services/actionflow/form_source.js +59 -11
- package/dist/services/actionflow/form_source.js.map +1 -1
- package/dist/services/actionflow/formula_service.d.ts.map +1 -1
- package/dist/services/actionflow/formula_service.js +4 -1
- package/dist/services/actionflow/formula_service.js.map +1 -1
- package/dist/services/actionflow/option_field_types.d.ts +5 -0
- package/dist/services/actionflow/option_field_types.d.ts.map +1 -0
- package/dist/services/actionflow/option_field_types.js +20 -0
- package/dist/services/actionflow/option_field_types.js.map +1 -0
- package/dist/services/actionflow/param_group_dto.d.ts.map +1 -1
- package/dist/services/actionflow/param_group_dto.js +7 -3
- package/dist/services/actionflow/param_group_dto.js.map +1 -1
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +42 -18
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/actionflow/webhook_source.d.ts.map +1 -1
- package/dist/services/actionflow/webhook_source.js +9 -4
- package/dist/services/actionflow/webhook_source.js.map +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_compiler.js +11 -8
- package/dist/services/actionflow/workflow_compiler.js.map +1 -1
- 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/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/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/ecodecmd/src/build.js +36 -12
- package/package.json +1 -1
- package/skill-docs/SKILL.md +4 -4
- package/skill-docs/_catalog.md +10 -1
- package/skill-docs/actionflows/SKILL.md +1 -0
- package/skill-docs/actionflows/references/components/ebuilder/EnquiryForm.md +2 -2
- package/skill-docs/actionflows/references/components/trigger/CustomTrigger.md +2 -0
- package/skill-docs/actionflows/references/components/trigger/WebHookTrigger.md +19 -1
- package/skill-docs/references/coding/guide-form-crud.md +2 -0
- package/skill-docs/references/coding/guide-page-code.md +108 -0
- package/skill-docs/references/components/ref-component-common.md +98 -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 +59 -0
- package/skill-docs/references/report/event-hreflink-guide.md +53 -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 +145 -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-workflow.md +6 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# 声明式搭表 spec(一次性落库 · 推荐默认路径)
|
|
2
2
|
|
|
3
|
-
> **CLI**:`e10-cli report build --spec <spec.json> [--dry-run] [--form-confirmed] [--source-id <id>] [--field-confirmed "标题1,标题2"]`
|
|
3
|
+
> **CLI**:`e10-cli report build spec --spec <spec.json> [--dry-run] [--form-confirmed] [--source-id <id>] [--field-confirmed "标题1,标题2"]`
|
|
4
4
|
> **脚本**:`e10-cli report build` · 公共库 `e10-cli report build`
|
|
5
5
|
> **强制流程**:应用内定源 → **建表前字段预检**(`fieldsBySource`,**不建表**)→ **目标名** `baseInfo` → 本表 `addDataset`(同源只挂一次)→ `fieldsKey`(**再校验一次**)→ `saveReportDevInfo` → 回读。
|
|
6
6
|
> **禁止**:`__build_*` / `__probe_*` 空壳、落库后再 rename、跨报表复用 datasetId、模糊表名未确认就搭表、**字段精确匹配失败时静默兜底(含回退系统字段)**。
|
|
7
7
|
|
|
8
|
-
> ### ⚠ 两条「停下来问用户」规则(强制 · 2026-09-11 ·
|
|
8
|
+
> ### ⚠ 两条「停下来问用户」规则(强制 · 2026-09-11 · )
|
|
9
9
|
>
|
|
10
10
|
> | 规则 | 触发 | 行为 |
|
|
11
11
|
> |------|------|------|
|
|
@@ -36,36 +36,12 @@
|
|
|
36
36
|
| `sourceType` | | 默认 `LOGIC`;共享表应用用 `form` |
|
|
37
37
|
| `sourceGroup` | | 默认 `weaver-ebuilder-form-service`;共享表用 appId |
|
|
38
38
|
| `sourceName` | | 数据集回显名;**缺后缀时自动补** `(业务模块)`/`(表单)`(裸表单名 → 面板缺后缀) |
|
|
39
|
-
| `sources[]` | | **多数据源**。写了它就以它为准(`form`/`sourceId`/`sourceType` 等下沉到每一项)。见 `guide-report-multisource.md` |
|
|
40
|
-
|
|
41
|
-
> **两个最常写错的键名**:列定义是 **`columns[]`**(不是 `fields`);**`form` 是表单名字符串**(不是对象)——
|
|
42
|
-
> 要用表单 id 就写 `sourceId`。写错时命令会回「spec 需要包含 appId / name(报表名) / columns[]」。
|
|
43
|
-
|
|
44
|
-
### 1.0 多数据源 `sources[]` / `columns[].source`
|
|
45
|
-
|
|
46
|
-
```json
|
|
47
|
-
"sources": [
|
|
48
|
-
{ "key": "customer", "form": "客户信息表" },
|
|
49
|
-
{ "key": "order", "form": "销售订单表",
|
|
50
|
-
"link": { "parent": "customer", "parentField": "客户名称",
|
|
51
|
-
"childField": "客户名称", "type": "Equals" } }
|
|
52
|
-
],
|
|
53
|
-
"columns": [ { "source": "customer", "title": "客户名称", "field": "客户名称" },
|
|
54
|
-
{ "source": "order", "title": "订单编号", "field": "订单编号" } ]
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
- `sources[0]` = **父源**(不写 `link`);`columns[].source` 缺省 = 父源 —— **不写 `sources` 时行为与单源完全一致**。
|
|
58
|
-
- `link.parent` 必须是**左边紧邻**的源;`parentField`/`childField` 写显示名或 `field_xxx`,各自在本方表里解析(歧义即报错)。
|
|
59
|
-
- `link.type` 用 **TitleCase** 白名单(`Equals`/`NotContain`/`Null`…);`eq`/`contains` 这类简写平台不认。
|
|
60
|
-
- 子源只能占**一段**连续区域;同区域**只有入口格**配父格筛选,其余格普通链式。
|
|
61
|
-
- 多源时 `fieldMap`/`fieldConfirmed` 用 **`"源key.列标题"`** 限定同名不同源的列。
|
|
62
|
-
- 跨源报表自动双保存并关预聚合;异常分支与限制见 `guide-report-multisource.md`。
|
|
63
39
|
|
|
64
40
|
\* `form` 与 `sourceId` **均可省** → 走**规则 B**:exit **3**,列出应用内候选请用户指定表(**不会**按关键词猜、**不会**建表)。
|
|
65
41
|
|
|
66
42
|
### 1.1 定源规则 · 规则 B(表没指明 / 非精确匹配 → 让用户指定)
|
|
67
43
|
|
|
68
|
-
`resolveFormWithPrompt()` / `e10-cli report find` 统一语义:
|
|
44
|
+
`resolveFormWithPrompt()` / `e10-cli report find form` 统一语义:
|
|
69
45
|
|
|
70
46
|
| 触发 | `reason` | 行为 |
|
|
71
47
|
|------|----------|------|
|
|
@@ -77,7 +53,7 @@
|
|
|
77
53
|
确认后复跑(二选一):
|
|
78
54
|
|
|
79
55
|
```bash
|
|
80
|
-
e10-cli report build --spec a.json --form-confirmed --source-id <id>
|
|
56
|
+
e10-cli report build spec --spec a.json --form-confirmed --source-id <id>
|
|
81
57
|
```
|
|
82
58
|
```json
|
|
83
59
|
{ "formConfirmed": true, "sourceId": "<id>", "form": "<准确表名>" }
|
|
@@ -86,8 +62,8 @@ e10-cli report build --spec a.json --form-confirmed --source-id <id>
|
|
|
86
62
|
浏览候选(**不建表**):
|
|
87
63
|
|
|
88
64
|
```bash
|
|
89
|
-
e10-cli report find <appId> --list
|
|
90
|
-
e10-cli report find <appId> --suggest "关键词1,关键词2"
|
|
65
|
+
e10-cli report find form <appId> --list
|
|
66
|
+
e10-cli report find form <appId> --suggest "关键词1,关键词2"
|
|
91
67
|
```
|
|
92
68
|
|
|
93
69
|
> **禁止**:按关键词自行挑一张「最像的」表;先建壳/试探表再判断对不对。
|
|
@@ -107,8 +83,7 @@ e10-cli report find <appId> --suggest "关键词1,关键词2"
|
|
|
107
83
|
|
|
108
84
|
| 字段 | 说明 |
|
|
109
85
|
|------|------|
|
|
110
|
-
| `title` | 表头文案(**也是字段匹配依据**,见 §二.1
|
|
111
|
-
| `source` | 该列属于哪个源(`sources[].key`);缺省 = 父源 |
|
|
86
|
+
| `title` | 表头文案(**也是字段匹配依据**,见 §二.1)。⚠️ **A0.10**:设计器回显串 = `{tableName}.{格内文字}({字段名})`,而「格内文字」= **Field 格的 `text`** → 写自定义标题会让设计器**不回显字段名**(用户误判「未匹配到正确字段」)。**另起 Const 标题行时,`title` 只放字段真实显示名**;确实要自定义列名才用 `confirmDisplayMismatch` |
|
|
112
87
|
| `field` | 对应 fieldsKey 的 text/name(精确匹配) |
|
|
113
88
|
| `fieldName` | **显式指定** fieldsKey.name(优先于 `field`/`title`) |
|
|
114
89
|
| `confirmDisplayMismatch` | `true` = 该列允许「文案 ≠ 字段真实显示名」(用户认可自定义列名) |
|
|
@@ -116,7 +91,10 @@ e10-cli report find <appId> --suggest "关键词1,关键词2"
|
|
|
116
91
|
| `format` | 见下表;`huobi` 等 |
|
|
117
92
|
| `formula` | 公式表达式(无 `=` 前缀;公式列不参与字段匹配) |
|
|
118
93
|
| `groupType` | 日期分组等 |
|
|
94
|
+
| `display` | 显示方式:`"tree"`=折叠树形(`displayType=Tree`+左父格无+isActiveParent · 场景 I;缺省 Group),见 `advanced-crosstab-tree-guide.md` |
|
|
119
95
|
| `rule` | 条件格式,见 §五 |
|
|
96
|
+
| `sort` | `asc`/`desc` → Field 格 `orderType`(数据钻取场景 D;预览点击排序以验证为准) |
|
|
97
|
+
| `link` | 钻取链接 `{type:"report\|list\|card\|custom", reportId\|formId\|url, params:{参数名:"SELF\|列标题"}, openType}` → `pcHreflink`;引用右列(超出左父格链)**构建即报错**(A0.11);详见 `drilldown-report-guide.md` |
|
|
120
98
|
|
|
121
99
|
### 2.1 字段绑定门禁 · 规则 A(**字段找不到 → 让用户指定 · 禁止静默兜底 · 2026-09-11 强制**)
|
|
122
100
|
|
|
@@ -134,25 +112,25 @@ e10-cli report find <appId> --suggest "关键词1,关键词2"
|
|
|
134
112
|
|
|
135
113
|
```json
|
|
136
114
|
{
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
115
|
+
"action": "confirm_field", "rule": "A", "reportCreated": false,
|
|
116
|
+
"unmatched": [
|
|
117
|
+
{ "column": "党组织", "reason": "no_exact_match",
|
|
118
|
+
"prompt": "需求字段「党组织」在当前数据集表单中不存在:请用户从 allFields/candidates 中指定字段。",
|
|
119
|
+
"candidates": [{ "name": "field_1475883017323040117", "text": "所属党委", "system": false }] }
|
|
120
|
+
],
|
|
121
|
+
"allFields": [ { "name": "field_3505883017323279926", "text": "发展人", "system": false } ],
|
|
122
|
+
"next": { "specFields": { "fieldMap": { "<列标题>": "<字段显示名 | field_雪花 | 系统字段名>" } } }
|
|
145
123
|
}
|
|
146
124
|
```
|
|
147
125
|
|
|
148
126
|
用户指定后复跑:
|
|
149
127
|
|
|
150
128
|
```bash
|
|
151
|
-
e10-cli report build --spec a.json --field-confirmed "党组织,姓名"
|
|
129
|
+
e10-cli report build spec --spec a.json --field-confirmed "党组织,姓名"
|
|
152
130
|
```
|
|
153
131
|
```json
|
|
154
132
|
{ "fieldMap": { "党组织": "field_1475883083739840137", "姓名": "发展人" },
|
|
155
|
-
|
|
133
|
+
"fieldConfirmed": ["党组织", "姓名"] }
|
|
156
134
|
```
|
|
157
135
|
|
|
158
136
|
> 事故:列「姓名」在表单无对应字段时被静默绑到系统字段 `name`(真实显示名「标题」)→ 列语义被改写且属性面板回显不符。
|
|
@@ -201,16 +179,11 @@ e10-cli report build --spec a.json --field-confirmed "党组织,姓名"
|
|
|
201
179
|
```
|
|
202
180
|
|
|
203
181
|
- `title`:第 0 行合并标题
|
|
204
|
-
- `freezeRows
|
|
205
|
-
|
|
206
|
-
|---|---|---|
|
|
207
|
-
| `0` / 不写 | 无 | 不冻结 |
|
|
208
|
-
| `1` | 表头首格 `(1,0)` | 只冻**标题行** |
|
|
209
|
-
| `2` | 数据首格 `(2,0)` | 冻**标题 + 表头**(与 `report fix freeze` 默认一致) |
|
|
210
|
-
|
|
211
|
-
锚点必须落在**真实存在的单元格**上,所以最多只能冻到首个数据行;写超了会直接报错,
|
|
212
|
-
不会静默按 1 处理。要冻更多行用 `report fix freeze --anchor <x,y>` 在已有报表上做。
|
|
182
|
+
- `freezeRows: 1`:冻上方表头(锚点自动落**首个数据行**,冻标题+表头全部 · 场景 F 修正语义)
|
|
183
|
+
- `freezeCols: N`:**冻左侧 N 列**(与 freezeRows 可组合;仅写 freezeCols 不写 freezeRows = 只冻列不冻行);锚点语义与验收见 `shard-freeze-report-guide.md`
|
|
213
184
|
- `showLocation`:`left`=1;**禁止 0**
|
|
185
|
+
- `pageRowCount: N`:**每页固定 N 行**(分页分组报表 · 场景 E;`pagination:true` 经 saveReportWithCacheConfig 落库,见 `paged-group-report-guide.md`)
|
|
186
|
+
- `paginate: false`:**不分页**(宽表/分片冻结表 · 场景 F;同通道落 `pagination:false`,与 pageRowCount 二选一)
|
|
214
187
|
|
|
215
188
|
---
|
|
216
189
|
|
|
@@ -225,23 +198,23 @@ e10-cli report build --spec a.json --field-confirmed "党组织,姓名"
|
|
|
225
198
|
|
|
226
199
|
```json
|
|
227
200
|
{
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
201
|
+
"appId": "770979194185342976",
|
|
202
|
+
"name": "资产信息统计",
|
|
203
|
+
"form": "轻资产信息",
|
|
204
|
+
"layout": { "title": "轻资产信息统计表", "freezeRows": 1 },
|
|
205
|
+
"columns": [
|
|
206
|
+
{ "title": "资产名称", "field": "资产名称", "width": 160 },
|
|
207
|
+
{ "title": "库存数量", "field": "库存数量", "width": 110 }
|
|
208
|
+
]
|
|
236
209
|
}
|
|
237
210
|
```
|
|
238
211
|
|
|
239
212
|
模糊表名确认后再搭:
|
|
240
213
|
|
|
241
214
|
```bash
|
|
242
|
-
e10-cli report build --spec a.json
|
|
215
|
+
e10-cli report build spec --spec a.json
|
|
243
216
|
# exit 3 → 用户确认 sourceId
|
|
244
|
-
e10-cli report build --spec a.json --form-confirmed --source-id 770981333078605824
|
|
217
|
+
e10-cli report build spec --spec a.json --form-confirmed --source-id 770981333078605824
|
|
245
218
|
```
|
|
246
219
|
|
|
247
220
|
---
|
|
@@ -264,16 +237,16 @@ e10-cli report build --spec a.json --form-confirmed --source-id 7709813330786058
|
|
|
264
237
|
|
|
265
238
|
```json
|
|
266
239
|
{
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
240
|
+
"action": "confirm_field",
|
|
241
|
+
"rule": "A",
|
|
242
|
+
"reportCreated": false,
|
|
243
|
+
"unmatched": [
|
|
244
|
+
{ "column": "姓名", "reason": "no_exact_match",
|
|
245
|
+
"message": "列「姓名」在该数据源 fieldsKey 中没有精确匹配的显示名…",
|
|
246
|
+
"prompt": "需求字段「姓名」在当前数据集表单中不存在:请用户从 allFields/candidates 中指定字段。",
|
|
247
|
+
"candidates": [{ "name": "field_1475883001898540109", "text": "培养人" }] }
|
|
248
|
+
],
|
|
249
|
+
"allFields": [ { "name": "field_3505883017323279926", "text": "发展人", "system": false } ]
|
|
277
250
|
}
|
|
278
251
|
```
|
|
279
252
|
|
|
@@ -292,3 +265,30 @@ e10-cli report build --spec a.json --form-confirmed --source-id 7709813330786058
|
|
|
292
265
|
| `add-dataset-registration-guide.md` | LOGIC 注册 |
|
|
293
266
|
| `failure-cleanup-and-nonblocking-guide.md` | 仅失败删未完成表,禁止故意建空壳 |
|
|
294
267
|
| `report-delivery-contract.md` | 交链即停 |
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## 多 Sheet 蓝图(rebuild_from_blueprint · 2026-10-29 验证 e-cology)
|
|
272
|
+
|
|
273
|
+
```json
|
|
274
|
+
{
|
|
275
|
+
"reportId": "...", "appId": "...", "datasets": [...],
|
|
276
|
+
"sheets": [
|
|
277
|
+
{ "name": "Sheet1", "cells": [ ... ] },
|
|
278
|
+
{ "name": "Sheet2", "cells": [ ... ] } // 格上可写 sheetIndex(自动按 sheets 序号注入)
|
|
279
|
+
]
|
|
280
|
+
}
|
|
281
|
+
```
|
|
282
|
+
兼容旧蓝图 `cells`(单 sheet)。克隆纪律自检按 sheet 维度执行(跨 sheet 坐标允许重复)。
|
|
283
|
+
|
|
284
|
+
### ★ 注意点 BUILD-55:横向合并必须用 `yCount`,`xCount` 是纵向跨度
|
|
285
|
+
- `xCount` = **纵向**(行向)合并、`yCount` = **横向**(列向)合并 —— 与直觉相反(sheet1 标题条即 `yCount:8` 横跨 8 列)。
|
|
286
|
+
- 血案:多 sheet 摘要页标题写 `xCount:9` → 生成「纵向 9 行」span,**服务端静默丢弃 span 覆盖区内的所有格**(回读 31/35,恰好丢 4 个行首格),且报错信息(`重建格数 N!=M`)指向别处,极难定位。
|
|
287
|
+
- 定位手法:回读 fields 按 sheetIndex 分组 diff 蓝图 → 找缺失格 → 检查缺失格是否落在某个 span 覆盖区内。
|
|
288
|
+
- 修复后回读 `107/107` 全对齐。
|
|
289
|
+
|
|
290
|
+
### ★ 多 sheet 存储形态(回读观察)
|
|
291
|
+
- 服务端把每个 sheet 的 **y=0 列(A 列)保留为锚位区**:自然多 sheet 报表内容全部在 y≥1,行首根格 `left=(x,0)` 指向不回读的隐式锚。
|
|
292
|
+
- API 保存时 y=0 内容格**可能被吸收/丢弃**(本例 v4 验证)→ **多 sheet 内容一律从 y=1 起写**。
|
|
293
|
+
- `sheetProps` 回读顺序与 workbook.sheets 键序无关(验证按名称倒序),tab 顺序以设计器为准;sheet 命名建议直接在设计器里改(同时修正顺序)。
|
|
294
|
+
- 回读校验器已支持多 sheet:按 sheetIndex 分组重建后合并(防跨 sheet 坐标重叠误报 `重建格数 N!=M`)。
|
|
@@ -1,97 +1,155 @@
|
|
|
1
|
-
# 定点修改 · 禁止整表重扫(强制)
|
|
2
|
-
|
|
3
|
-
> **适用**:用户指出「某处不对 / 修某一格 / 改某条查询 / M4 父格」等**已定位**问题;以及「只改列宽 / 冻结 / 居左 / 分页 / 快照 / 打印」等**已列明范围**的调整;**改已有报表设计器内容**时一律适用。
|
|
4
|
-
> **目标**:少读配置、少调 API、少改无关格,避免整表重扫浪费时间与额度。
|
|
5
|
-
> **总闸(更高优先级)**:`user-request-scope-only-guide.md` — **仅改用户点名项**;未点名禁止改删、禁止额外命令。
|
|
6
|
-
> **硬约束**:用户说「只对提出的要求做调整,其他不要动」时,**样式/行高/字体/颜色/边框/未点名格一律禁止改写**——即便为写 workbook 必须整表回传,语义上也只能 patch 点名项。
|
|
7
|
-
> **禁止**:因编辑需求而重新走完整「需求分析 → 识别全部搭建配置 → 整表重建」。
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
##
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
|
20
|
-
|
|
21
|
-
|
|
|
22
|
-
|
|
|
23
|
-
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
|
|
1
|
+
# 定点修改 · 禁止整表重扫(强制)
|
|
2
|
+
|
|
3
|
+
> **适用**:用户指出「某处不对 / 修某一格 / 改某条查询 / M4 父格」等**已定位**问题;以及「只改列宽 / 冻结 / 居左 / 分页 / 快照 / 打印」等**已列明范围**的调整;**改已有报表设计器内容**时一律适用。
|
|
4
|
+
> **目标**:少读配置、少调 API、少改无关格,避免整表重扫浪费时间与额度。
|
|
5
|
+
> **总闸(更高优先级)**:`user-request-scope-only-guide.md` — **仅改用户点名项**;未点名禁止改删、禁止额外命令。
|
|
6
|
+
> **硬约束**:用户说「只对提出的要求做调整,其他不要动」时,**样式/行高/字体/颜色/边框/未点名格一律禁止改写**——即便为写 workbook 必须整表回传,语义上也只能 patch 点名项。
|
|
7
|
+
> **禁止**:因编辑需求而重新走完整「需求分析 → 识别全部搭建配置 → 整表重建」。
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 〇、术语与硬禁止:**整表重建**(强制 · 最高优先级)
|
|
12
|
+
|
|
13
|
+
> **一句话**:改**已有报表**,只允许「**定点补丁**」;**任何形式的「整表重建」一律杜绝**。
|
|
14
|
+
|
|
15
|
+
**平台事实(为什么必须这么定)**:
|
|
16
|
+
`saveReportDevInfo` 是**整份 workbook 覆盖式替换**(gzip+base64),且 `getReportDevInfo.workbookProps.sheets` 恒为 `{}`
|
|
17
|
+
(服务端**不回传 dataTable**)。所以「改动」在**传输层**必然是整份回传 —— 但**语义层**只能是定点 patch。
|
|
18
|
+
|
|
19
|
+
| 概念 | 定义 | 判定 |
|
|
20
|
+
|------|------|------|
|
|
21
|
+
| ❌ **整表重建** | 用**脚本里手写的 schema / 列定义 / 单元格构造**重新生成 workbook 落库(如自写 `dash.js`、`create_xxx.js`) | **禁止**。与线上状态脱钩,必丢 `tag` / `selections` / `colHeaderData` / `rowHeaderData` / `tag.formatterType` / 服务端派生键;历史上已致**公式格消失**、**文本·数值格式被抹成 common**、**显示位置被改成居中** |
|
|
22
|
+
| ✅ **定点补丁** | `getReportDevInfo.fields` → **原样派生** workbook(全键保真)→ 只改**点名键** → dry-run 保真自检 → `--apply` → 落库后**回读 diff** | **唯一允许** |
|
|
23
|
+
| ✅ **声明式搭建** | 仅用于**全新报表**(此时没有「线上原状」需要保护),走 `build_from_spec` / spec 驱动 | 允许 —— 但**不适用于「改已有报表」** |
|
|
24
|
+
|
|
25
|
+
**唯一允许的落库入口**(全部默认 dry-run):
|
|
26
|
+
```
|
|
27
|
+
e10-cli report fix table-name --report-id <id> [--set-json "x,y:key:JSON值"]... [--set-parent "x,y=lx,ly"]... [--apply]
|
|
28
|
+
e10-cli report fix echo | freeze | query-style | query-default
|
|
29
|
+
e10-cli report query save --item <item.json>
|
|
30
|
+
```
|
|
31
|
+
- 通用 `--set-json "x,y:key:JSON值"` 可改**任意单元格键**,形如:
|
|
32
|
+
· 藏列 `--set-json "1,12:width:0"`(隐藏列 = **列宽 0**)
|
|
33
|
+
· 汇总 `--set-json "2,8:displayType:Count"`
|
|
34
|
+
· 转换 `--set-json "2,10:transType:select"`
|
|
35
|
+
· 格式 `--set-json "2,1:formatterType:[\"text\"]"`
|
|
36
|
+
· **格内文字改回字段真名** `--set-json "2,8:text:\"现供应商等级\""`(见 §三.1 · 回显正确性)
|
|
37
|
+
- 它的实现就是「读 live fields → 原样派生 workbook → 改点名键 → 自检 → 落库 → 回读」,**不会**重新定义其它格。
|
|
38
|
+
- `--prefer-canonical`(**可选开关,默认关闭**):`tableName` 以**数据集规范显示名**为准,压过「参照单元格已有值」。
|
|
39
|
+
用途是修「既有值本身是错的」——例如建表时把已带后缀的 `datasetName` 又拼了一次,存成 `xxx(业务模块)(业务模块)`;
|
|
40
|
+
该错值会被默认优先级「② 参照单元格最权威」永久沿用,不显式开关就永远修不掉。
|
|
41
|
+
权威对照 = `verify contract` 打印的 `dataset = …` 行。
|
|
42
|
+
⚠️ **反向风险**:规范名有时只回传**裸 id**(验证报表 `1313903497535856640`),此时本开关会回落参照值/数据集名,行为与默认一致。
|
|
43
|
+
|
|
44
|
+
**硬禁止清单**:
|
|
45
|
+
- 禁止**为改一格/一列而重跑整表 spec 生成**、**重新定义全部单元格**、**从参考报表整表 clone 覆盖**。
|
|
46
|
+
- 禁止**未跑 dry-run**(未看到「保真自检 不一致键 0 处」)就 `--apply`。
|
|
47
|
+
- 禁止只回读「目标格」而不做**逐格 `Object.keys` 差集**(`CMP_KEYS` 是白名单,自检「0 差异」不可信)。
|
|
48
|
+
|
|
49
|
+
**唯一例外**:用户**明确要求整表重做/新建**,且已接受上述丢失风险。
|
|
50
|
+
|
|
51
|
+
> 术语防混淆:`e10-cli report fix table-name` 等脚本日志里出现的「**重建 workbook**」,指的是
|
|
52
|
+
> **从 live `fields` 原样派生**(合法,即定点补丁);**不要**与本节禁止的「整表重建」
|
|
53
|
+
> (从**脚本手写的 schema** 生成新 workbook)混为一谈。
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 一、硬原则
|
|
58
|
+
|
|
59
|
+
| 原则 | 说明 |
|
|
60
|
+
|------|------|
|
|
61
|
+
| **仅用户点名(总闸)** | 见 `user-request-scope-only-guide.md`;CLI |
|
|
62
|
+
| **听指定位置** | 用户点名单元格(如 M4)、查询条件名、字段名、dataset → **只处理该范围** |
|
|
63
|
+
| **禁止整表重扫** | 不得因修一格而:全量 dump 所有 fields、重拉全部数据集元数据、重跑整表 verify、从参考表整表 clone 覆盖 |
|
|
64
|
+
| **禁止顺手重构** | 未点名时禁止批量改其它 Field 父格、禁止重写全部查询条件、禁止「顺便」对齐整表样式 |
|
|
65
|
+
| **禁止顺手改样式(强制)** | 用户未点名「改样式/行高/主题/字体/颜色」时:**禁止**重建 cell `style`、禁止改 `rows[].size`(行高)、禁止用默认模板覆盖已有外观。列宽/冻结/居左 ≠ 许可重做报表样式 |
|
|
66
|
+
| **禁止拆合并(强制)** | **没有任何规则要求拆分合并单元格**。从 fields 重建 workbook 时必须带上原 `xCount`/`yCount` → `cell.rowCount`/`colCount` + `sheet.spans`;漏写 = 等价于取消合并。用户未要求「取消合并」时禁止丢 spans |
|
|
67
|
+
| **禁止擅自删除** | 未点名删除时禁止 `deleteReport` / `lifecycle delete` / `cleanup shells` |
|
|
68
|
+
| **最小读** | 只需 `getReportDevInfo` 时优先按坐标/条件 id **过滤后使用**;不要为定位一格打印全表 |
|
|
69
|
+
| **最小写** | 查询 → 只 `saveQueryItem` 改目标条;父格/超链接 → 在**完整 workbook 保护**前提下只 patch 目标 cellType(见下) |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 二、问题类型 → 动作范围
|
|
74
|
+
|
|
75
|
+
| 用户说法(例) | 允许动作 | 禁止 |
|
|
76
|
+
|----------------|----------|------|
|
|
77
|
+
| 「M4 左/上父格不对」 | 只读 `(3,12)`(及占位依赖格如 `(3,11)`);只改该 Const 的父格/`pcHreflink` | 重扫全部 Const/Field 父格;整表从兄弟报表覆盖 |
|
|
78
|
+
| 「供应商等级没选项」 | 只读/改该条 `getQueryItem`;按 §3.2 拉该字段 options | 重配全部查询条件;重扫布局 |
|
|
79
|
+
| 「查询显示方式不对」 | 只改目标条 `showWhere` | 新建一套条件 |
|
|
80
|
+
| 「某 Field 绑错」 | 只改该格 `name`/`fieldKey` + workbook 对应 cell | 全表 remap |
|
|
81
|
+
| 「整表父格都要默认」 | **仅当用户明确整表要求** 才批量;否则只更新 Skill 规则 | 把「规则说明」当成改线上表的许可 |
|
|
82
|
+
| 「列宽 N / 冻结表头 / 居左」 | 只改 `width`+`columns`、冻结锚点、`showLocation`(见 `layout-showlocation-freeze-guide.md`) | 重建整表 style/行高;猜 `showLocation=0`;只写 `frozenRowCount` 不写 `fixed-cell-tag`;**丢掉 spans/合并** |
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## 二点五、合并单元格(spans)保护
|
|
87
|
+
|
|
88
|
+
服务端从 workbook **`spans`**(或 cell.`rowCount`/`colCount`>1)回写 `field.xCount`/`yCount`。
|
|
89
|
+
`` 的 `fieldToCell` / `buildWorkbookFromFields` **必须**把 `xCount`/`yCount` 写回 cell + `spans`。
|
|
90
|
+
|
|
91
|
+
**反例(本次事故)**:只为改列宽/冻结,用无 `spans` 的 workbook 整表 `saveReportDevInfo` → 表头标题、表尾合计行合并被拆成 1×1。
|
|
92
|
+
**正例**:有原 workbook 时优先 `mergeWorkbookSafe` 原地 patch;无 workbook 时从 fields 重建也必须带 spans。
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## 三、布局类定点改(仍须保护设计区)
|
|
97
|
+
|
|
98
|
+
修**单格**父格/超链接时:
|
|
99
|
+
|
|
100
|
+
1. **仍须**按 `safe-partial-save-guide.md` 提交**完整** `fields` + 从 fields 重建的 workbook(禁止空/残 workbook)。
|
|
101
|
+
2. **语义上只改目标格**:其它格原样写回;禁止顺带改 Field 左父格链。
|
|
102
|
+
3. **Const**:`ConstCellType` 必须显式带 `leftX/leftY/topX/topY` 与(若有)`pcHreflink`——服务端从 workbook 回写;缺 `leftX` → `0` → 伪 A1。见 `report-self-check-guide.md` §2.2。
|
|
103
|
+
4. **保存后自检范围收窄**:只断言**被改格** + Field 总数不降;**不要**为修 M4 再跑全表字段遍历报告。
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
用户指 M4 →
|
|
107
|
+
GET getReportDevInfo(内存过滤 x,y)
|
|
108
|
+
patch fields 中该格 + 重建 workbook(全表 cell 保留,仅该格 ConstCellType 变)
|
|
109
|
+
saveReportDevInfo
|
|
110
|
+
回读:仅检查该格 left/top/href/text + Field.count
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 三.1 回显正确性:Field 格 `text` 与 `tableName`(★ A0.10)
|
|
114
|
+
|
|
115
|
+
设计器 Field 格的**回显串** = `{tableName}.{cell.text}({字段名})`。「格内文字」**直接取 `cell.text`**,
|
|
116
|
+
设计器**不会**自动改用字段显示名 → `text` 写错,整串回显就是错的(用户会报「未匹配到正确字段」)。
|
|
117
|
+
|
|
118
|
+
| 症状 | 根因 | 定点修法 |
|
|
119
|
+
|------|------|----------|
|
|
120
|
+
| 该格回显的是**业务标题**(如「最近评级」)而非字段真名(「现供应商等级」) | 建表时把列标题写进了 Field 格的 `text` | `--set-json "2,8:text:\"现供应商等级\""`(标题只留 Const 标题行) |
|
|
121
|
+
| 数据集名重后缀 `xxx(业务模块)(业务模块)` | `datasetName` 已带后缀又拼了一次 | `--prefer-canonical` |
|
|
122
|
+
|
|
123
|
+
**自检**:逐格比对 `cell.text` vs「`fieldKey` 末段字段在源表元数据里的 `text`」,不一致即中招(`pitfalls BUILD-19/20`)。
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## 四、查询类定点改
|
|
128
|
+
|
|
129
|
+
1. `getQueryItem` → 按显示名 / `asNameIndex` / `id` **定位一条**。
|
|
130
|
+
2. 只改该条:`showWhere` / `displayType` / `selectOptions` / `relation` 等。
|
|
131
|
+
3. 下拉选项:`selectKey`=选项 ID,`selectValue`=显示名;`fieldName` 用裸雪花 ID。见 `query-condition-api-guide.md` §3.2。
|
|
132
|
+
4. 回读**只核对该条**,不必打印全部 queryItems。
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 五、列宽 / 冻结 / 居左(样式敏感)
|
|
137
|
+
|
|
138
|
+
1. **必加载** `layout-showlocation-freeze-guide.md`。
|
|
139
|
+
2. 其它 cell 的 `style` JSON **原样**进入 workbook;禁止为省事用空白 style 重生。
|
|
140
|
+
3. 居左 = `showLocation: 1`(**不是 0**);冻结表头 = `fixed-cell-tag` 锚点 + `tag.fixed` + `tag.fixedCell`,不能只设 `frozenRowCount`。
|
|
141
|
+
4. 回读只断言:目标列宽、`showLocation`、锚点 `(x,y)`/`fixed==1`;**不要**为调列宽去「优化」行高。
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## 六、与其它文档关系
|
|
146
|
+
|
|
147
|
+
| 文档 | 关系 |
|
|
148
|
+
|------|------|
|
|
149
|
+
| `user-request-scope-only-guide.md` | **总闸**:仅改用户点名项;禁止擅自改删 |
|
|
150
|
+
| `safe-partial-save-guide.md` | 写布局时的 workbook 完整性(与「语义定点」不矛盾) |
|
|
151
|
+
| `layout-showlocation-freeze-guide.md` | 居左枚举 + 冻结锚点;禁止伤样式 |
|
|
152
|
+
| `report-self-check-guide.md` | 落库门禁;定点场景下**检查项可裁剪到改动面** |
|
|
153
|
+
| `datasource-selection-and-parent-filter-guide.md` §〇 | 父格规则;「默认」≠ 批量改已有表 |
|
|
154
|
+
| `query-condition-api-guide.md` | 查询/选项映射 |
|
|
155
|
+
| `report-delivery-contract.md` | 仍可先交设计器链接;后台只验证改动面 |
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> **优先级**:高于一切「顺手优化 / 看起来更完整 / 方便下次」的冲动。
|
|
4
4
|
> **必加载**:任何会 `saveReportDevInfo` / `deleteReport` / `lifecycle delete` / `rollbackReport` / 改查询·权限·快照·数据集 的任务开始前。
|
|
5
|
-
> **CLI
|
|
5
|
+
> **CLI**:(打印本政策);映射见 `e10-cli report-cli.md` §一。
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
| `targeted-fix-guide.md` | 定点改的细则(本文件是总闸) |
|
|
65
65
|
| `safe-partial-save-guide.md` | 整表回传 ≠ 允许语义上乱改 |
|
|
66
66
|
| `failure-cleanup-and-nonblocking-guide.md` | 唯一允许的「删壳」边界 |
|
|
67
|
-
| `e10-cli report
|
|
67
|
+
| `e10-cli report-cli.md` | CLI 映射;破坏性命令须用户点名才可跑 |
|
|
68
68
|
| `layout-showlocation-freeze-guide.md` | 列宽/冻结/居左仍须保 spans/样式 |
|
|
69
69
|
|
|
70
70
|
---
|
|
@@ -73,10 +73,29 @@
|
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
75
|
# 打印本政策(Agent 改配置前可先跑一遍提醒自己)
|
|
76
|
-
e10-cli report fix --help
|
|
77
76
|
|
|
78
77
|
# 破坏性命令 —— 仅当用户明确要求时使用
|
|
79
78
|
e10-cli report lifecycle delete ...
|
|
80
|
-
e10-cli report cleanup ...
|
|
79
|
+
e10-cli report cleanup shells ...
|
|
81
80
|
e10-cli report restore ...
|
|
82
81
|
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 七、强化案例(policy 级铁律 · 2026-10-14 固化)
|
|
86
|
+
|
|
87
|
+
| # | 铁律 | 说明 |
|
|
88
|
+
|---|------|------|
|
|
89
|
+
| ① | **只改用户点名的 `reportId`** | 一次任务只碰**被点名**的那张报表;其余报表**只读不写** |
|
|
90
|
+
| ② | **「截图来自哪张表」≠「授权改哪张表」** | 截图/示例只用于**对齐口径**,**不构成改动授权**;要改哪张必须**点名** |
|
|
91
|
+
| ③ | **用户手动复制 / 手调的副本未经点名不得碰** | 用户自己 clone、手动调过的表 → **默认不动**,除非明确点名 |
|
|
92
|
+
| ④ | **误改后从「落库前快照」完整恢复** | 并**回读核对格数**一致;禁止「改回去大概就行」 |
|
|
93
|
+
| ⑤ | **改前快照 + 改后回读三项验收** | 每次修改前 `getReportDevInfo` **快照留档**;落库后回读验收 **格数 / 冲突数 / 目标字段值** 三项 |
|
|
94
|
+
| ⑥ | **save 200 ≠ 成功** | `saveReportDevInfo` 返回 200 但 `data` 带**告警**(如**父格循环依赖**)**也算失败** → 必须处理告警再看 |
|
|
95
|
+
| ⑦ | **旧会话勿保存** | 用户设计器开着**旧会话**时,**提醒勿点保存**(旧页面保存会**覆盖服务端新布局**);改动涉及已打开报表 → 要求**强刷后**再核对 |
|
|
96
|
+
| ⑧ | **改列 / 重排后重建左父格链** | 移动列、重排后必须**重建左父格链**,防止 `left` 指向**已删格 / 自身**(save 200 但带告警) |
|
|
97
|
+
| ⑨ | **保存判定 = `saved.json.code===200 && fail!==true`(BUILD-51)** | **禁用** `raw.includes('fail')` —— 响应恒带 `"fail":false` 键名,会把**成功误判为失败**(进而不必要重试/覆盖);只用 `saveResultOk()` 判定(**解析后**字段);`data` 非空 / 无告警由**回读验收**把关 |
|
|
98
|
+
| ⑩ | **新报表优先克隆已验收状态,禁整表重建(BUILD-54)** | 克隆源必须是**用户确认的最新验收状态**;落库前自检 **0 旧 datasetId / 0 坐标冲突 / META 键已清**(`checkCloneDiscipline`);禁止对已验收报表整表重建 |
|
|
99
|
+
| ⑪ | **比率 / 派生指标走数据源侧预计算列(语义正解)** | 表单加字段或数据集 SQL **直出结果列**,报表**纯绑字段** —— 绕开平台级公式重映射缺陷;不要用报表内跨带公式硬凑比例 |
|
|
100
|
+
|
|
101
|
+
> 一句话:**改动面 = 用户本轮点名的 reportId + 点名的项**;快照留档 → 定点改 → 回读三项验收 → 有告警即当失败处理;新报表优先克隆已验收态、派生指标走数据源预计算。
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# 提交后显示与评论设置
|
|
2
|
+
|
|
3
|
+
两个命令均位于 `workflow base`。无修改参数时读取当前配置,`--schema` 查看本环境字段、可选值和默认值。首次保存读取程序默认值,已有配置先读后合并;同一命令支持初始化和修改,不另建重复配置。保存后回读,返回 before/after/verified。未开放字段拒绝写入。
|
|
4
|
+
|
|
5
|
+
## 提交流程后显示内容
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
e10-cli workflow base after-submit-display <wf> --schema
|
|
9
|
+
e10-cli workflow base after-submit-display <wf> --custom 1 --pc-type 1 --pc-stay 1 --mobile-type 0
|
|
10
|
+
e10-cli workflow base after-submit-display <wf> --mobile-type 3 --mobile-url '/page?requestId=${requestId}&workflowId=${workflowId}'
|
|
11
|
+
e10-cli workflow base after-submit-display <wf> --custom 0
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| 参数 | 含义 |
|
|
15
|
+
|---|---|
|
|
16
|
+
| --custom 0/1 | 继承全局/自定义 |
|
|
17
|
+
| --pc-type、--mobile-type | 0不显示、1流程图、2审批流转情况、3自定义页面;可传实时选项名称 |
|
|
18
|
+
| --pc-stay、--mobile-stay 0/1 | 是否停留在流程图(选择流程图时生效) |
|
|
19
|
+
| --pc-url、--mobile-url | 自定义页面地址;内部以 / 开头,外部以 http(s) 开头;选择自定义页面时必填 |
|
|
20
|
+
|
|
21
|
+
地址里的 `${requestId}`、`${workflowId}` 用单引号包裹,避免 shell 提前展开。命令只保存地址,不访问地址。修改某端时保留另一端配置。
|
|
22
|
+
|
|
23
|
+
## 评论设置
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
e10-cli workflow base comment-set <wf> --schema
|
|
27
|
+
e10-cli workflow base comment-set <wf> --custom 1 --enable 1 --allow-relate 1 --relate-range 0 --allow-upload 1 --display-type 1 --display-reply 1 --default-expand 1
|
|
28
|
+
e10-cli workflow base comment-set <wf> --candidates relate
|
|
29
|
+
e10-cli workflow base comment-set <wf> --relate-range 1 --relate-items workflow document
|
|
30
|
+
e10-cli workflow base comment-set <wf> --candidates catalog
|
|
31
|
+
e10-cli workflow base comment-set <wf> --upload-catalog <目录ID>
|
|
32
|
+
e10-cli workflow base comment-set <wf> --enable 0
|
|
33
|
+
e10-cli workflow base comment-set <wf> --custom 0
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
| 参数 | 含义 |
|
|
37
|
+
|---|---|
|
|
38
|
+
| --custom 0/1 | 继承全局/自定义评论 |
|
|
39
|
+
| --enable 0/1 | 关闭/开启评论,与自定义开关独立 |
|
|
40
|
+
| --allow-relate 0/1 | 允许评论关联事项 |
|
|
41
|
+
| --relate-range 0/1 | 全部/选择事项类型 |
|
|
42
|
+
| --relate-items ID... | 事项类型 ID,须从候选查询;不是流程实例 ID |
|
|
43
|
+
| --clear-relate-items | 清空事项类型;启用选择范围时不可为空 |
|
|
44
|
+
| --allow-upload 0/1 | 允许评论上传附件 |
|
|
45
|
+
| --upload-catalog ID | 指定单个附件目录,0清空;需要环境开放知识管理 |
|
|
46
|
+
| --display-type 0/1 | 与意见合并/评论独立显示 |
|
|
47
|
+
| --display-reply 0/1 | 独立显示时,对意见的回复显示在意见区 |
|
|
48
|
+
| --default-expand 0/1 | 审批意见中默认展开评论;独立显示时需显示回复才有展示效果 |
|
|
49
|
+
|
|
50
|
+
候选查询返回首100项/目录根节点;事项列表不完整时停止写入,目录按选中ID回查验证。浏览器ID使用字符串。
|
|
51
|
+
|
|
52
|
+
**兼容行为变更:** 旧 `--enable` 同时改两个开关,现只改启用评论。当前继承全局时修改具体项需同时显式 `--custom 1`,否则报错,避免悄悄改变继承行为。
|
|
53
|
+
|
|
54
|
+
关闭自定义请单独 `--custom 0`。评论读取接口此时返回全局生效值,回读只核对自定义开关,并标注 effectiveScope=application;不声称隐藏的旧自定义值与原配置一致。未指定的普通配置项按读取结果保留。
|
|
55
|
+
|
|
56
|
+
## JSON 部分修改
|
|
57
|
+
|
|
58
|
+
均支持 `--data JSON` 或 `--data @文件`。不能和单独参数重复指定同一字段,不能修改 global/workflowId 等保留字段。开关使用true/false,复选框使用[]/["0"];提交后字段见 --help,评论字段见 --help。`--schema`、`--candidates` 不与写参数混用。
|
|
@@ -630,3 +630,9 @@ e10-cli workflow base file-set <workflowId> --async-delete 0
|
|
|
630
630
|
`--create-delete`:仅发起节点才能删除附件;`--async-delete`:删除流程的同时删除表单、意见及评论附件。均支持 0/1,修改先读后合并并自动回读验证。
|
|
631
631
|
|
|
632
632
|
七项功能设置完整参数、范围配置和限制见 [功能设置指南](guide-function-settings.md)。
|
|
633
|
+
|
|
634
|
+
### 提交后显示与评论设置
|
|
635
|
+
|
|
636
|
+
- `workflow base after-submit-display`:自定义开关、PC/移动端显示类型、流程图停留、自定义页面地址。
|
|
637
|
+
- `workflow base comment-set`:自定义与评论开关独立,关联事项范围、附件目录、显示方式、回复位置、默认展开。
|
|
638
|
+
- 初始化和修改均先读取程序默认/已有配置、仅合并指定项、保存后回读。详见 [提交后显示与评论指南](guide-after-submit-comment.md)。
|