AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Majia Guanyuan

skill-maojiebc-majia-guanyuan-majia-guanyuan · by maojiebc

观远 BI(Guandata)实战增益层 Agent Skill —— 架在官方全家桶(guancli 查数 / guanvis 建卡发布截图 / guanetl ETL / guanwf 数据流 / guands 数据源)之上,专攻官方 DSL/命令覆盖不到的硬骨头:Part B ETL 整库治理判断 + 10 类 BI 引擎报错手册 + SmartETL 全链路重写/ExecPlan、Part C 既有页自定义图表 HTML/CSS/JS 注入排障 + 固定卡/overlay、Part C-12 HTML 应用化看板(descriptor patch 把 selector 联到 custom chart 内部 dataView + 视觉设计底线/反 AI 味红线/guanvis screenshot 视觉验收)、Part D v7 草稿-发布状态机绕过 + SmartETL 节点化静…

No reviews yet
0 installs
10 views
0.0% view→install

Install

$ agentstack add skill-maojiebc-majia-guanyuan-majia-guanyuan

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-maojiebc-majia-guanyuan-majia-guanyuan)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Majia Guanyuan? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

观远 BI · 马甲实战版(V3.1.4)

> 结构说明(V1.5.0 引入 progressive disclosure):本文档是路由层 + 关键规则,详细操作手册下沉到 references/。每个 Part 的入口章节会指出"何时回到 references/ 查全表"。完整章节索引见末尾的 [📚 References 目录](#-references-目录)。

🧭 Part 选择

| 你想做 | 走 | |---|---| | 查数据、建卡、出报表、标准 ETL / 数据集 CRUD | 🧭 路由层 → 交给官方全家桶(guancli / guanvis / guanetl / guands),见路由总表 | | 扫整库 ETL 治理 / 新建/修改/删除 ETL / 字段使用度审计 / 修复 ETL 报错 | Part B:ETL 治理与写入 | | 把整条 SmartETL 链改写成 SQL 版 + 页面副本验收 + 差异定位 + 空快照阻塞 | Part B-17:全链路重写方法论(拆到 [references/part-b17-fullchain-rewrite.md](references/part-b17-fullchain-rewrite.md)) | | 30+ 张表批量迁移 / 跨多日工程 / 复杂重构需要项目化追踪 | B-17.11 ExecPlan 工作法(同上文件 §11) | | 自定义图表 HTML/CSS/JS 注入、固定卡片/overlay、payloadjson 取数、路由清理 | Part C:自定义图表开发与排障 | | 从零生成 HTML 化经营分析应用(用户说"更高级 / 应用化 / 自定义模块 / 最完美 / 不限标准看板")| Part C-12:HTML 应用化看板生成(拆到 [references/part-c-html-dashboard.md](references/part-c-html-dashboard.md)) | | v7 BI 实例上端到端搭多个 HTML 应用看板 / 手撸 POST /api/page+/api/card60004 此操作只能在草稿页面执行 卡住 / CSV 散客 会员ID IS NOT NULL 算出 100% 假指标 / Spark WITH 中文别名PARSE_SYNTAX_ERROR / ETL update 报 1012 输出数据集目录中存在同名文件 | Part D:V7 Page/Card 发布流水线 + 三态硬规则(V2.1.6 新增,拆到 [references/v7-page-card-publish-pipeline.md](references/v7-page-card-publish-pipeline.md)) | | SuperApp / 超级应用 / 开放应用开发流水线 / guancli app create/publish / --app-id 不传变成每次新建 / 数据集异步预览 3 步 / form_xxx 建表反向工程(脚手架没暴露建表 API,实测 POST /survey-engine/api/form/add)/ BI 中转 LLM 报 NOTJSONRES / ILLEGALJSONRES(响应被塞在 errormessage)/ /api/llm-config/list 返回裸数组被脚手架 unwrap 吞 / 同源 fetch credentials 不带 cookie / 客户端模拟流式打字效果 / 任务池工作台「看 + 想 + 选 + 做 + 留痕」闭环 | Part E:SuperApp 开放应用开发流水线(V2.1.12 新增,拆到 [references/part-e-superapp-pipeline.md](references/part-e-superapp-pipeline.md)) | | 客户说"想给现有 BI 接 AI / 上 LLM" / "我们 ETL 治理做了一年还没出活" / 判断 是该治理还是该重搭 / 客户预算分配讨论 / 评估底表 schema 是否 AI-friendly / 提案"AI-native 数据底座" | AI-native ADS 设计方法论(V2.1.13 新增,majia-guanyuan 的哲学层文档——不是操作手册而是范式判断,拆到 [references/ai-native-ads-design.md](references/ai-native-ads-design.md)) | | 写餐饮业务公式(AC / ADS / 复购率 / 新老客 / 用餐时段 / 留存流失 / RFM / Comp 老店)/ 查字段口径 / 排数据质量坑 / ETL 工程范式(DWD 宽表 / 双源对账 / 评价 pipeline) | 餐饮 BI 公式实战库([references/restaurant-bi-formulas/README.md](references/restaurant-bi-formulas/README.md),V2.1.5 蒸馏自两段餐饮连锁 BI 履职 + 39 个生产 ETL,全脱敏) | | 不知道用哪个 | 看 Part B "推荐工作流" 章节,或直接读各 Part 章节末尾的"实战 ID 速查" |

> 作者:马甲(Part B/C/D/E 实证)+ 观远 CTO 张进(B-17 SmartETL 改写方法论 + Part C 自定义图表经验)+ OpenAI Codex(ExecPlan 规范) > 版本:V3.1.4(2026-06-26)· 环境:Node ≥20 · 前置:官方全家桶 npm i -g @guandata/guanskill && guanskill install-skill(装齐 guancli / guanvis / guanetl / guanwf / guands + 各自 AI skill)· 认证guancli auth login(全家桶共用一套 profile,本 skill 不再单独要 config.json)· 作用域:本地私有 BI 实例 > 安装git clone https://github.com/maojiebc/majia-guanyuan.git,或 npx github:maojiebc/majia-guanyuan install > 兼容工具:Claude Code · OpenClaw · Codex · Hermes (gbrain) · 任何支持 SKILL.md frontmatter 的 agent。详见 [README · 兼容性](README.md#-兼容性--compatibility) 与 [AGENTS.md](AGENTS.md)。 > > 🆕 V3.1.4 更新(2026-06-26):官方全家桶 06-24 版本对齐——guanskill 0.1.7→0.1.8,子包对齐最新:guancli 1.0.35→1.0.36(metric 新增指标主题/指标目录创建 + 补 SuperApp 创建指导 guancli app create + 页面资源搜索/展示增强)、guanvis 0.1.27→0.1.28(修复自定义图表重复生成数据视图卡片,减少资源包冗余/冲突配置)、guanetl 0.1.16→0.1.17 / guands 0.1.16→0.1.17 / guanwf 0.1.5→0.1.6(三者均仅 install-skill 适配 WorkBuddy 目录,CLI 行为无变化)。路由总表版本号 + 能力描述刷新;manifest/README/package 基线 pin 同步。护城河零删减。 > > 🆕 V3.1.3 更新(2026-06-22):官方全家桶 06-17 版本对齐——guanskill 0.1.6→0.1.7,子包对齐最新:guancli 1.0.34→1.0.35(login status 服务端 profile 校验登录态 + 数据集字段输出加 raw name/alias 误用提示,ETL/指标配置前排查字段引用)、guanvis 0.1.26→0.1.27(publish/upload 发布前不再对 Card 做额外导入探测,减少无权限/跨环境误拦截)、guanetl 0.1.15→0.1.16(save --dry-run 保存影响预览 + run 执行前提示上游数据集失败态 + preview 提示 LEFT JOIN 桥接列全空样本)、guands 0.1.15→0.1.16(dataset list 统一目录搜索接口);guanwf 0.1.5 无变化。路由总表版本号 + 能力描述刷新;Part B 实测边界补 0.1.16 note;manifest/README/package 基线 pin 同步。同时滚入 rank9 保守去冗余(B-0.5/B-11 同行压指针,护城河零删减)。 > > 🆕 V3.1.2 更新(2026-06-17):专业 skill 评审团驱动的质量迭代(8 视角审 + 对抗校验 + 红队)——① 删除顺序矛盾实测定案:workshop513 真实独立 ETL 净零回归确认 ds-first 正确(先删输出数据集再删 ETL,两步皆成功不报 6001)、etl-first 撞 2002 输出数据集已存在;据此修正 B-0.5 line 219 + Part D 删除段两处把方向写反/错记 6001 的旧文,统一到 B-7.1。② page?force=true 级联删页纳入 B-7.0 安全闸(条件句:本地有 guanvis 源可重建才免对账)+ 红线括号补全。③ 事实性卫生:README 双语移除已下架 guanetl delete、AGENTS.md/marketplace.json 元数据 drift 修正、References 行数回填、description 瘦身、餐饮锚点死链修、config 死字段注释。纯 correctness+safety+hygiene,护城河零删减。 ---

🧭 路由层:标准活交给官方全家桶

> V3.0.0 心法:观远官方已把"查数 / 建卡 / ETL / 数据流 / 数据源 / 截图 / 管理"做成公网全家桶(npm i -g @guandata/guanskill)。本 skill 不再自造这些轮子——标准活一律路由给官方,本 skill 专攻官方 DSL/命令覆盖不到的"业务实战 + 引擎级踩坑"(Part B–E + 方法论 + 公式库)。

⚠️ 跨 Part 通用工作原则

  1. 所有数值计算必须跑代码 —— 禁止在思考里口算百分比、环比、除法、占比。
  2. 必须确认数据范围 —— 用户没明确日期范围时必须追问("看哪段时间?今天 / 本周 / 上月?"),不要自己假设。
  3. 遇到意外错误立即落档 —— 把新坑写进对应章节(Part B 报错 → references/part-b-errors.md,Part C → references/part-c-payload-json.md)或 ExecPlan 的 Surprises & Discoveries(B-17.11)。格式:### [YYYY-MM-DD] 标题 + 场景 / 问题(含 task error 原文、payload 片段)/ 判断。
  4. 写操作前先治理、删除前先对账 —— 见 Part B-〇 工作流 + B-7.0 删除安全闸。

官方全家桶 ↔ 本 skill 分工总表

> 前置:npm i -g @guandata/guanskill && guanskill install-skill(装齐 7 个命令 + AI skill);认证 guancli auth login,全家桶共用一套 profile。

| skill | 版本 | 角色 | 什么需求路由给它 | |---|---|---|---| | guancli | 1.0.36 | 只读分析中枢 + 表单 CRUD + 指标 CRUD | 查 ETL / dsId / page / card / 血缘 / 节点 SQL、ds execute-sql 跨集 SQL、ds search --id 精确解析、metric query 同比/累计/Top N、metric_attribution 归因、task 排查、ChatBI 问数、card preview 取数导出、form 数据 CRUD、指标建/改/删(metric create/edit/delete,1.0.32 起从只读转可写) + metric by-dataset 按数据集 ID 反查原子指标并沿血缘展开下游复合/衍生(1.0.34 新);login status 服务端 profile 校验登录态 + 数据集字段输出加 raw name/alias 误用提示(1.0.35 新,ETL/指标配置前排查字段引用)metric 加指标主题/指标目录创建 + 补 SuperApp 创建指导(guancli app create)+ 页面资源搜索/展示增强(1.0.36 新) | | guanvis | 0.1.28 | 标准建卡 + Page 装配 + 服务端截图 | 74 种图表 JS DSL、双 Y 轴、同环比/累计/排名/占比、selector 联动、tab/栅格、AreaTitle 分区标题 + CardGroup 卡片组(0.1.24 新)、custom chart(ECHARTS_LITE/SDK)、guanvis pack/publish/uploadguanvis screenshot 出 PNG、指标卡片构建(metric init)、publish --allow-overwrite 覆盖前自动建迁移备份、资源包打包一致性校验提前发现重复/冲突资源(0.1.26)、publish/upload 发布前不再对 Card 做额外导入探测、减少无权限/跨环境误拦截(0.1.27)修复自定义图表重复生成数据视图卡片、减少资源包冗余/冲突配置(0.1.28) | | guanetl | 0.1.17 | ETL 写操作闭环 | 单个 ETL 新建/改/lint/preview/save/run/schedule/mkdir-pair(源文件 etl/etl.go+SQL 驱动,黑盒 direct-save);0.1.14 移除 delete 命令(高风险操作不再暴露,删 ETL 走 BI UI 或 API);修复 save 导出空 dataSource 覆盖服务端绑定的 bug;0.1.15 save 输出数据集保护增强(保留级联配置)+ 追加写入场景行结构提前校验0.1.16 save --dry-run 保存影响预览 + run 执行前提示上游数据集失败态 + preview LEFT JOIN 桥接列全空告警 | | guanwf 🆕 | 0.1.6 | 工作流(数据流 + Python 节点多节点 DAG)| 工作流引擎里建/编/存/跑工作流,workflow.go DSL 统一数据流创建/编辑/导出/预览/保存/运行;0.1.5 新增 Python 节点 DSL + 本地校验 + 保存采用三方合并降低覆盖线上数据流配置风险guanwf edit → 改 etl/ → export → save;只读查 guancli workflow(隐藏命令) | | guands | 0.1.17 | 数据源 + 数据集 CRUD | 建数据连接(MySQL/PG/Oracle)、dataset create-db/create-query/import/replace-data、批量移删、增量更新、定时调度、计算字段、dataset alias 改字段展示名、dataset update-fields 批量改字段展示名/注释(0.1.15 新,命令行或 JSON + --dry-run)+ import 增 --header-row/--encoding/--delimiter + refresh --overwrite 全量覆盖dataset list 统一目录搜索接口(0.1.16)| | guanvis screenshot | — | 导出 | 页面 PNG/PDF 服务端截图(彻底取代 legacy guanexport)| | ~~guanexport / guanadmin~~ | 已退出 | — | 2026-06-04 起从 guanskill 聚合包移除、npm 也下架:导出全归 guanvis screenshot;管理员级操作(dynamicCode / adminToken / svc SQL)已不在公开全家桶,需另装 standalone 或走 BI UI | | majia-guanyuan(本 skill) | 3.1.4 | 业务实战 + 引擎级踩坑 + 方法论 | Part B ETL 整库治理判断 + 10 类引擎报错 + 双源字段审计 + B-17 全链路重写/ExecPlan · Part C 既有页自定义图表 HTML/JS 注入排障 + 固定卡/overlay · Part C-12 HTML 应用化看板 + descriptor patch 联 dataView + 视觉设计底线(反 AI 味红线 + 五层验收) · Part D v7 草稿-发布状态机绕过 + 节点化静默坑 + phoneLayout · Part E SuperApp 反向工程 · AI-native ADS 方法论 · 餐饮 BI 公式库 |

一句话路由:标准查数 → guancli;标准建卡/发布/截图 → guanvis;标准 ETL → guanetl;数据流 → guanwf;数据源/数据集 → guands任何一个遇到官方 DSL/命令够不着的字段、报错、状态机、反向工程、业务口径——回到本 skill 对应 Part。

为什么还要本 skill:官方命令封装在"高层 DSL + 黑盒"那层,遇到 ① 整库治理的判断逻辑(砍哪张表/哪个字段)② BI 引擎运行期/语义报错(<> NULL 吞行、CTE 中文别名、UNION 列数)③ v7 草稿-发布状态机绕过 ④ custom chart 内部 dataView 联 selector ⑤ SuperApp 脚手架没暴露的 form 建表 / LLM 中转 bug ⑥ AI-native 的 schema 重搭判断 ⑦ 餐饮业务口径——官方都够不着,这就是本 skill 的地盘

降歧义:5 个官方 skill + 本 skill 同时启用时,只读场景(查 dsId/ETL)可能在 guancli 与本 skill 间双触发。本 skill 不与官方抢只读——遇到纯查询/取数,直接路由 guancli,别自己拼 API。

🔄 官方全家桶更新 SOP(高频操作)

观远官方迭代节奏快(平均每周 1–2 次),本 skill 需要跟着对齐。以下是完整更新链路——从检查到落地,一条龙。

Step 0. 检查是否有新版本

# 看本机当前全家桶版本
guanskill version

# 看 npm 上最新聚合包版本
npm view @guandata/guanskill version

# 逐个看子包最新版本(聚合包可能滞后)
npm view @guandata/guancli version
npm view @guandata/guanvis version
npm view @guandata/guanetl version
npm view @guandata/guands version
npm view @guandata/guanwf version

如果 npm 版本 > 本机版本 → 继续 Step 1。否则无需更新。

Step 1. 升级 CLI(npm 聚合包)

# 升级到最新聚合包(装到你的 npm 全局 prefix —— 先 `npm prefix -g` 确认当前目标)
npm i -g @guandata/guanskill@latest

# 验证新版本
guanskill version

> 安装路径坑(双装滞后)guanskill 的 forwarder 跟着 which guancli 解析到的 prefix 走。若曾用不同 node(如 Homebrew node 的 /opt/homebrew vs nvm/asdf/独立 ~/.local)装过两份,PATH 靠前那份会"赢",而 npm i -g 只更新当前 prefix 的那份、另一份滞后 →「升了却没生效 / 本地副本常滞后」。排查:which -a guancli 看是否多份;统一到单一 prefix(多余的用 npm uninstall -g @guandata/guanskill --prefix 删掉)。

Step 2. 升级 AI Skill(SKILL.md + references)

# install-skill 把每个子包的 SKILL.md + references/ 装到 ~/.agents/skills//
guanskill install-skill

落点:~/.agents/skills/{guancli,guanvis,guanetl,guands,guanwf}/。这些是 agent 路由用的 skill 定义,和 CLI 二进制分开更新。

Step 3. 读 Changelog,摘要变更

# 各子包 CHANGELOG.md 在 npm 包目录下
GUANSKILL_DIR=$(npm root -g)/@guandata/guanskill/node_modules/@guandata
for pkg in guancli guanvis guanetl guands guanwf; do
  echo "=== $pkg ===" && head -30 "$GUANSKILL_DIR/$pkg/CHANGELOG.md" 2>/dev/null && echo
done

重点关注:新增/移除命令、DSL 新组件、bug 修复(尤其影响 B-0.5 / Part C / Part D 的)、breaking change。

Step 4. 迭代 majia-guanyuan

按 changelog 摘要,更新以下位置(有改动的才改):

| 位置 | 改什么 | |------|--------| | 路由总表(本文件 官方全家桶 ↔ 本 skill 分工总表) | 版本号 + 能力描述 | | V3.x.x 更新 callout(本文件顶部 > 🆕) | 新版本摘要 | | Part B 实测边界 callout | 如果 guanetl 有 bug 修复 | | Part D guanvis 版本引用 | 如果 guanvis 版本变了 | | manifest.json / package.json | version + description 里的版本号 | | README.md / README.en.md | 版本徽章 + 版本记录段(≤3 条) | | CHANGELOG.md | 新增 [x.y.z] — YYYY-MM-DD 条目 |

版本号规则:官方对齐 = patch;影响 skill 自身逻辑(如 B-0.5 降级)= minor

Step 5. 同步 + 发布

# 同步到已安装 skill 目录
cp SKILL.md CHANGELOG.md ~/.agents/skills/majia-guanyuan/

# commit + push(或走 /majia-ota-skill 完整发布链)

快速一键检查(日常用)

# 一行看完「本机 vs npm 最新」差异
echo "LOCAL:" && guanskill version && echo "---" && echo "NPM latest:" && npm view @guandata/guanskill version

通用错误码处理

| 状态码 | 处理 | |--------|------| | 500 | 终止,服务器问题 | | 401 | 终止,登录失效(guancli auth login 重登) | | 403 | 终止,无权限 | | 404 | 终止,资源不存在 |


🅱️ Part B:ETL 治理与写入(V1.0)

> 基于 @guandata/guancli@1.0.36 的实证记录。所有 API 路径、payload 字段、报错信息、治理判断维度均来自真实跑通的请求。覆盖整库治理扫描 + 60+ 张 ETL 创建/重构/修复/删除的实战。 > > ⚠️ 官方全家桶已把 BI 写操作拆成兄弟 skill 并全部公网化(2026-06-03,npm i -g @guandata/guanskill):标准 ETL 写入有 guanetl、工作流数据流有 guanwf、数据源/数据集有 guands但 Part B 这套基于 guancli fetch + payload 的实战手册仍是底层事实源——直接命中 API 路径 / payload 字段 / 报错码 / 治理判断的部分官方命令封装不到。遇到标准化 ETL 写入可路由到 guanetl,但整库治理扫描、direct-save、payload_json、SmartETL 全链路重写、10 类报错速查继续走本 skill。 > > 🧪 实测边界(2026-06-04 · workshop513 · BI 8.2.1-hf6):guanetl edit 的 base→etl.go 逆向在 0.1.12 / 0.1.13 完全失效(空 return []Node{},5/5 ETL 全复现、-v 无报错);save 的输出绑定 guard 也误触发。0.1.14 两个 bug 均已修复(2026-06-09 workshop513 实测:ads_会员经营任务池 6 节点 edit→export→lint→save 全链路通过)。改现有 ETL 现在可以走 guanetl edit 正常路径了。B-0.5 绕过方案仍保留作 fallback 参考(万一其他 BI 版本 / 节点类型仍触发)。 > > ⚡ 0.1.14 修复确认(2026-06-09 复测):① editetl.go(Wall 1)→ ✅ 已修,6 节点完整逆向为 BasicInputDataset×4 + BasicSqlScript + BasicOutputDatasetInDir;② save 输出绑定 guard 误触发(Wall 2)→ ✅ 已修,save 直接成功不再拦截。另:0.1.14 移除了 delete 命令,删 ETL 改走 BI UI 或直接 DELETE /api/etl/ API。0.1.15(2026-06-15)进一步增强 save 输出数据集保护(保留级联相关配置)+ 对追加写入场景的行数据结构提前校验——改 ETL 走 guanetl edit 正常路径更稳。0.1.16(2026-06-17)再加 save --dry-run 保存影响预览 + run 执行前提示上游数据集失败态 + preview 提示 LEFT JOIN 桥接列全空样本,改 ETL 前可先 --dry-run 看影响面。0.1.17(2026-06-24)仅 install-skill 适配 WorkBuddy 目录,ETL 行为无变化。

B-0.5 guanetl edit 失效时的绕过方案(0.1.12–0.1.13 历史;0.1.14 已修复,保留作 fallback)

> 0.1.14 已修复 edit 空 etl.go + save 输出绑定 guard 两 bug(确认详见上方 Part B 实测边界段),正常直接用 guanetl edit;以下绕过方案保留为 fallback——特定 BI 版本 / 节点类型仍触发时用。

原三道墙(guanetl 0.1.12–0.1.13,0.1.14 已全部修复):

  1. ~~edit 的 base→etl.go 逆向出空~~ → 0.1.14 已修
  2. ~~save 撞输出绑定 guard 误触发~~ → 0.1.14 已修
  3. save 的合并对「身份字段」base 优先(改 ETL 名 / 节点名被覆盖)+ 输出 dsId churn → 未验证是否修复,改名仍建议走 guands dataset rename / alias

→ Fallback 路径(仅在 guanetl edit 仍有问题时使用):

  • 纯改名 / 字段展示名 → 别碰 ETL 图,直接 guands dataset rename / guands dataset alias
  • 改逻辑 / 改结构(加节点、改 SQL)不可变重建(最稳):读 _base_etl.json 拿旧定义 → guanetl create 写一份新 outputDsName 的新 ETL → export/lint/save/verify → 旧 ETL 退役。
  • 高级逃生(仅在没法重建时):手工构造 _exported.json = fresh _base 的 actions + 保留 output dataSource.dsId + 你的逻辑改动,再 guanetl save
  • 认证别绕:BI API 是 cookie/session 认证——写操作一律走 guanetl save / guands(它们持有正确会话)。

清理坑:~~guanetl delete --cascade~~(0.1.14 起无 delete 命令)。删 ETL + 孤儿输出集走 DELETE API,顺序必须先删输出数据集、再删 ETL(与 B-7.1 一致);反过来先删 ETL → 2002 输出数据集已存在 失败。2026-06-17 · workshop513 实测定案(独立 DATAFLOW ETL,净零回归):DELETE /api/data-source/(ETL 还在)→ DataSource deleted 成功、不报 6001;再 DELETE /api/etl/ → 成功。churn 出的中间绑定是另一回事——删 ETL 后多为 NOT_FOUND 幽灵(ds get=1002 但 ds delete=6001,不可见、无害)。

B-〇. 推荐工作流(先治理再重建)

1. 治理扫描     ← 批量抓全部 ETL 原始 JSON,分析依赖、循环、复杂度
2. 决策保留     ← 用 8 维 ETL + 4 维字段判断:保留 / 合并 / 降级 / 删除
3. 设计分层     ← 按 ODS/DIM/DWD/DWS/APP 重新分配
4. 字段审计     ← 双源(page + etl)扫字段使用度,确定砍字段范围
5. 新建目录     ← v2 目录与旧目录并行,不动旧链路
6. 写入 ETL     ← 三节点骨架 INPUT→SQL→OUTPUT,本地编译 payload
7. 预览节点     ← etl preview 先看 OUTPUT 节点能不能出数据
8. 执行落表     ← execute + task get 轮询 + 拿 result.error
9. 对账切流     ← 新旧并行验证,下游看板/ETL 逐张迁移
10. 清理旧链路  ← 先 DELETE data-source,再 DELETE etl(顺序不能反)

跳过治理直接动手 = 把同样混乱重做一遍。第 1–4 步是写 ETL 之前最值钱的活。


B-1. API 全图(11 个已实测 endpoint)

🔧 写入类(POST)
POST /api/directory                  ← 建目录(dirType=ETL 或 DATA_SET)
POST /api/etl/direct-save --stdin    ← 创建/更新 ETL(payload 有 dataFlowId 即更新)
POST /api/etl/execute                ← 触发执行 {"dataFlowId":"..."} → taskId

📖 读取类(GET)
GET  /api/etl/                   ← ETL 完整定义(含 actions/sql/relativeFieldAlias)
GET  /api/directory/ETL/authorized-tree       ← ETL 目录树
GET  /api/directory/DATA_SET/authorized-tree  ← 数据集目录树
GET  /api/task/              ← 任务状态 + 错误详情(关键修 bug 入口)

🗑️ 删除类(DELETE)
DELETE /api/data-source/       ← 删数据集(必须先于 etl 删)
DELETE /api/etl/                 ← 删 ETL(输出数据集还在 → 失败)

🔍 探测类(OPTIONS)
OPTIONS /api/              ← 返回 Allow 头,反推支持的 method

B-1.1 反推未知 endpoint 的方法

# 步骤 1:探 method 集合(最高效)
guancli fetch OPTIONS /api/
# Allow: POST,GET,HEAD,DELETE,OPTIONS

# 步骤 2:盲发 POST,根据错误类型判断
# - "No static resource X"               → endpoint 不存在
# - "Request method 'X' is not supported" → endpoint 存在但方法不对
# - "InvalidJSON" / "missing field"       → endpoint 对,body 不对(开始迭代)
# - "ResourceId(...) ResourceNotExist"    → endpoint 模式错误

# 步骤 3:根据错误反推 schema

血泪经验:BI 内部 endpoint 命名不一致——data-source(带连字符)、dataflow(无连字符)、etl(无连字符)、directory/ETL(驼峰大写)混用。靠 OPTIONS 探测比盲发 POST 高效 10 倍。


B-2. 治理扫描:判断 ETL/字段去留

B-2.1 为什么扫描

观远 BI 用久了的常见症状:核心表互相循环引用、同份业务规则散落多张计算列、维表混入下游经营字段、大量已创建未运行的废弃 ETL、名实不符。不扫一遍直接动手,重建出来还是一团乱麻。

B-2.2 扫描 3 步走

# Step 1:列出范围
guancli etl tree

…

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [maojiebc](https://github.com/maojiebc)
- **Source:** [maojiebc/majia-guanyuan](https://github.com/maojiebc/majia-guanyuan)
- **License:** MIT
- **Homepage:** https://github.com/maojiebc/majia-guanyuan

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.