@guandata/guancli 1.0.35 → 1.0.36

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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## @guandata/guancli 1.0.36 - 2026-06-24
4
+
5
+ - `metric` 增加指标主题和指标目录创建能力,便于直接准备指标管理结构。
6
+ - 补充 SuperApp 创建指导,帮助 Agent 按应用和页面场景组织 BI 配置。
7
+ - 页面资源搜索和结果展示增强,按名称或 ID 查找页面时结果更稳定、更易读。
8
+ - `install-skill` 适配 WorkBuddy 配置目录,提升本机编码助手安装兼容性。
9
+
3
10
  ## @guandata/guancli 1.0.35 - 2026-06-17
4
11
 
5
12
  - `metric by-dataset` 增强数据集下游指标查询,并补充指标创建/编辑参考说明。
package/README.md CHANGED
@@ -39,6 +39,13 @@ guancli chatbi query --theme-name "经营主题" --message "最近30天营业收
39
39
 
40
40
  ## 版本更新
41
41
 
42
+ ### @guandata/guancli 1.0.36
43
+
44
+ - `metric` 增加指标主题和指标目录创建能力,便于直接准备指标管理结构。
45
+ - 补充 SuperApp 创建指导,帮助 Agent 按应用和页面场景组织 BI 配置。
46
+ - 页面资源搜索和结果展示增强,按名称或 ID 查找页面时结果更稳定、更易读。
47
+ - `install-skill` 适配 WorkBuddy 配置目录,提升本机编码助手安装兼容性。
48
+
42
49
  ### @guandata/guancli 1.0.35
43
50
 
44
51
  - `metric by-dataset` 增强数据集下游指标查询,并补充指标创建/编辑参考说明。
package/bin/run.js CHANGED
@@ -51,20 +51,32 @@ function copyDirectory(src, dest) {
51
51
  }
52
52
  }
53
53
 
54
- function installCodeBuddySkill(pkgRoot, skill) {
55
- try {
56
- const srcDir = path.join(pkgRoot, "skills", skill);
57
- if (!fs.existsSync(path.join(srcDir, "SKILL.md"))) {
58
- console.warn(`Warning: skipping CodeBuddy/WorkBuddy install; skill not found: ${srcDir}`);
59
- return;
60
- }
54
+ function installBuddySkills(pkgRoot, skill) {
55
+ const srcDir = path.join(pkgRoot, "skills", skill);
56
+ if (!fs.existsSync(path.join(srcDir, "SKILL.md"))) {
57
+ console.warn(`Warning: skipping buddy install; skill not found: ${srcDir}`);
58
+ return;
59
+ }
61
60
 
62
- const configDir = process.env.CODEBUDDY_CONFIG_DIR || path.join(os.homedir(), ".codebuddy");
63
- const destDir = path.join(configDir, "skills", skill);
64
- copyDirectory(srcDir, destDir);
65
- console.log(`Installed ${skill} to CodeBuddy/WorkBuddy: ${destDir}`);
66
- } catch (err) {
67
- console.warn(`Warning: CodeBuddy/WorkBuddy install failed for ${skill}: ${err.message}`);
61
+ const targets = [
62
+ {
63
+ name: "CodeBuddy",
64
+ configDir: process.env.CODEBUDDY_CONFIG_DIR || path.join(os.homedir(), ".codebuddy"),
65
+ },
66
+ {
67
+ name: "WorkBuddy",
68
+ configDir: process.env.WORKBUDDY_CONFIG_DIR || path.join(os.homedir(), ".workbuddy"),
69
+ },
70
+ ];
71
+
72
+ for (const target of targets) {
73
+ try {
74
+ const destDir = path.join(target.configDir, "skills", skill);
75
+ copyDirectory(srcDir, destDir);
76
+ console.log(`Installed ${skill} to ${target.name}: ${destDir}`);
77
+ } catch (err) {
78
+ console.warn(`Warning: ${target.name} install failed for ${skill}: ${err.message}`);
79
+ }
68
80
  }
69
81
  }
70
82
 
@@ -91,7 +103,7 @@ if (process.argv[2] === "install-skill") {
91
103
  const result = spawnSync("npx", args, { stdio: "inherit", env: process.env, shell: true });
92
104
  if (result.error) throw result.error;
93
105
  const status = result.status || 0;
94
- if (status === 0) installCodeBuddySkill(pkgRoot, "guancli");
106
+ if (status === 0) installBuddySkills(pkgRoot, "guancli");
95
107
  process.exit(status);
96
108
  }
97
109
 
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guandata/guancli",
3
- "version": "1.0.35",
3
+ "version": "1.0.36",
4
4
  "description": "观远 BI 命令行工具 - 通过 API 操作 ETL、数据集、页面、表单等资源,并提供 ChatBI 问数/洞察能力",
5
5
  "bin": {
6
6
  "guancli": "bin/run.js"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: guancli
3
- description: 当用户要分析观远 BI / Guandata 的 ETL、数据集、页面/仪表板、卡片、血缘、节点 SQL、资源树、目录、表单填报数据、指标 metric、公共维度 public dimension、指标树归因 metric_attribution、指标泛化查询参数,或给出 ETL ID、dsId、page ID、card ID、metric ID、metric tree ID、公共维度 ID 想看现有内容/查询数据时,主动使用这个 skill。用户要创建、新建、编辑、删除指标或公共维度,尤其是“创建原子指标”“创建复合指标”“创建衍生指标”“新增 metric”“基于数据集建指标”“用两个指标算一个指标”“做同比/环比/最近N天/累计/期末值指标”“新建公共维度”“把几个数据集字段关联成公共维度”时,也要使用这个 skill 并读取对应写操作指引。即使用户只说"看一下这个 page""贴一下这个 ETL 的 SQL""搜个叫 X 的数据集""这个数据集长啥样""页面卡片用了哪些 ds""帮我查这个指标""生成指标泛化查询命令""帮我创建一个原子指标""帮我创建一个复合指标""帮我创建一个同比指标""帮我创建一个公共维度",也要触发。它直接调用 BI HTTP API 拉数据并整理成 AI 友好的中文结论,定位是 BI 查询分析 + 表单填报 CRUD + 指标/公共维度写操作引导。修改 ETL 走 guanetl;新建/改 Card/Page 走 guanvis;数据源/数据集 CRUD/增量/调度走 guands;页面 PNG 视觉验证走 guanvis screenshot;管理员级 SVC SQL / 动态码走 guanadmin。若用户希望直接分析 BI 项目而不是手工点页面,或希望直接通过 ChatBI 进行主题问数/洞察分析,也应优先使用这个 skill。
3
+ description: 当用户要分析观远 BI / Guandata 的 ETL、数据集、页面/仪表板、卡片、血缘、节点 SQL、资源树、目录、表单填报数据、指标 metric、公共维度 public dimension、指标树归因 metric_attribution、指标泛化查询参数,或给出 ETL ID、dsId、page ID、card ID、metric ID、metric tree ID、公共维度 ID 想看现有内容/查询数据时,主动使用这个 skill。用户要创建、新建、编辑、删除指标或公共维度,或创建指标主题/指标目录,尤其是“创建原子指标”“创建复合指标”“创建衍生指标”“新增 metric”“基于数据集建指标”“用两个指标算一个指标”“做同比/环比/最近N天/累计/期末值指标”“新建指标主题”“新建指标目录”“新建公共维度”“把几个数据集字段关联成公共维度”时,也要使用这个 skill 并读取对应写操作指引。用户提到“创建超级应用”“创建 SuperApp”“新建 SuperApp 项目”“SuperApp 模板项目”时,也要使用这个 skill,并引导使用 `guancli app create`。即使用户只说"看一下这个 page""贴一下这个 ETL 的 SQL""搜个叫 X 的数据集""这个数据集长啥样""页面卡片用了哪些 ds""帮我查这个指标""生成指标泛化查询命令""帮我创建一个原子指标""帮我创建一个复合指标""帮我创建一个同比指标""帮我创建一个指标主题""帮我创建一个指标目录""帮我创建一个公共维度""帮我创建一个超级应用",也要触发。它直接调用 BI HTTP API 拉数据并整理成 AI 友好的中文结论,定位是 BI 查询分析 + 表单填报 CRUD + 指标/公共维度写操作引导 + SuperApp 模板项目创建。修改 ETL 走 guanetl;新建/改 Card/Page 走 guanvis;数据源/数据集 CRUD/增量/调度走 guands;页面 PNG 视觉验证走 guanvis screenshot;管理员级 SVC SQL / 动态码走 guanadmin。若用户希望直接分析 BI 项目而不是手工点页面,或希望直接通过 ChatBI 进行主题问数/洞察分析,也应优先使用这个 skill。
4
4
  compatibility: Requires Node.js 14+. Install via npm install -g @guandata/guancli.
5
5
  ---
6
6
 
@@ -17,9 +17,11 @@ compatibility: Requires Node.js 14+. Install via npm install -g @guandata/guancl
17
17
  - 用户要搜索指标、获取指标详情、查询指标数据、查看指标目录、执行指标树归因,或让你生成/解释指标泛化查询命令。
18
18
  - 用户给出数据集 ID,想查看该数据集创建或影响到的所有指标,包括直接原子指标以及下游复合指标、衍生指标。
19
19
  - 用户要创建、新建、编辑或删除指标;当前指标写操作指引先覆盖原子指标、复合指标、衍生指标的创建和编辑前校验。
20
+ - 用户要创建指标主题或指标目录。
20
21
  - 用户要查询、新建、编辑、转移责任人或删除指标公共维度。
22
+ - 用户要创建超级应用 / SuperApp / SuperApp 模板项目。
21
23
 
22
- 如果用户只想生成页面 PNG 截图成品,不要用本 skill,改用 `guanvis screenshot`。页面截图不要再走 `guanexport`;移动端页面/卡片导出仍暂用 `guanexport` legacy 功能。
24
+ 如果用户只想生成页面 PNG 截图成品,不要用本 skill,改用 `guanvis screenshot`。
23
25
 
24
26
  ## 数据获取方式
25
27
 
@@ -81,7 +83,7 @@ ChatBI 统一复用当前 profile 的 `base_url` 和 `uIdToken`。
81
83
 
82
84
  ## 能力边界
83
85
 
84
- guancli 是 BI 资源的**查询分析入口**,并支持少量明确边界的写操作(Form 表单填报 CRUD、指标写操作引导)。其他写入类任务由专用 skill 负责:
86
+ guancli 是 BI 资源的**查询分析入口**,并支持少量明确边界的写操作(Form 表单填报 CRUD、指标写操作引导)和 SuperApp 模板项目创建。其他写入类任务由专用 skill 负责:
85
87
 
86
88
  | 任务 | 应使用的工具 |
87
89
  |------|-------------|
@@ -91,6 +93,20 @@ guancli 是 BI 资源的**查询分析入口**,并支持少量明确边界的
91
93
 
92
94
  > guancli 能显示 ETL 的节点定义和 SQL,但 ETL 的新建、修改、保存、执行闭环应通过 `guanetl` 完成。
93
95
 
96
+ ## SuperApp 项目创建
97
+
98
+ 当用户提到创建超级应用、创建 SuperApp、新建 SuperApp 项目或基于 SuperApp 模板初始化项目时,使用 `guancli app create`。
99
+
100
+ ```bash
101
+ guancli app create --name <project_name> --path <parent_dir>
102
+ ```
103
+
104
+ 关键规则:
105
+
106
+ - `--name` 是项目名称,`--path` 是项目所在的父目录;信息不全时先确认项目名称和目标目录。
107
+ - 该命令会下载 SuperApp 模板并创建项目目录,随后尝试复制 `.env.template`、更新 `package.json` 名称、初始化 git,并根据模板情况执行 `setup.sh` 或 `npm install` + 启动本地 dev server。
108
+ - 如果用户只是要创建本地 SuperApp 模板项目,不需要先做 BI 资源查询;直接给出或执行 `guancli app create`。
109
+
94
110
  ## 先做判断
95
111
 
96
112
  1. 先用 `auth status` 确认认证是否有效。
@@ -117,6 +133,8 @@ guancli 是 BI 资源的**查询分析入口**,并支持少量明确边界的
117
133
  关键规则:
118
134
 
119
135
  - 普通指标数据查询用 `guancli metric query <metric_id>`,可加 `--dim`、`--filter`、排序、列筛选、输出格式等。
136
+ - 创建指标主题用 `guancli metric project-create <name>`;创建后后端会同步创建主题根目录。默认图标与 Web 新建主题一致,可用 `--icon`、`--icon-color` 覆盖;真实提交前可加 `--dry-run` 查看请求体。
137
+ - 创建指标目录用 `guancli metric dir-create <name> --project-id <metric_topic_id>`,也可用 `--project-name <name>` 按主题名称解析;默认创建在该主题根目录下。创建子目录优先传 `--parent-dir-id <dir_id>`,也可用 `--parent-dir-name <name>` 按父目录名称解析;真实提交前可加 `--dry-run` 查看请求体。信息不全时先用 `guancli metric project` 和 `guancli metric tree` 定位主题 ID、目录 ID。若用户只给主题名称且当前环境下有重复主题名,必须让用户从候选主题 ID 中指定一个;若用户只给父目录名称且同一主题下有重复目录名,必须让用户从候选目录 ID 中指定一个,不要自行猜测。
120
138
  - 按数据集反查指标用 `guancli metric by-dataset <ds_id>`;新版 BI 会走后端批量接口直接返回直接指标和下游指标,旧版 BI 会兼容回退为先定位使用该数据集的原子指标、再沿指标下游血缘展开复合指标和衍生指标。适合回答“这个数据集关联了哪些指标 / 改这个数据集会影响哪些指标”。如果已知指标主题,可加 `-d <metric_topic_id>` 缩小范围;需要结构化结果时用 `-f json`。
121
139
  - 只要传入 `--compare`、`--compare-value`、`--xtd`、`--last`、`--recent`、`--recent-base`、`--percentage`、`--percentage-dim`、`--rank-top`、`--rank-order`、`--rank-dim`、`--adv-calc-json` 任一参数,就进入指标泛化查询模式。
122
140
  - 泛化查询要求 BI 版本 `>= 8.2.1`;如需确认环境版本,先执行 `guancli server-version --profile <profile>`。
@@ -35,6 +35,8 @@ guancli metric [command]
35
35
  | `by-dataset` | 按数据集 ID 获取直接和下游关联指标 |
36
36
  | `query` | 查询指标数据 |
37
37
  | `tree` | 获取指标目录树 |
38
+ | `project-create` | 创建指标主题 |
39
+ | `dir-create` | 创建指标目录 |
38
40
  | `create` | 新建原子指标(JSON 文件驱动) |
39
41
  | `edit` | 编辑原子指标(JSON patch / replace) |
40
42
  | `delete` | 删除指标(先执行删除影响校验) |
@@ -59,6 +61,30 @@ guancli metric project 经营 --profile default -f json
59
61
  guancli metric project 经营 --profile default --raw
60
62
  ```
61
63
 
64
+ ### metric project-create
65
+
66
+ 创建指标主题。主题创建成功后,后端会同步创建该主题根目录。默认图标和颜色与 Web 新建主题一致,可按需覆盖。
67
+
68
+ ```bash
69
+ guancli metric project-create <name> [flags]
70
+ ```
71
+
72
+ 专属参数:
73
+
74
+ | 参数 | 默认值 | 说明 |
75
+ | --- | --- | --- |
76
+ | `--icon string` | `finance_subject` | 主题图标 |
77
+ | `--icon-color string` | `#1A827F` | 主题图标颜色 |
78
+ | `--dry-run` | `false` | 只输出请求方法和请求体,不提交 |
79
+
80
+ 示例:
81
+
82
+ ```bash
83
+ guancli metric project-create 经营指标 --profile default --dry-run
84
+ guancli metric project-create 经营指标 --profile default
85
+ guancli metric project-create 经营指标 --profile default --icon finance_subject --icon-color '#1A827F'
86
+ ```
87
+
62
88
  ### metric search
63
89
 
64
90
  搜索指标;传关键词时后台用 `%keyword%` 模糊匹配,不传关键词返回所有指标。
@@ -183,6 +209,36 @@ guancli metric tree --profile default -f json
183
209
  guancli metric tree --profile default --raw
184
210
  ```
185
211
 
212
+ ### metric dir-create
213
+
214
+ 创建指标目录。默认在指定主题根目录下创建;可用 `--project-id` 指定主题 ID,也可用 `--project-name` 按主题名称解析。创建子目录时可用 `--parent-dir-id` 指定父目录 ID,也可用 `--parent-dir-name` 按父目录名称解析。
215
+ 如果当前环境下存在多个同名主题,CLI 会阻断创建并列出候选 ID,此时应让用户指定 `--project-id`。
216
+ 如果同一主题下存在多个同名父目录,CLI 会阻断创建并列出候选路径和 ID,此时应让用户指定 `--parent-dir-id`。
217
+
218
+ ```bash
219
+ guancli metric dir-create <name> (--project-id <metric_topic_id> | --project-name <metric_topic_name>) [flags]
220
+ ```
221
+
222
+ 专属参数:
223
+
224
+ | 参数 | 默认值 | 说明 |
225
+ | --- | --- | --- |
226
+ | `--project-id string` | 无 | 指标主题 ID;与 `--project-name` 二选一 |
227
+ | `--project-name string` | 无 | 指标主题名称;同名主题重复时改用 `--project-id` |
228
+ | `--parent-dir-id string` | 无 | 父目录 ID;为空时 CLI 自动使用主题根目录 |
229
+ | `--parent-dir-name string` | 无 | 父目录名称;同名目录重复时改用 `--parent-dir-id` |
230
+ | `--dry-run` | `false` | 只输出请求方法和请求体,不提交 |
231
+
232
+ 示例:
233
+
234
+ ```bash
235
+ guancli metric dir-create 广告分析 --profile default --project-id <metric_topic_id> --dry-run
236
+ guancli metric dir-create 广告分析 --profile default --project-id <metric_topic_id>
237
+ guancli metric dir-create 广告分析 --profile default --project-name 经营指标
238
+ guancli metric dir-create 投放效果 --profile default --project-id <metric_topic_id> --parent-dir-id <dir_id>
239
+ guancli metric dir-create 投放效果 --profile default --project-name 经营指标 --parent-dir-name 广告分析
240
+ ```
241
+
186
242
  ### metric create
187
243
 
188
244
  新建原子指标。写入流程先读 `metric-mutation.md` 和 `metric-common-fields.md`,原子字段、问询流程和 JSON 模板见 `metric-atomic-mutation.md`。复合指标和衍生指标创建当前使用 `guancli fetch POST /api/metric-platform/metrics/<type>-metrics --stdin`,分别见 `metric-composite-mutation.md` 和 `metric-derived-mutation.md`。
@@ -55,6 +55,8 @@
55
55
  2. 信息不全时先查 ID,不凭空猜:
56
56
  - 指标主题:`guancli metric project [keyword] -f json`
57
57
  - 指标目录:`guancli metric tree -f json`
58
+ - 新建指标主题:`guancli metric project-create <name> --dry-run`,确认后去掉 `--dry-run`
59
+ - 新建指标目录:`guancli metric dir-create <name> --project-id <metric_topic_id> --dry-run`,也可用 `--project-name <metric_topic_name>`;确认后去掉 `--dry-run`。创建子目录可传 `--parent-dir-id`,也可传 `--parent-dir-name`。若主题名称重复必须让用户指定主题 ID;若父目录名称重复必须让用户指定目录 ID
58
60
  - 指标详情:`guancli metric search <keyword> -f json`、`guancli metric get <metric_id> --brief`
59
61
  - 数据集字段:`guancli ds search <keyword>`、`guancli ds get <dsId> --brief`
60
62
  3. 读取启用的指标业务属性配置,补齐必填 `bizAttrs`。