@linkaicli/linkai-cli 0.0.0-stage → 1.0.17
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/AGENTS.md +64 -0
- package/GUIDE.md +150 -0
- package/LICENSE +190 -0
- package/NOTICE +6 -0
- package/README.md +82 -2
- package/THIRD_PARTY_NOTICES.txt +318 -0
- package/cli-manifest.json +1850 -0
- package/clis/_shared/common.js +1 -0
- package/clis/_shared/site-auth.js +1 -0
- package/clis/linkai/build.js +1 -0
- package/clis/linkai/card-rules.js +1 -0
- package/clis/linkai/collab.js +1 -0
- package/clis/linkai/commands.js +4 -0
- package/clis/linkai/core.js +12 -0
- package/clis/linkai/deliverable.js +2 -0
- package/clis/linkai/dictionary.js +1 -0
- package/clis/linkai/fill-card.js +1 -0
- package/clis/linkai/oauth.js +8 -0
- package/clis/linkai/reuse.js +1 -0
- package/clis/linkai/templates.js +1 -0
- package/dist/bundle/browser-cdp.mjs +2 -0
- package/dist/bundle/browser-page.mjs +2 -0
- package/dist/bundle/browser-utils.mjs +2 -0
- package/dist/bundle/core.mjs +3449 -0
- package/dist/bundle/daemon.mjs +16 -0
- package/dist/bundle/download-article.mjs +2 -0
- package/dist/bundle/download-media.mjs +2 -0
- package/dist/bundle/download-progress.mjs +2 -0
- package/dist/bundle/download.mjs +2 -0
- package/dist/bundle/errors.mjs +2 -0
- package/dist/bundle/logger.mjs +2 -0
- package/dist/bundle/main.mjs +3 -0
- package/dist/bundle/oplog.mjs +2 -0
- package/dist/bundle/pipeline.mjs +2 -0
- package/dist/bundle/registry.mjs +2 -0
- package/dist/bundle/skills.mjs +2 -0
- package/dist/bundle/types.mjs +2 -0
- package/dist/bundle/utils.mjs +2 -0
- package/dist/bundle/vendor/readability/Readability-readerable.js +122 -0
- package/dist/bundle/vendor/readability/Readability.js +2786 -0
- package/knowledge/README.md +29 -0
- package/knowledge/browser/README.md +40 -0
- package/knowledge/data-dictionary/README.md +35 -0
- package/knowledge/data-dictionary/_templates/enum.md +7 -0
- package/knowledge/data-dictionary/_templates/metric.md +5 -0
- package/knowledge/data-dictionary/_templates/view.md +29 -0
- package/knowledge/data-dictionary/enums/.gitkeep +1 -0
- package/knowledge/data-dictionary/index.md +12 -0
- package/knowledge/data-dictionary/metrics/.gitkeep +1 -0
- package/knowledge/data-dictionary/views/.gitkeep +1 -0
- package/knowledge/report-builder/README.md +80 -0
- package/knowledge/report-builder/SOP.md +91 -0
- package/knowledge/report-builder/build-spec.md +79 -0
- package/knowledge/report-builder/references/api-catalog.md +106 -0
- package/knowledge/report-builder/references/api.md +148 -0
- package/knowledge/report-builder/references/auth-space.md +58 -0
- package/knowledge/report-builder/references/card.md +382 -0
- package/knowledge/report-builder/references/chart-config-schema.md +572 -0
- package/knowledge/report-builder/references/chart-types.md +167 -0
- package/knowledge/report-builder/references/dashboard-patterns.md +138 -0
- package/knowledge/report-builder/references/dataset.md +152 -0
- package/knowledge/report-builder/references/fill-import.md +95 -0
- package/knowledge/report-builder/references/filters.md +170 -0
- package/knowledge/report-builder/references/gantt.md +79 -0
- package/knowledge/report-builder/references/pitfalls.md +265 -0
- package/knowledge/report-builder/references/query-engine.md +177 -0
- package/knowledge/report-builder/references/report.md +249 -0
- package/llms.txt +37 -0
- package/package.json +105 -4
- package/skills/agent-prompt.md +37 -0
- package/skills/linkai-browser/SKILL.md +67 -0
- package/skills/linkai-collab/SKILL.md +65 -0
- package/skills/linkai-data-workflow/SKILL.md +49 -0
- package/skills/linkai-data-workflow/assets/import-run-template.json +22 -0
- package/skills/linkai-data-workflow/assets/solution-template.md +60 -0
- package/skills/linkai-data-workflow/references/excel-analysis-modeling.md +35 -0
- package/skills/linkai-data-workflow/references/fill-import.md +95 -0
- package/skills/linkai-data-workflow/references/solution-knowledge.md +35 -0
- package/skills/linkai-report-builder/SKILL.md +151 -0
- package/skills/linkai-usage/SKILL.md +66 -0
- package/templates/report-spec/cards/detail-table.json +12 -0
- package/templates/report-spec/filters.example.json +28 -0
- package/templates/report-spec/plan-knowledge.example.yaml +18 -0
- package/templates/report-spec/report.example.yaml +123 -0
- package/templates/report-spec/sql/channel.sql +7 -0
- package/templates/report-spec/sql/detail.sql +10 -0
- package/templates/report-spec/sql/kpi.sql +8 -0
- package/templates/report-spec/sql/trend.sql +9 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: linkai-usage
|
|
3
|
+
version: 2026.11.02.3
|
|
4
|
+
description: LinkAI-CLI 通用用法:查找可用命令、查看参数、理解 JSON 返回与错误码、处理登录与后台服务问题。不确定该用哪个 linkai 命令时使用;领谋 BI 报表搭建请用 linkai-report-builder,网页操作请用 linkai-browser。
|
|
5
|
+
allowed-tools: Bash(linkai:*), Read
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# LinkAI-CLI 通用用法
|
|
9
|
+
|
|
10
|
+
LinkAI-CLI(命令 `linkai`)提供领谋 BI 搭建命令(`linkai …`)和浏览器操作命令(`linkai browser …`)。
|
|
11
|
+
|
|
12
|
+
## 查找命令
|
|
13
|
+
|
|
14
|
+
```sh
|
|
15
|
+
linkai list <关键字> # 按名称和说明搜索命令
|
|
16
|
+
linkai list --site linkai --limit 20 # 列出领谋 BI 的命令
|
|
17
|
+
linkai build --help -f json # 查看某个命令的参数
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
结果分页返回:`{ok:true,data:{commands,total,nextOffset?}}`,用 `--offset <nextOffset>` 翻页。
|
|
21
|
+
不要凭记忆拼参数,先看命令帮助;也不要一次性把全部命令列进上下文。
|
|
22
|
+
|
|
23
|
+
## 返回结果
|
|
24
|
+
|
|
25
|
+
- 成功:`{"ok":true,"data":…}`;失败:退出码非 0,`{"ok":false,"error":{"code","message","hint"}}`。日志在 stderr。
|
|
26
|
+
- 按 `error.code` 和 `hint` 处理问题。常见错误码:
|
|
27
|
+
- `AUTH_REQUIRED`:未登录或登录失效,请用户执行 `linkai login` 并在领谋网页完成 OAuth 授权;不要索要密码。
|
|
28
|
+
- `status` 返回 `unfinishedFlows`:有未完成或中断的工作流(`reason`:process-killed 进程被强制结束 / build-incomplete 搭建未完成 / outcome-unknown 写操作结果未知 / idle 长时间无活动)。按 `next` 处理:续做加 `--flow <id>`,不做了 `linkai flow-end --flow <id> --status abandoned`;`linkai flow-status` 查看全部。
|
|
29
|
+
- `DICTIONARY_REQUIRED`:写 SQL 前没有读过当前租户的最新数据字典(切换了租户、重新登录,或服务端更新过数据字典)。按提示执行 `kb-sources`、`kb-search` / `kb-object` / `kb-doc` 核对后再重做,不要沿用旧结论。
|
|
30
|
+
- `SQL_INVALID`:服务端解析 SQL 失败(字段 / 表不存在或语法错误)。用 `kb-object` / `ds-tables` 核对字段名后改 SQL,`sql-check` 通过前不要执行 `ds-create` / `ds-update`。
|
|
31
|
+
- `IN_USE`:对象仍被引用(如数据集被卡片引用)。先 `ds-refs` 找到引用它的卡片,经用户确认后先删卡片再删数据集。
|
|
32
|
+
- `NOT_FOUND` / `FORBIDDEN`:对象已删除或不存在 / 当前用户无权限(如别人的私有数据集)。重新用列表命令确认精确 id,不要重复执行写命令。
|
|
33
|
+
- `ds-update` 返回 `unchanged: true`:SQL 和名称与线上一致,没有重复保存;不要再执行同样的更新。
|
|
34
|
+
- `DUPLICATE_NAME`:同名对象已存在,通常是上一次已经创建成功。先 `card-list` / `ds-list` / `plan-list --search <名称>` 确认并复用,不要换名或重复执行同样的创建。
|
|
35
|
+
- `SQL_READONLY` / `SQL_TABLE_NOT_ALLOWED`:SQL 不是单条只读查询 / 用了不在 `ds-tables` 清单里的视图。换用清单里的视图;确需新视图就停下,告诉用户联系领谋数据团队。
|
|
36
|
+
- `FILE_NOT_FOUND`:输入文件不存在(相对路径按当前目录解析)。确认文件已写出、路径正确,不要原样重复执行。
|
|
37
|
+
- `SKILLS_INSTALL_FAILED`:技能目录写不进去(Windows 上常见于目录被占用或无权限)。关闭 AI 工具后重试,或改用 `linkai skills install <工具> --mode rules`。
|
|
38
|
+
- `CONFIG_INVALID`:卡片或筛选条件违反领谋界面的保存规则(与在界面点保存时的校验一致)。按 message 逐条修正后再保存,规则见 references/card.md「保存前校验」、filters.md §8。
|
|
39
|
+
- `READ_ONLY`:系统报表 / 系统方案(资源包下发到本租户)只读,本租户改不了。停下告诉用户到来源租户修改后重新下发,不要换接口反复尝试。
|
|
40
|
+
- `BAD_REQUEST`:请求体结构不对(多见于 `api` 透传)。查 `references/api-catalog.md` 或回读一条现有数据照抄结构,优先用已封装的命令。
|
|
41
|
+
- `KNOWLEDGE_INVALID`:方案知识文件不完整(缺卡片段落、缺 cardId、修改方案缺 changeSummary 等)。按 message 补齐后重新执行 `plan-knowledge`。
|
|
42
|
+
- `NETWORK_ERROR`:连不上领谋服务器(CLI 已自动重试过)。不要连续重复执行:等 1~2 分钟再试,仍不通就请用户检查网络或代理;写命令失败后先用只读命令确认结果,再决定是否重做。
|
|
43
|
+
- `DUPLICATE_DATASET`:当前租户已有完全一样的数据集。直接复用提示里的数据集 id(build spec 写 id 或加 `reuse: auto`);确需独立一份才加 `--allow-duplicate` 并向用户说明理由。
|
|
44
|
+
- `COLLAB_CONFLICT`:要写的对象正被别的会话(执行者)处理。按 `linkai-collab` 技能执行:`linkai collab-status --board <任务板>` 看分工,改做别的任务或等对方释放,不要绕过。
|
|
45
|
+
- `TENANT_MISMATCH`:要写的卡片不属于当前租户。按提示 `linkai login --tenant <租户名>` 切到方案规范指定的租户,`linkai status` 确认后再写;无法确认就停下告诉用户,不要绕过。
|
|
46
|
+
- `ARGUMENT`:参数或输入有误,按 message 修正。
|
|
47
|
+
- 写操作结果不确定时,先用只读命令查看现状,不要重复执行。
|
|
48
|
+
- 返回成功但数据为空,与执行失败不是一回事。
|
|
49
|
+
- 需要表格等格式时,命令帮助里列出的可用 `-f table|yaml|csv|md|plain`。
|
|
50
|
+
|
|
51
|
+
## 浏览器与后台服务
|
|
52
|
+
|
|
53
|
+
```sh
|
|
54
|
+
linkai browser open https://example.com --session research
|
|
55
|
+
linkai browser state --session research
|
|
56
|
+
linkai browser close --session research
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
页面命令要带 `--session`;`--profile` 指定 Chrome 用户(`linkai profile list` 查看,`linkai profile use <名称>` 设为默认)。
|
|
60
|
+
连接问题先执行 `linkai doctor`;后台服务:`linkai daemon status|restart|stop`。网页操作细节见 linkai-browser。
|
|
61
|
+
|
|
62
|
+
## 技能与知识库
|
|
63
|
+
|
|
64
|
+
- 技能:`linkai skills list`;读取:`linkai skills read linkai-report-builder -f plain`。
|
|
65
|
+
- 知识库:`linkai kb` 列出全部文件,`linkai kb --file <路径>` 读取。
|
|
66
|
+
- 用户问到浏览器能力或工作原理时,以《浏览器能力说明》(`linkai kb --file knowledge/browser/README.md`)为准回答,不补充文中没有的内容。
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "zz-demo-商品明细",
|
|
3
|
+
"pageSize": 20,
|
|
4
|
+
"limitCount": 2000,
|
|
5
|
+
"columns": [
|
|
6
|
+
{ "header": "商品", "width": 50, "rows": [["商品名称:b"], ["商品编码:grey"]] },
|
|
7
|
+
{ "header": "店铺", "width": 50, "plain": "店铺" },
|
|
8
|
+
{ "header": "销售件数", "width": 50, "plain": "销售件数" },
|
|
9
|
+
{ "header": "销售金额", "width": 50, "plain": "销售金额" }
|
|
10
|
+
],
|
|
11
|
+
"hidden": []
|
|
12
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"isTenantSystem": true,
|
|
3
|
+
"userPageSettingId": "{{plan}}",
|
|
4
|
+
"filterSourceType": 4,
|
|
5
|
+
"filters": [
|
|
6
|
+
{
|
|
7
|
+
"labelName": "店铺",
|
|
8
|
+
"filterType": 1,
|
|
9
|
+
"filterOperationType": 2,
|
|
10
|
+
"filterProperty": 1,
|
|
11
|
+
"fieldName": "店铺",
|
|
12
|
+
"indexBlockDataId": "{{dataset:detail}}",
|
|
13
|
+
"indexBlockDataSourceId": "{{dataSource}}",
|
|
14
|
+
"defaultValueType": 1,
|
|
15
|
+
"defaultValue": "\"\"",
|
|
16
|
+
"isRequired": false,
|
|
17
|
+
"isDate": false,
|
|
18
|
+
"isShowAllOption": true,
|
|
19
|
+
"inOuter": true,
|
|
20
|
+
"sortNum": 0,
|
|
21
|
+
"filterSourceType": 4,
|
|
22
|
+
"userPageSettingId": "{{plan}}",
|
|
23
|
+
"bindUserPageCards": [
|
|
24
|
+
{ "pageCardId": "{{pageCard:detail}}", "dataSettingComment": "店铺", "dataSettingIds": [] }
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# 修改原方案后,由 AI 按线上回读结果填写;cardId 必须覆盖方案内每张业务卡片。
|
|
2
|
+
# 执行:linkai plan-knowledge --plan <planId> --mode update --file plan-knowledge.example.yaml
|
|
3
|
+
# 不要写入 SQL 正文、凭据或查询结果数据。
|
|
4
|
+
|
|
5
|
+
summary: 描述方案包含的分析内容和整体使用方式。
|
|
6
|
+
problem: 描述方案解决的业务问题和面向的使用者。
|
|
7
|
+
changeSummary: 描述本次方案修改内容。
|
|
8
|
+
rules:
|
|
9
|
+
- 公共时间口径、状态范围、筛选和去重规则
|
|
10
|
+
|
|
11
|
+
cards:
|
|
12
|
+
- cardId: <从 plan-get/card-list 回读的精确卡片 ID>
|
|
13
|
+
content: 描述卡片展示内容、用途和阅读方式。
|
|
14
|
+
source: 描述租户视图或业务数据来源,不粘贴 SQL。
|
|
15
|
+
grain: 描述数据粒度,例如“日、店铺”。
|
|
16
|
+
dataLogic: 用自然语言描述指标计算、过滤、关联和汇总规则,不粘贴 SQL。
|
|
17
|
+
rules:
|
|
18
|
+
- 补充该卡片特有的时间、状态、去重或异常排除规则
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# 自动搭建报表模版(report spec v1)
|
|
2
|
+
# 用法:
|
|
3
|
+
# linkai build --spec templates/report-spec/report.example.yaml # 只校验 + 输出执行计划(不写入)
|
|
4
|
+
# linkai build --spec <spec> --execute # 全部为 zz- 前缀时直接执行
|
|
5
|
+
# linkai build --spec <spec> --execute --confirm # 含正式名:用户明确授权后才加 --confirm
|
|
6
|
+
# 规则与字段说明:knowledge/report-builder/build-spec.md
|
|
7
|
+
# 文件路径(sql / spec / filters)相对本文件所在目录。
|
|
8
|
+
# sql/ 下内容仅为格式示例;实际 SQL 必须由 AI 根据用户需求、当前租户数据字典和确认后的业务口径重新编写,CLI 不生成业务 SQL。
|
|
9
|
+
|
|
10
|
+
version: 1
|
|
11
|
+
operation: create # 必填;linkai build 只新建。修改原方案先确认 planId,完成后用 plan-knowledge --mode update 同步知识库
|
|
12
|
+
name: zz-demo-商品经营看板 # 方案名;zz- 前缀 = 试验对象,可用 linkai clean --prefix zz-demo- 清理
|
|
13
|
+
# tenant: 示例租户 # 可选:写上租户名,执行时会核对当前登录的租户,不一致就停下
|
|
14
|
+
|
|
15
|
+
knowledge: # 最终完整呈现给用户;同时版本化保存为「<方案名>方案知识库」
|
|
16
|
+
summary: 汇总商品经营核心指标、销售趋势、渠道结构和商品明细,形成从总览到明细的分析路径。
|
|
17
|
+
problem: 帮助经营人员快速判断销售规模、变化趋势和渠道贡献,并定位到具体商品明细。
|
|
18
|
+
rules:
|
|
19
|
+
- 指标口径、时间范围和状态范围以当前租户数据字典及用户确认结果为准
|
|
20
|
+
- 页面筛选条件会同时作用于已绑定的业务卡片
|
|
21
|
+
|
|
22
|
+
layout: # 可省略,默认值即运营分析方案视觉基线
|
|
23
|
+
contentX: 2
|
|
24
|
+
contentWidth: 20
|
|
25
|
+
pageBackgroundColor: "#F4F3EE"
|
|
26
|
+
titleHeight: 2
|
|
27
|
+
|
|
28
|
+
datasets: # SQL 只能查租户视图(linkai ds-tables);口径先查数据字典知识库
|
|
29
|
+
- key: kpi
|
|
30
|
+
name: zz-demo-经营KPI
|
|
31
|
+
sql: sql/kpi.sql
|
|
32
|
+
- key: trend
|
|
33
|
+
name: zz-demo-日趋势
|
|
34
|
+
sql: sql/trend.sql
|
|
35
|
+
- key: channel
|
|
36
|
+
name: zz-demo-渠道占比
|
|
37
|
+
sql: sql/channel.sql
|
|
38
|
+
- key: detail
|
|
39
|
+
name: zz-demo-商品明细
|
|
40
|
+
sql: sql/detail.sql
|
|
41
|
+
# 复用已有数据集:- { key: base, id: <dsId> }
|
|
42
|
+
|
|
43
|
+
cards:
|
|
44
|
+
- key: kpi_sales
|
|
45
|
+
type: meter # 单数值指标卡(meter/list);头部多指标的 meterList 类型六见 knowledge 卡片篇
|
|
46
|
+
dataset: kpi
|
|
47
|
+
name: zz-demo-销售金额
|
|
48
|
+
col: 销售金额
|
|
49
|
+
subtitle: 本期销售金额
|
|
50
|
+
knowledge:
|
|
51
|
+
content: 展示当前筛选范围内的销售金额,用于观察整体经营规模。
|
|
52
|
+
source: 商品销售明细租户视图
|
|
53
|
+
grain: 当前筛选范围汇总为一行
|
|
54
|
+
dataLogic: 对符合已确认订单状态和时间口径的销售金额求和。
|
|
55
|
+
- key: kpi_qty
|
|
56
|
+
type: meter
|
|
57
|
+
dataset: kpi
|
|
58
|
+
name: zz-demo-销售件数
|
|
59
|
+
col: 销售件数
|
|
60
|
+
subtitle: 本期销售件数
|
|
61
|
+
knowledge:
|
|
62
|
+
content: 展示当前筛选范围内的销售件数,用于观察商品销量规模。
|
|
63
|
+
source: 商品销售明细租户视图
|
|
64
|
+
grain: 当前筛选范围汇总为一行
|
|
65
|
+
dataLogic: 对符合已确认订单状态和时间口径的销售件数求和。
|
|
66
|
+
- key: trend
|
|
67
|
+
type: chart
|
|
68
|
+
dataset: trend
|
|
69
|
+
name: zz-demo-销售日趋势
|
|
70
|
+
kind: line/multiple # linkai kinds 查全部 74 种
|
|
71
|
+
dim: [月日, 日期序] # 第一个维度当 x 轴;日期序只用于排序(不画)
|
|
72
|
+
meas: [销售金额]
|
|
73
|
+
series: 渠道
|
|
74
|
+
sort: "日期序:asc"
|
|
75
|
+
knowledge:
|
|
76
|
+
content: 按日期展示销售金额变化,并按渠道区分系列,用于识别趋势和异常波动。
|
|
77
|
+
source: 商品销售明细租户视图
|
|
78
|
+
grain: 日期、渠道
|
|
79
|
+
dataLogic: 按业务日期和渠道汇总销售金额,以日期序升序展示。
|
|
80
|
+
- key: channel
|
|
81
|
+
type: chart
|
|
82
|
+
dataset: channel
|
|
83
|
+
name: zz-demo-渠道销售占比
|
|
84
|
+
kind: pie/donut
|
|
85
|
+
dim: [渠道]
|
|
86
|
+
meas: [销售金额]
|
|
87
|
+
sort: "销售金额:desc" # 饼/环图默认按数值降序
|
|
88
|
+
knowledge:
|
|
89
|
+
content: 展示各渠道销售金额占比,用于判断渠道贡献结构。
|
|
90
|
+
source: 商品销售明细租户视图
|
|
91
|
+
grain: 渠道
|
|
92
|
+
dataLogic: 按渠道汇总销售金额并降序排列,计算各渠道在当前筛选范围内的贡献。
|
|
93
|
+
- key: detail
|
|
94
|
+
type: table # AG 明细表,spec 格式见 knowledge 卡片篇「一把出」
|
|
95
|
+
dataset: detail
|
|
96
|
+
spec: cards/detail-table.json
|
|
97
|
+
sort: "销售金额:desc"
|
|
98
|
+
knowledge:
|
|
99
|
+
content: 展示商品维度的销售明细,用于从汇总指标下钻定位具体商品表现。
|
|
100
|
+
source: 商品销售明细租户视图
|
|
101
|
+
grain: 商品
|
|
102
|
+
dataLogic: 按商品聚合销售金额和销售件数,并按销售金额降序展示。
|
|
103
|
+
# 复用已有卡片:- { key: old, type: existing, id: <cardId> }
|
|
104
|
+
|
|
105
|
+
sections: # 自上而下;每个分区一个标题卡(cardType 5,高 2 格)+ 若干行
|
|
106
|
+
- title: { serial: "01", title: 经营总览, subtitle: 本期核心指标 }
|
|
107
|
+
rows:
|
|
108
|
+
- height: 6
|
|
109
|
+
cards: [ { card: kpi_sales }, { card: kpi_qty } ] # 不写 width 时均分内容区
|
|
110
|
+
- title: { serial: "02", title: 趋势与结构, subtitle: 按渠道拆分 }
|
|
111
|
+
rows:
|
|
112
|
+
- height: 16
|
|
113
|
+
cards: [ { card: trend, width: 12 }, { card: channel, width: 8 } ]
|
|
114
|
+
- title: { serial: "03", title: 商品明细 }
|
|
115
|
+
rows:
|
|
116
|
+
- height: 30
|
|
117
|
+
cards: [ { card: detail } ]
|
|
118
|
+
|
|
119
|
+
filters: filters.example.json # 可选:方案筛选器模板(全量覆盖);占位符见 build-spec.md
|
|
120
|
+
|
|
121
|
+
publish: # 可选:把卡片发布为数据报表(正式名需要 --confirm)
|
|
122
|
+
reports:
|
|
123
|
+
- { card: detail, name: zz-demo-商品明细报表 }
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
-- 商品明细:一行一个商品;保留唯一键(商品编码)避免全维度 GROUP BY 合并相同行。
|
|
2
|
+
SELECT
|
|
3
|
+
t.item_code AS 商品编码,
|
|
4
|
+
t.item_name AS 商品名称,
|
|
5
|
+
t.shop_name AS 店铺,
|
|
6
|
+
SUM(t.sale_qty) AS 销售件数,
|
|
7
|
+
SUM(t.sale_amount) AS 销售金额
|
|
8
|
+
FROM scm_warehouse.ads_gop_sales_item_view t
|
|
9
|
+
WHERE t.biz_date BETWEEN CAST($1 AS DATE) AND CAST($2 AS DATE)
|
|
10
|
+
GROUP BY 1, 2, 3
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
-- 经营 KPI:一行,供指标卡使用。
|
|
2
|
+
-- ⚠ 表名必须在 `linkai ds-tables` 白名单内(租户视图);字段口径以数据字典知识库为准。
|
|
3
|
+
-- $1/$2 为参数变量(开始/结束日期),由方案筛选器(filterProperty:2)传入,见 knowledge 查询引擎篇 §2.1。
|
|
4
|
+
SELECT
|
|
5
|
+
SUM(t.sale_amount) AS 销售金额,
|
|
6
|
+
SUM(t.sale_qty) AS 销售件数
|
|
7
|
+
FROM scm_warehouse.ads_gop_sales_item_view t
|
|
8
|
+
WHERE t.biz_date BETWEEN CAST($1 AS DATE) AND CAST($2 AS DATE)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
-- 日趋势:月日(x 轴文本)+ 日期序(排序用整数)+ 渠道(系列)+ 销售金额。
|
|
2
|
+
SELECT
|
|
3
|
+
DATE_FORMAT(t.biz_date, '%m-%d') AS 月日,
|
|
4
|
+
CAST(DATE_FORMAT(t.biz_date, '%Y%m%d') AS INT) AS 日期序,
|
|
5
|
+
t.channel_name AS 渠道,
|
|
6
|
+
SUM(t.sale_amount) AS 销售金额
|
|
7
|
+
FROM scm_warehouse.ads_gop_sales_item_view t
|
|
8
|
+
WHERE t.biz_date BETWEEN CAST($1 AS DATE) AND CAST($2 AS DATE)
|
|
9
|
+
GROUP BY 1, 2, 3
|