@wubaoqi/guancopilot 0.0.0-stage → 0.2.0
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/NOTICE.md +17 -0
- package/README.md +146 -2
- package/assets/coreutils.wasm +0 -0
- package/assets/find.wasm +0 -0
- package/assets/guanbi.wasm +4 -0
- package/assets/guancli.wasm +0 -0
- package/assets/guanhelm.wasm +0 -0
- package/assets/jq.wasm +0 -0
- package/assets/openskills.wasm +0 -0
- package/assets/rg.wasm +0 -0
- package/assets/sed.wasm +0 -0
- package/bin/guancopilot +0 -0
- package/bin/guanvm +0 -0
- package/bin/platforms.cjs +6 -0
- package/bin/run.cjs +39 -0
- package/bin/runtime.cjs +44 -0
- package/licenses/Go-LICENSE +27 -0
- package/licenses/browser-_speed-highlight_core-LICENSE +121 -0
- package/licenses/browser-_speed-highlight_core-package.json +14 -0
- package/licenses/browser-dompurify-LICENSE +202 -0
- package/licenses/browser-dompurify-LICENSE-MPL +373 -0
- package/licenses/browser-dompurify-package.json +10 -0
- package/licenses/browser-marked-LICENSE +44 -0
- package/licenses/browser-marked-package.json +10 -0
- package/licenses/coreutils-LICENSE +18 -0
- package/licenses/findutils-LICENSE +18 -0
- package/licenses/github.com_BurntSushi_toml_v1.6.0-COPYING +21 -0
- package/licenses/github.com_dustin_go-humanize_v1.0.1-LICENSE +21 -0
- package/licenses/github.com_google_jsonschema-go_v0.4.3-LICENSE +21 -0
- package/licenses/github.com_google_uuid_v1.6.0-LICENSE +27 -0
- package/licenses/github.com_jackc_pgpassfile_v1.0.0-LICENSE +22 -0
- package/licenses/github.com_jackc_pgservicefile_v0.0.0-20240606120523-5a60cdf6a761-LICENSE +22 -0
- package/licenses/github.com_jackc_pgx_v5_v5.11.0-LICENSE +22 -0
- package/licenses/github.com_jackc_puddle_v2_v2.2.2-LICENSE +22 -0
- package/licenses/github.com_mattn_go-isatty_v0.0.20-LICENSE +9 -0
- package/licenses/github.com_modelcontextprotocol_go-sdk_v1.8.0-LICENSE +216 -0
- package/licenses/github.com_ncruces_go-strftime_v1.0.0-LICENSE +21 -0
- package/licenses/github.com_remyoudompheng_bigfft_v0.0.0-20230129092748-24d4a6f8daec-LICENSE +27 -0
- package/licenses/github.com_santhosh-tekuri_jsonschema_v6_v6.0.3-LICENSE +175 -0
- package/licenses/github.com_segmentio_asm_v1.1.3-LICENSE +21 -0
- package/licenses/github.com_segmentio_encoding_v0.5.4-LICENSE +21 -0
- package/licenses/github.com_tetratelabs_wazero_v1.12.0-LICENSE +201 -0
- package/licenses/github.com_tetratelabs_wazero_v1.12.0-NOTICE +2 -0
- package/licenses/github.com_yosida95_uritemplate_v3_v3.0.2-LICENSE +25 -0
- package/licenses/golang.org_x_image_v0.44.0-LICENSE +27 -0
- package/licenses/golang.org_x_net_v0.58.0-LICENSE +27 -0
- package/licenses/golang.org_x_oauth2_v0.36.0-LICENSE +27 -0
- package/licenses/golang.org_x_sync_v0.22.0-LICENSE +27 -0
- package/licenses/golang.org_x_sys_v0.47.0-LICENSE +27 -0
- package/licenses/golang.org_x_text_v0.41.0-LICENSE +27 -0
- package/licenses/golang.org_x_time_v0.15.0-LICENSE +27 -0
- package/licenses/guanbi-skills-LICENSE +133 -0
- package/licenses/guanbi-skills-LICENSE.README.md +28 -0
- package/licenses/guanbi-skills-LICENSE.zh-CN +82 -0
- package/licenses/jq-COPYING +176 -0
- package/licenses/modernc.org_libc_v1.73.4-LICENSE +27 -0
- package/licenses/modernc.org_libc_v1.73.4-LICENSE-3RD-PARTY.md +305 -0
- package/licenses/modernc.org_mathutil_v1.7.1-LICENSE +27 -0
- package/licenses/modernc.org_memory_v1.11.0-LICENSE +27 -0
- package/licenses/modernc.org_memory_v1.11.0-LICENSE-GO +27 -0
- package/licenses/modernc.org_memory_v1.11.0-LICENSE-LOGO +1 -0
- package/licenses/modernc.org_memory_v1.11.0-LICENSE-MMAP-GO +25 -0
- package/licenses/modernc.org_sqlite_v1.53.0-LICENSE +26 -0
- package/licenses/mvdan.cc_sh_v3_v3.13.1-LICENSE +27 -0
- package/licenses/ripgrep-COPYING +3 -0
- package/licenses/ripgrep-LICENSE-MIT +21 -0
- package/licenses/sed-LICENSE +21 -0
- package/manifest.json +972 -0
- package/package.json +30 -4
- package/plugin/guancopilot.js +193 -0
- package/skills-bundle/.guanvm-skills-bundle +0 -0
- package/skills-bundle/_recipes/dashboard/gates/page_check.js +16 -0
- package/skills-bundle/_recipes/dashboard/gates/report_check.js +4 -0
- package/skills-bundle/_recipes/dashboard/knowledge/01.md +1 -0
- package/skills-bundle/_recipes/dashboard/knowledge/02.md +1 -0
- package/skills-bundle/_recipes/dashboard/knowledge/03.md +1 -0
- package/skills-bundle/_recipes/dashboard/knowledge/04.md +1 -0
- package/skills-bundle/_recipes/dashboard/knowledge/05.md +1 -0
- package/skills-bundle/_recipes/dashboard/knowledge/06.md +1 -0
- package/skills-bundle/_recipes/dashboard/template.json +41 -0
- package/skills-bundle/_recipes/etl/gates/etl_live_check.js +10 -0
- package/skills-bundle/_recipes/etl/gates/etl_report_check.js +3 -0
- package/skills-bundle/_recipes/etl/knowledge/01.md +1 -0
- package/skills-bundle/_recipes/etl/knowledge/02.md +9 -0
- package/skills-bundle/_recipes/etl/knowledge/03.md +1 -0
- package/skills-bundle/_recipes/etl/knowledge/04.md +1 -0
- package/skills-bundle/_recipes/etl/knowledge/05.md +1 -0
- package/skills-bundle/_recipes/etl/template.json +39 -0
- package/skills-bundle/_recipes/hints.json +46 -0
- package/skills-bundle/guancli/.commandface.json +155 -0
- package/skills-bundle/guancli/SKILL.md +342 -0
- package/skills-bundle/guancli/evals/evals.json +156 -0
- package/skills-bundle/guancli/evals/fixtures/metric-candidate-empty-search.json +13 -0
- package/skills-bundle/guancli/evals/fixtures/metric-candidate-prior-request.json +13 -0
- package/skills-bundle/guancli/evals/fixtures/metric-consumption-columns.json +46 -0
- package/skills-bundle/guancli/evals/fixtures/metric-consumption-metadata.json +36 -0
- package/skills-bundle/guancli/evals/fixtures/metric-consumption-query.json +18 -0
- package/skills-bundle/guancli/references/analysis-primitives.md +95 -0
- package/skills-bundle/guancli/references/auth-and-config.md +131 -0
- package/skills-bundle/guancli/references/examples/metric-date-in.json +7 -0
- package/skills-bundle/guancli/references/examples/metric-query-rows.py +83 -0
- package/skills-bundle/guancli/references/examples/metric-query.sh +6 -0
- package/skills-bundle/guancli/references/form-chatbi.md +199 -0
- package/skills-bundle/guancli/references/gateway.md +148 -0
- package/skills-bundle/guancli/references/metric-batch-query.md +82 -0
- package/skills-bundle/guancli/references/metric-commands.md +562 -0
- package/skills-bundle/guancli/references/metric-generic-query.md +215 -0
- package/skills-bundle/guancli/references/metric-json-migration.md +18 -0
- package/skills-bundle/guancli/references/metric-query-recipes.md +358 -0
- package/skills-bundle/guancli/references/preview-and-output.md +192 -0
- package/skills-bundle/guancli/references/resource-query.md +101 -0
- package/skills-bundle/guands/SKILL.md +281 -0
- package/skills-bundle/guands/references/calc-fields-boundaries-and-pitfalls.md +160 -0
- package/skills-bundle/guands/references/command-reference.md +267 -0
- package/skills-bundle/guands/references/incremental-and-schedule.md +157 -0
- package/skills-bundle/guands/references/workflows.md +256 -0
- package/skills-bundle/guanetl/SKILL.md +391 -0
- package/skills-bundle/guanetl/evals/evals.json +41 -0
- package/skills-bundle/guanetl/references/ETL_AI_DEVELOP.md +456 -0
- package/skills-bundle/guanmetric/SKILL.md +144 -0
- package/skills-bundle/guanmetric/evals/evals.json +117 -0
- package/skills-bundle/guanmetric/evals/fixtures/atomic-detail-read-model.json +18 -0
- package/skills-bundle/guanmetric/evals/fixtures/confirmed-template-summary.json +12 -0
- package/skills-bundle/guanmetric/evals/fixtures/create-result-unknown-state.json +13 -0
- package/skills-bundle/guanmetric/evals/forward-eval-2026-09-21.json +62 -0
- package/skills-bundle/guanmetric/references/metric-api-contract-examples.json +690 -0
- package/skills-bundle/guanmetric/references/metric-api-contract.schema.json +349 -0
- package/skills-bundle/guanmetric/references/metric-api-contracts.md +436 -0
- package/skills-bundle/guanmetric/references/metric-atomic-mutation.md +238 -0
- package/skills-bundle/guanmetric/references/metric-batch-status.md +71 -0
- package/skills-bundle/guanmetric/references/metric-business-dictionary-api-contract-examples.json +53 -0
- package/skills-bundle/guanmetric/references/metric-business-dictionary-api-contract.schema.json +26 -0
- package/skills-bundle/guanmetric/references/metric-business-dictionary.md +76 -0
- package/skills-bundle/guanmetric/references/metric-common-fields.md +246 -0
- package/skills-bundle/guanmetric/references/metric-composite-mutation.md +165 -0
- package/skills-bundle/guanmetric/references/metric-delete-mutation.md +70 -0
- package/skills-bundle/guanmetric/references/metric-derived-mutation.md +453 -0
- package/skills-bundle/guanmetric/references/metric-excel-template.md +365 -0
- package/skills-bundle/guanmetric/references/metric-expression-rules.md +146 -0
- package/skills-bundle/guanmetric/references/metric-flow-generate-example.json +79 -0
- package/skills-bundle/guanmetric/references/metric-flow-generate.schema.json +93 -0
- package/skills-bundle/guanmetric/references/metric-flow.md +218 -0
- package/skills-bundle/guanmetric/references/metric-hierarchy-api-contract-examples.json +171 -0
- package/skills-bundle/guanmetric/references/metric-hierarchy-api-contract.schema.json +167 -0
- package/skills-bundle/guanmetric/references/metric-hierarchy-api-contracts.md +193 -0
- package/skills-bundle/guanmetric/references/metric-mutation.md +155 -0
- package/skills-bundle/guanmetric/references/metric-public-dimension-api-contract-examples.json +62 -0
- package/skills-bundle/guanmetric/references/metric-public-dimension-api-contract.schema.json +47 -0
- package/skills-bundle/guanmetric/references/metric-public-dimension.md +155 -0
- package/skills-bundle/guanmetric/references/metric-tree-api-contract-examples.json +277 -0
- package/skills-bundle/guanmetric/references/metric-tree-api-contract.schema.json +263 -0
- package/skills-bundle/guanmetric/references/metric-tree-api-contracts.md +53 -0
- package/skills-bundle/guanmetric/references/metric-tree-mutation.md +500 -0
- package/skills-bundle/guanmetric/references/metric-validation-ownership.md +74 -0
- package/skills-bundle/guanvis/SKILL.md +333 -0
- package/skills-bundle/guanvis/evals/china_map/card_01_basic_map.js +13 -0
- package/skills-bundle/guanvis/evals/china_map/card_02_world_map.js +10 -0
- package/skills-bundle/guanvis/evals/china_map/card_03_point_map.js +12 -0
- package/skills-bundle/guanvis/evals/china_map/page.js +10 -0
- package/skills-bundle/guanvis/evals/china_map/schema.js +10 -0
- package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/README.md +30 -0
- package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/card_01_comparative_mvp.js +72 -0
- package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/page.js +6 -0
- package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/schema.js +22 -0
- package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/verify_default_roundtrip.sh +92 -0
- package/skills-bundle/guanvis/evals/complex_report_pro/card_01_monthly.js +63 -0
- package/skills-bundle/guanvis/evals/complex_report_pro/page.js +6 -0
- package/skills-bundle/guanvis/evals/complex_report_pro/schema.js +6 -0
- package/skills-bundle/guanvis/evals/custom_chart_echarts/card_01_bar.js +13 -0
- package/skills-bundle/guanvis/evals/custom_chart_echarts/card_02_pie.js +13 -0
- package/skills-bundle/guanvis/evals/custom_chart_echarts/charts/bar.js +11 -0
- package/skills-bundle/guanvis/evals/custom_chart_echarts/charts/pie.js +15 -0
- package/skills-bundle/guanvis/evals/custom_chart_echarts/page.js +5 -0
- package/skills-bundle/guanvis/evals/custom_chart_echarts/schema.js +9 -0
- package/skills-bundle/guanvis/evals/custom_chart_sdk/card_01_level_nodes.js +19 -0
- package/skills-bundle/guanvis/evals/custom_chart_sdk/charts/level_nodes.css +51 -0
- package/skills-bundle/guanvis/evals/custom_chart_sdk/charts/level_nodes.html +1 -0
- package/skills-bundle/guanvis/evals/custom_chart_sdk/charts/level_nodes.js +28 -0
- package/skills-bundle/guanvis/evals/custom_chart_sdk/page.js +5 -0
- package/skills-bundle/guanvis/evals/custom_chart_sdk/schema.js +7 -0
- package/skills-bundle/guanvis/evals/dynamic_fields/card_01_dynamic_dataset.js +20 -0
- package/skills-bundle/guanvis/evals/dynamic_fields/card_02_dynamic_metric_chart.js +16 -0
- package/skills-bundle/guanvis/evals/dynamic_fields/metrics.js +19 -0
- package/skills-bundle/guanvis/evals/dynamic_fields/page.js +9 -0
- package/skills-bundle/guanvis/evals/dynamic_fields/schema.js +7 -0
- package/skills-bundle/guanvis/evals/dynamic_fields/verify_default_roundtrip.sh +137 -0
- package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/README.md +26 -0
- package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/card_01_percentage_advcalc.js +44 -0
- package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/card_02_scroll_percentage.js +12 -0
- package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/page.js +6 -0
- package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/schema.js +22 -0
- package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/README.md +28 -0
- package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/card_01_rank_advcalc.js +59 -0
- package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/page.js +6 -0
- package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/schema.js +22 -0
- package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/verify_default_roundtrip.sh +135 -0
- package/skills-bundle/guanvis/evals/running_total_advcalc_roundtrip/README.md +15 -0
- package/skills-bundle/guanvis/evals/running_total_advcalc_roundtrip/card_01_running_total_advcalc.js +74 -0
- package/skills-bundle/guanvis/evals/running_total_advcalc_roundtrip/page.js +6 -0
- package/skills-bundle/guanvis/evals/running_total_advcalc_roundtrip/schema.js +22 -0
- package/skills-bundle/guanvis/evals/sales_dashboard/card_01_revenue_column.js +10 -0
- package/skills-bundle/guanvis/evals/sales_dashboard/card_02_trend_line.js +9 -0
- package/skills-bundle/guanvis/evals/sales_dashboard/card_03_kpi.js +6 -0
- package/skills-bundle/guanvis/evals/sales_dashboard/card_04_pie.js +9 -0
- package/skills-bundle/guanvis/evals/sales_dashboard/card_05_calc_field_test.js +12 -0
- package/skills-bundle/guanvis/evals/sales_dashboard/page.js +11 -0
- package/skills-bundle/guanvis/evals/sales_dashboard/schema.js +14 -0
- package/skills-bundle/guanvis/evals/sales_dashboard/selector_01_region.js +10 -0
- package/skills-bundle/guanvis/evals/split_charts/card_01_column_split.js +10 -0
- package/skills-bundle/guanvis/evals/split_charts/card_02_line_split.js +10 -0
- package/skills-bundle/guanvis/evals/split_charts/card_03_combo_split.js +11 -0
- package/skills-bundle/guanvis/evals/split_charts/page.js +10 -0
- package/skills-bundle/guanvis/evals/split_charts/schema.js +14 -0
- package/skills-bundle/guanvis/evals/tab_layout/card_00_total_revenue.js +6 -0
- package/skills-bundle/guanvis/evals/tab_layout/card_01_revenue.js +10 -0
- package/skills-bundle/guanvis/evals/tab_layout/card_02_trend.js +9 -0
- package/skills-bundle/guanvis/evals/tab_layout/card_03_story.js +11 -0
- package/skills-bundle/guanvis/evals/tab_layout/page.js +23 -0
- package/skills-bundle/guanvis/evals/tab_layout/schema.js +11 -0
- package/skills-bundle/guanvis/evals/tab_layout/selector_01_region.js +8 -0
- package/skills-bundle/guanvis/references/api-reference.md +476 -0
- package/skills-bundle/guanvis/references/builder-reference.md +1676 -0
- package/skills-bundle/guanvis/references/chart-properties.md +2101 -0
- package/skills-bundle/guanvis/references/checkout-editing.md +53 -0
- package/skills-bundle/guanvis/references/complex-report-pro-patterns.md +398 -0
- package/skills-bundle/guanvis/references/dir-and-page-management.md +48 -0
- package/skills-bundle/guanvis/references/metric-chart-reference.md +258 -0
- package/skills-bundle/guanvis/references/publish-and-constraints.md +60 -0
- package/skills-bundle/guanvis/references/selector-reference.md +431 -0
- package/skills-bundle/guanvis/references/tableau-migration.md +73 -0
- package/skills-bundle/guanvis/references/theme.md +123 -0
- package/skills-bundle/guanvis/references/troubleshooting.md +25 -0
- package/skills-bundle/guanvis/references/validation-and-chart-patterns.md +205 -0
- package/skills-bundle/guanwf/SKILL.md +543 -0
- package/skills-bundle/guanwf/references/ETL_AI_DEVELOP.md +456 -0
- package/skills-bundle/guanwf/references/TASK_NODE_CONTRACTS.md +64 -0
- package/skills-bundle/guanwf/references/WORKFLOW_DSL.md +536 -0
- package/skills-bundle/guanwf/references/WORKFLOW_NODES.md +166 -0
- package/skills-bundle/js/SKILL.md +145 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
## 验证规则
|
|
2
|
+
|
|
3
|
+
pack/publish 时分两层自动检查:
|
|
4
|
+
|
|
5
|
+
### JS 层(脚本执行时,面向 AI 生成的脚本质量)
|
|
6
|
+
|
|
7
|
+
- **数据集绑定**:是否调用了 `.bindDataset()`,dsId 是否在 `defineDataset()` 中注册
|
|
8
|
+
- **Zone 配置**:必填 zone 是否有字段、字段数量是否超过 maxCount、是否使用了不支持的 zone
|
|
9
|
+
- **字段完整性**:fdId/name 非空、fdType 合法(FieldType 枚举)、field() 引用的字段名是否存在
|
|
10
|
+
- **聚合类型**:metric/compare/target zone 中非明细表图表必须有 aggrType;aggrType 值必须合法(AggrType 枚举)
|
|
11
|
+
- **明细表计算字段**:`DETAIL_TABLE` / `SCROLL_TABLE` 禁止 `calculationType: "aggregation"` / `"window"` 的 `calcField()`,并拦截明显的 `OVER(...)` 窗口子句;明细表只做行级展示,行级公式使用 `{ calculationType: "normal" }`,聚合需求优先改用非明细图表的原生指标 `aggrType`,复杂聚合改用非明细图表的 aggregation calcField 或 ETL 预计算。跨方言 SQL 聚合函数由 skill 生成规范约束,不在本地校验中维护函数名白/黑名单
|
|
12
|
+
- **排序**:sorting zone 中 sortType 必须是 ASC/DESC(使用 SortOrder 枚举)
|
|
13
|
+
- **重复检测**:同一 zone 中相同 fdId+alias+aggrType 组合会产生 warning
|
|
14
|
+
- **空卡片**:没有任何字段的卡片会报错
|
|
15
|
+
- **Page 布局**:cardIndex 越界、宽度超限(非精细 1-12,精细导出后 1-60)、溢出检测
|
|
16
|
+
|
|
17
|
+
### Go 层(payload 生成后,面向后端导入兼容性)
|
|
18
|
+
|
|
19
|
+
- **结构完整性**:chartType 非空、dsId 非空、dsInfo 非空且含 dsId/columns、meta JSON 合法
|
|
20
|
+
- **meta 结构**:chartMain/summary 存在、zoneData/zoneInfo 中 zoneId 合法
|
|
21
|
+
- **字段合法性**:fdType/aggrType 值合法、metric zone 字段有 aggrType
|
|
22
|
+
- **Page 关联**:layout 中 card ID 引用合法、pageCardRels 引用合法
|
|
23
|
+
- **筛选器**:cdType=6 的卡片跳过 chartType/chartMain 检查,验证 source.field 存在
|
|
24
|
+
|
|
25
|
+
### column zone 与 colorBy zone 的区别
|
|
26
|
+
|
|
27
|
+
**column zone**(`.addColumn()`):接受**维度字段**,用于按维度分组着色。例如"按邮寄方式分组堆叠":
|
|
28
|
+
|
|
29
|
+
```javascript
|
|
30
|
+
createCard(ChartType.STACKED_COLUMN, "类别销售额")
|
|
31
|
+
.addRow(f("类别"))
|
|
32
|
+
.addColumn(f("邮寄方式")) // 维度分组 → 每种邮寄方式一个颜色
|
|
33
|
+
.addMetric(f("销售额", { aggrType: AggrType.SUM }))
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**colorBy zone**(`.addColorBy()`):接受**指标字段**,用于按指标值渐变着色。例如"按利润值深浅着色":
|
|
37
|
+
|
|
38
|
+
```javascript
|
|
39
|
+
createCard(ChartType.BASIC_COLUMN, "类别销售额")
|
|
40
|
+
.addRow(f("类别"))
|
|
41
|
+
.addMetric(f("销售额", { aggrType: AggrType.SUM }))
|
|
42
|
+
.addColorBy(f("利润", { aggrType: AggrType.SUM })) // 指标值 → 颜色深浅
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
支持 column zone 的图表:`STACKED_COLUMN`、`GROUPED_COLUMN`、`GROUPED_BAR`、`STACKED_BAR`、`MULTI_LINE`、`STACKED_AREA` 等多指标图表。`BASIC_COLUMN`、`BASIC_BAR`、`BASIC_LINE`、`PIE` 不支持 column zone。
|
|
46
|
+
|
|
47
|
+
### 特殊图表行为
|
|
48
|
+
|
|
49
|
+
- **DETAIL_TABLE / SCROLL_TABLE**:`.addColumn()` 自动重定向到 metric zone;metric/sorting zone 的 `needAggregation` 设为 false;不自动添加 aggrType
|
|
50
|
+
- **PIVOT_TABLE**:支持 row(行维度)+ column(列维度)+ metric(值)交叉分析
|
|
51
|
+
- **BASIC_MAP / WORLD_MAP**:地理维度字段放 `row` zone(1 个),指标放 `colorBy`(渐变着色)或 `metric` zone。后端验证规则:`rowSize == 1 && (colorBySize == 1 || metricSize == 1)`。**不要用** `addLocation()`(已废弃)
|
|
52
|
+
- **POINT_MAP / BUBBLE_MAP**:`row` zone 放地名维度(1 个),`metric` zone 放数值指标(POINT_MAP 最多 20 个,BUBBLE_MAP 无限制)。后端验证规则:`rowSize == 1 && metricSize >= 1`
|
|
53
|
+
|
|
54
|
+
### 图表类型 Zone 配置速查表
|
|
55
|
+
|
|
56
|
+
`-1` 或 `∞` 表示不限数量。**必填** zone 标记 `*`。省略的 zone(filters/sorting/tooltip)所有图表都支持。
|
|
57
|
+
|
|
58
|
+
| ChartType | metric | row | column | colorBy | 其他 | 典型场景 |
|
|
59
|
+
|---|---|---|---|---|---|---|
|
|
60
|
+
| BASIC_COLUMN/BAR/LINE | 1* | ∞ | - | 1 | split(1) | 单指标柱/条/折线 |
|
|
61
|
+
| GROUPED_COLUMN/BAR | ∞* | ∞ | 1 | 1 | split(1) | 多指标分组柱/条 |
|
|
62
|
+
| STACKED_COLUMN/BAR | ∞* | ∞ | 1 | 1 | split(1) | 堆叠柱/条 |
|
|
63
|
+
| MULTI_LINE | ∞* | ∞ | 1 | 1 | split(1) | 多指标折线 |
|
|
64
|
+
| *_WITH_LINE (组合图) | ∞* | **1** | 1 | 1 | metricAdditional(20), split(1) | 柱+线组合。metric=柱形(主轴),metricAdditional=折线(副轴) |
|
|
65
|
+
| PIE / TREE_MAP | 1* | ∞ | - | 1 | - | 饼图/矩形树图 |
|
|
66
|
+
| KPI_CARD | 1* | - | - | - | compare(∞) | 单指标 KPI |
|
|
67
|
+
| PIVOT_TABLE | 124* | ∞ | ∞ | - | - | 交叉表 |
|
|
68
|
+
| DETAIL_TABLE | ∞* | - | - | - | - | 明细表 |
|
|
69
|
+
| SCROLL_TABLE | ∞* | ∞ | - | - | - | 滚动表 |
|
|
70
|
+
| BASIC_SCATTER_PLOT | 2* | 1 | - | 1 | sizeBy(1) | 散点图(X/Y 两个 metric) |
|
|
71
|
+
| BASIC_MAP | 1 | 1* | - | 1 | - | 中国地图(row 放地理维度) |
|
|
72
|
+
| FUNNEL | ∞* | 1 | - | - | - | 漏斗 |
|
|
73
|
+
| PROGRESS_BAR | 2* | 0-1 | - | - | - | 进度条,默认用两个 metric(当前值/目标值) |
|
|
74
|
+
| HEAT_MAP | 1* | 1* | 1* | - | - | 热力图(row+column+metric 都必填) |
|
|
75
|
+
| RADAR_LINE | ∞* | 1 | - | 1 | - | 雷达图 |
|
|
76
|
+
| SANKEY | 1 | ∞* | - | - | - | 桑基图 |
|
|
77
|
+
|
|
78
|
+
### 图表选型补充(非通识部分)
|
|
79
|
+
|
|
80
|
+
以下仅列出观远 BI 特有的、容易选错的图表区分规则:
|
|
81
|
+
|
|
82
|
+
| 场景 | 正确选择 | 避免混淆 |
|
|
83
|
+
|------|---------|---------|
|
|
84
|
+
| KPI 只展示一个数字 | `SINGLE_VALUE` | 不要用 `KPI_CARD` |
|
|
85
|
+
| KPI 需要同环比对比 | `KPI_CARD`(有 compare zone) | `SINGLE_VALUE` 无 compare zone |
|
|
86
|
+
| 折线图只有 1 个指标 | `BASIC_LINE` | 不要用 `MULTI_LINE` |
|
|
87
|
+
| 折线图有 2+ 指标 | `MULTI_LINE` | 不要用 `BASIC_LINE`(仅支持 1 metric + colorBy 拆分) |
|
|
88
|
+
| 明细逐行展示(不聚合) | `DETAIL_TABLE` | `PIVOT_TABLE` 会聚合 |
|
|
89
|
+
| 行列交叉汇总 | `PIVOT_TABLE`(有 row + column + metric 三个 zone) | `DETAIL_TABLE` 无 column zone |
|
|
90
|
+
| 按维度分组着色(如按地区着色) | 使用 `.addColumn(f("地区"))` | **不要用** `.addColorBy()`,colorBy 是按指标值渐变着色 |
|
|
91
|
+
| 分组+组成双维度对比 | `STACKED_SPLIT_COLUMN` | `GROUPED_COLUMN` 无堆积、`STACKED_COLUMN` 无分组 |
|
|
92
|
+
| 柱线组合图(主轴柱形+副轴折线) | `GROUPED_COLUMN_WITH_LINE`(metric=柱, metricAdditional=线) | 不要把所有指标都放 metric,副轴指标用 `.addMetricAdditional()` |
|
|
93
|
+
| 目标达成率 | `BULLET_COLUMN` / `BULLET_BAR` | 不要用普通柱形图叠加辅助线 |
|
|
94
|
+
| 占比分析类别 >5 | `TREE_MAP` 或 `RISING_SUN` | `PIE` 限 2-5 个分类,否则难以辨读 |
|
|
95
|
+
| 完成度/进度展示 | `KPI_CARD` + 数值格式 | `SOLID_GAUGE` 占空间大但信息密度低,优先用指标卡 |
|
|
96
|
+
| 中国省/市级地图 | `BASIC_MAP`(内置 Highmaps) | **不要用自定义图表**,内置地图自带 GeoJSON、地名编码匹配 |
|
|
97
|
+
| 全球国家级地图 | `WORLD_MAP`(内置 Highmaps) | 同上 |
|
|
98
|
+
| 标记地图(地名+多指标) | `POINT_MAP`(标记)或 `BUBBLE_MAP`(气泡) | row zone 放 1 个地名维度,metric zone 放多个指标 |
|
|
99
|
+
| 美国各州/加拿大等非中国区域详细地图 | 自定义图表(Vega-Lite geoshape) | 内置 `WORLD_MAP` 只精确到国家级,州/省级需自定义 |
|
|
100
|
+
|
|
101
|
+
### 拆分图(Trellis/Facet)
|
|
102
|
+
|
|
103
|
+
将一个图表按维度值拆分成多个小图表并排展示。使用 `addSplit(field)` 指定拆分维度,可选 `setSplitSetting` 控制行列数:
|
|
104
|
+
|
|
105
|
+
```javascript
|
|
106
|
+
var card = createCard(ChartType.STACKED_AREA, "各类别月销售趋势")
|
|
107
|
+
.bindDataset(DS)
|
|
108
|
+
.addRow(f("订单日期", { granularity: "MONTH" }))
|
|
109
|
+
.addMetric(f("销售额", { aggrType: AggrType.SUM }))
|
|
110
|
+
.addSplit(f("产品类别"))
|
|
111
|
+
.setSplitSetting({ rows: 2, columns: 3 });
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
不调用 `setSplitSetting` 时默认 3 行 3 列。支持拆分的图表类型:`BASIC_COLUMN`、`BASIC_BAR`、`BASIC_LINE`、`STACKED_AREA`、`GROUPED_COLUMN`、`STACKED_COLUMN`、`MULTI_LINE` 等所有带 split zone 的图表。
|
|
115
|
+
|
|
116
|
+
### 地图图表用法
|
|
117
|
+
|
|
118
|
+
**BASIC_MAP(中国行政地图)**:内置 Highmaps,自动加载中国省市 GeoJSON。地理维度字段放 `row` zone,指标放 `colorBy`(渐变着色)或 `metric` zone。BI 后端通过 `GeoCodeUtil` 自动将地名(如"北京市""浙江省")映射为行政区编码。
|
|
119
|
+
|
|
120
|
+
```javascript
|
|
121
|
+
var card = createCard(ChartType.BASIC_MAP, "各省利润率")
|
|
122
|
+
.bindDataset(DS)
|
|
123
|
+
.addRow(f("省/自治区"))
|
|
124
|
+
.addColorBy(calcField("利润率", "SUM([利润])/SUM([销售额])", {
|
|
125
|
+
numberFormat: NumberFormat.percentage(1)
|
|
126
|
+
}));
|
|
127
|
+
|
|
128
|
+
registerCard(card.build());
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
如果数据集中已有利润率字段,可直接引用(无需 calcField):
|
|
132
|
+
```javascript
|
|
133
|
+
.addColorBy(f("利润率", { aggrType: AggrType.AVG }));
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**自定义 colorBy 渐变色**:默认为主题色单色渐变。要设置自定义渐变色,使用 `setColorByColors`,支持两种方式:
|
|
137
|
+
|
|
138
|
+
1. **预设色板名称**(推荐):`setColorByColors(ColorByPreset.RedGreen)`
|
|
139
|
+
2. **自定义 hex 颜色**:`setColorByColors({ startColor: "#hex", endColor: "#hex", middleColor?: "#hex", steps?: 5 })`
|
|
140
|
+
|
|
141
|
+
可用 `ColorByPreset` 值:
|
|
142
|
+
|
|
143
|
+
| 预设名称 | 类型 | 颜色 |
|
|
144
|
+
|---|---|---|
|
|
145
|
+
| `TrafficLight` | 发散 | `#F54F2A` → `#F1DB8B` → `#00A376` |
|
|
146
|
+
| `RedGreen` | 发散 | `#EC4F4F` → `#E0ECF0` → `#009688` |
|
|
147
|
+
| `HeatCold` | 发散 | `#0E64A8` → `#F7F6F6` → `#C53D18` |
|
|
148
|
+
| `Blue` | 顺序 | `#A3CCF8` → `#547CCE` |
|
|
149
|
+
| `Golden` | 顺序 | `#FADA61` → `#F76B1C` |
|
|
150
|
+
| `Green` | 顺序 | `#E0E6B7` → `#0D9347` |
|
|
151
|
+
| `Grey` | 顺序 | `#CBD3DA` → `#5B6A7C` |
|
|
152
|
+
| `Pink` | 顺序 | `#FFA9A9` → `#EF6065` |
|
|
153
|
+
| `Purple` | 顺序 | `#D3C3DB` → `#7260AF` |
|
|
154
|
+
|
|
155
|
+
```javascript
|
|
156
|
+
// 预设色板
|
|
157
|
+
var card = createCard(ChartType.BASIC_MAP, "利润率地图")
|
|
158
|
+
.bindDataset(DS)
|
|
159
|
+
.addRow(f("省/自治区"))
|
|
160
|
+
.addColorBy(calcField("利润率", "SUM([利润])/SUM([销售额])", {
|
|
161
|
+
numberFormat: NumberFormat.percentage(1)
|
|
162
|
+
}))
|
|
163
|
+
.setColorByColors(ColorByPreset.RedGreen);
|
|
164
|
+
|
|
165
|
+
// 自定义 hex 颜色
|
|
166
|
+
.setColorByColors({ startColor: "#EC4F4F", middleColor: "#E0ECF0", endColor: "#009688", steps: 5 });
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**WORLD_MAP(世界地图)**:
|
|
170
|
+
|
|
171
|
+
```javascript
|
|
172
|
+
var card = createCard(ChartType.WORLD_MAP, "全球销售分布")
|
|
173
|
+
.bindDataset(DS)
|
|
174
|
+
.addRow(f("国家"))
|
|
175
|
+
.addColorBy(f("销售额", { aggrType: AggrType.SUM }));
|
|
176
|
+
|
|
177
|
+
registerCard(card.build());
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
**POINT_MAP(标记地图)**:row zone 放地名维度(1 个),metric zone 放指标(支持多个,最多 20 个)。
|
|
181
|
+
|
|
182
|
+
```javascript
|
|
183
|
+
var card = createCard(ChartType.POINT_MAP, "各省门店数")
|
|
184
|
+
.bindDataset(DS)
|
|
185
|
+
.addRow(f("省/自治区"))
|
|
186
|
+
.addMetric(f("门店数", { aggrType: AggrType.SUM }))
|
|
187
|
+
.addMetric(f("销售额", { aggrType: AggrType.SUM }));
|
|
188
|
+
|
|
189
|
+
registerCard(card.build());
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**仪表板编排**:KPI 指标卡放最前,趋势/对比图表居中,明细表放最后。每页主 KPI 不超过 5-7 个。
|
|
193
|
+
|
|
194
|
+
### Field 对象
|
|
195
|
+
|
|
196
|
+
通过 `f("字段名")` 或 `field(DS, "字段名")` 从 schema 自动构造,无需手写 fdId/fdType。可通过 overrides 叠加属性:
|
|
197
|
+
|
|
198
|
+
```javascript
|
|
199
|
+
f("营收", {
|
|
200
|
+
aggrType: AggrType.SUM,
|
|
201
|
+
alias: "总营收",
|
|
202
|
+
numberFormat: NumberFormat.currency("¥"),
|
|
203
|
+
sortType: SortOrder.DESC
|
|
204
|
+
})
|
|
205
|
+
```
|