diff --git a/shortcuts/base/dashboard_block_create.go b/shortcuts/base/dashboard_block_create.go index 7d16d06b4..9b663d33b 100644 --- a/shortcuts/base/dashboard_block_create.go +++ b/shortcuts/base/dashboard_block_create.go @@ -23,7 +23,7 @@ var BaseDashboardBlockCreate = common.Shortcut{ baseTokenFlag(true), dashboardIDFlag(true), {Name: "name", Desc: "block name", Required: true}, - {Name: "type", Desc: "block type: column / bar / line / pie / ring / area / combo / scatter / funnel / wordCloud / radar / statistics", Required: true}, + {Name: "type", Desc: "block type: column(柱状图)|bar(条形图)|line(折线图)|pie(饼图)|ring(环形图)|area(面积图)|combo(组合图)|scatter(散点图)|funnel(漏斗图)|wordCloud(词云)|radar(雷达图)|statistics(指标卡). Read dashboard-block-data-config.md before creating.", Required: true}, {Name: "data-config", Desc: "data config JSON object (table_name, series, count_all, group_by, filter, etc.)"}, {Name: "user-id-type", Desc: "user ID type: open_id / union_id / user_id"}, {Name: "no-validate", Type: "bool", Desc: "skip local data_config validation"}, diff --git a/shortcuts/base/dashboard_block_update.go b/shortcuts/base/dashboard_block_update.go index a194b03a2..3a6cc59e0 100644 --- a/shortcuts/base/dashboard_block_update.go +++ b/shortcuts/base/dashboard_block_update.go @@ -24,7 +24,7 @@ var BaseDashboardBlockUpdate = common.Shortcut{ dashboardIDFlag(true), blockIDFlag(true), {Name: "name", Desc: "new block name"}, - {Name: "data-config", Desc: "data config JSON object (table_name, series, count_all, group_by, filter, etc.)"}, + {Name: "data-config", Desc: "data config JSON: table_name, series|count_all (mutually exclusive), group_by, filter. See dashboard-block-data-config.md for details."}, {Name: "user-id-type", Desc: "user ID type: open_id / union_id / user_id"}, {Name: "no-validate", Type: "bool", Desc: "skip local data_config validation"}, }, diff --git a/skills/lark-base/SKILL.md b/skills/lark-base/SKILL.md index fc7108428..80d81d3fc 100644 --- a/skills/lark-base/SKILL.md +++ b/skills/lark-base/SKILL.md @@ -96,6 +96,9 @@ metadata: - 先通过 `+table-list` / `+field-list` 获取真实的表名、字段名 - 禁止凭自然语言猜测表名/字段名填入 workflow 配置 +## Dashboard(仪表盘/数据看板)模块 +**当用户提到 "仪表盘、dashboard、数据看板、图表、可视化、block、组件、添加组件、创建图表" 等仪表盘相关的关键词时,必须阅读** [lark-base-dashboard.md](references/lark-base-dashboard.md) 这个指引文档,了解仪表盘模块的命令和能力后再进行后续操作。 + ## 核心规则 1. **只使用原子命令** — 使用 `+table-list / +table-get / +field-create / +record-upsert / +view-set-filter / +record-history-list / +base-get` 这类一命令一动作的写法,不使用旧聚合式 `+table / +field / +record / +view / +history / +workspace` @@ -145,10 +148,7 @@ metadata: | 列表 / 获取表单 | `lark-cli base +form-list` / `+form-get` | 原子命令 | | 创建 / 更新 / 删除表单 | `lark-cli base +form-create` / `+form-update` / `+form-delete` | 一命令一动作 | | 列表 / 创建 / 更新 / 删除表单问题 | `lark-cli base +form-questions-list` / `+form-questions-create` / `+form-questions-update` / `+form-questions-delete` | 一命令一动作 | -| 列表 / 获取仪表盘 | `lark-cli base +dashboard-list` / `+dashboard-get` | 原子命令 | -| 创建 / 更新 / 删除仪表盘 | `lark-cli base +dashboard-create` / `+dashboard-update` / `+dashboard-delete` | 一命令一动作 | -| 列表 / 获取仪表盘 Block | `lark-cli base +dashboard-block-list` / `+dashboard-block-get` | 原子命令 | -| 创建 / 更新 / 删除仪表盘 Block | `lark-cli base +dashboard-block-create` / `+dashboard-block-update` / `+dashboard-block-delete` | 一命令一动作 | +| 创建/管理仪表盘及图表 | `+dashboard-* / +dashboard-block-*` | **必须先读** [lark-base-dashboard.md](references/lark-base-dashboard.md) | ## 操作注意事项 @@ -166,7 +166,6 @@ metadata: - **`+base-create / +base-copy` 结果返回规范**:创建或复制成功后,回复中必须主动返回新 Base 的标识信息。若返回结果里带可访问链接(如 `base.url`),要一并返回 - **`+base-create / +base-copy` 友好性规则**:`--folder-token`、`--time-zone`、复制时的 `--name` 都是可选项。用户没有特别要求时,不要为了这些可选参数额外打断;能直接创建/复制就直接执行 - **`+base-create / +base-copy` 权限处理(bot 创建)**:若 Base 由应用身份(bot)创建,创建或复制成功后默认继续使用 bot 身份为当前可用 user(指当前 CLI 中 auth 模块已登录且可用的用户身份)添加 `full_access`(管理员)权限,并在回复中明确授权结果(成功 / 无可用 user / 授权失败及原因)。若授权未完成,要继续给出后续引导(稍后重试授权或继续用 bot);owner 转移必须单独确认,禁止擅自执行 -- **dashboard 使用方式**:`+dashboard-create` 创建后返回 `dashboard_id`;Block 的 `data_config` 通过 JSON 字符串传入,支持 `@file.json` 读取文件 - **advperm 使用方式**:`+advperm-enable` 启用高级权限后才能管理角色(`+role-*`);`+advperm-disable` 是高风险操作,停用后已有自定义角色全部失效;操作用户必须为 Base 管理员;先读 [lark-base-advperm-enable.md](references/lark-base-advperm-enable.md) / [lark-base-advperm-disable.md](references/lark-base-advperm-disable.md) - **role 使用方式**:`+role-create` 仅支持 `custom_role`;`+role-update` 采用 Delta Merge(`role_name` 和 `role_type` 必须始终提供);`+role-delete` 不可逆且仅支持自定义角色;角色配置支持 `base_rule_map`(Base 级复制/下载)、`table_rule_map`(表级权限含记录/字段粒度)、`dashboard_rule_map`(仪表盘权限)、`docx_rule_map`(文档权限);写角色前先读 [role-config.md](references/role-config.md) - **表单 form-id**:通过 `+form-list` 获取;`+form-create` 返回的 `id` 即 `form-id`,可用于 `+form-questions-*` 操作 @@ -279,8 +278,7 @@ https://{domain}/base/{base-token}?table={table-id}&view={view-id} - [lark-base-role-create.md](references/lark-base-role-create.md) — `+role-create` 创建角色 - [lark-base-role-update.md](references/lark-base-role-update.md) — `+role-update` 更新角色 - [lark-base-role-delete.md](references/lark-base-role-delete.md) — `+role-delete` 删除角色 -- [lark-base-dashboard.md](references/lark-base-dashboard.md) — dashboard 命令索引(每个命令已拆到独立文档) -- [lark-base-dashboard-block.md](references/lark-base-dashboard-block.md) — dashboard block 命令索引(每个命令已拆到独立文档) +- [lark-base-dashboard.md](references/lark-base-dashboard.md) — dashboard 模块工作流指引 - [dashboard-block-data-config.md](references/dashboard-block-data-config.md) — Block data_config 结构、图表类型、filter 规则 - [lark-base-workflow.md](references/lark-base-workflow.md) — workflow 命令索引 - [lark-base-workflow-schema.md](references/lark-base-workflow-schema.md) — `+workflow-create/+workflow-update` JSON body 数据结构详解,包含触发器及各类节点的配置规则(强烈推荐) @@ -305,5 +303,4 @@ https://{domain}/base/{base-token}?table={table-id}&view={view-id} | [`form commands`](references/lark-base-form-create.md) | `+form-list / +form-get / +form-create / +form-update / +form-delete` | | [`form questions commands`](references/lark-base-form-questions-create.md) | `+form-questions-list / +form-questions-create / +form-questions-update / +form-questions-delete` | | [`workflow commands`](references/lark-base-workflow.md) | `+workflow-list / +workflow-get / +workflow-create / +workflow-update / +workflow-enable / +workflow-disable` | -| [`dashboard commands`](references/lark-base-dashboard.md) | `+dashboard-list / +dashboard-get / +dashboard-create / +dashboard-update / +dashboard-delete` | -| [`dashboard block commands`](references/lark-base-dashboard-block.md) | `+dashboard-block-list / +dashboard-block-get / +dashboard-block-create / +dashboard-block-update / +dashboard-block-delete` | +| [`dashboard / dashboard-block commands`](references/lark-base-dashboard.md) | `+dashboard-list / +dashboard-get / +dashboard-create / +dashboard-update / +dashboard-delete / +dashboard-block-list / +dashboard-block-get / +dashboard-block-create / +dashboard-block-update / +dashboard-block-delete` | diff --git a/skills/lark-base/references/dashboard-block-data-config.md b/skills/lark-base/references/dashboard-block-data-config.md index 77a8302a5..bf85fd51c 100644 --- a/skills/lark-base/references/dashboard-block-data-config.md +++ b/skills/lark-base/references/dashboard-block-data-config.md @@ -19,6 +19,20 @@ Block 的 `data_config` 字段因 `type` 不同而变化。本文档描述所有 | `radar` | 雷达图 | | `statistics` | 指标卡 | +## 字段类型与操作符速查(AI 决策用) + +> `+field-list` 返回的 `type` 字段映射:number(数字)、text(文本)、select(单选)、multi_select(多选)、datetime(日期时间)、checkbox(复选框)、user(人员) + +``` +文本/电话/URL/邮箱: is, isNot, contains, doesNotContain, isEmpty, isNotEmpty +数字/货币/进度: is, isNot, isGreater, isGreaterEqual, isLess, isLessEqual, isEmpty, isNotEmpty +单选: is, isNot, isEmpty, isNotEmpty +多选: is, isNot, contains, doesNotContain, isEmpty, isNotEmpty +日期/时间: is, isGreater, isGreaterEqual, isLess, isLessEqual, isEmpty, isNotEmpty +复选框: is (value: true/false) +人员/创建人/修改人: is, isNot, isEmpty, isNotEmpty +``` + ## data_config 通用结构 | 字段 | 类型 | 说明 | @@ -26,11 +40,42 @@ Block 的 `data_config` 字段因 `type` 不同而变化。本文档描述所有 | `table_name` | string | 关联数据表名称 | | `series` | `[{ "field_name": "xxx", "rollup": "SUM" }]` | 指标/Y 轴(与 `count_all` 二选一)。rollup 支持 `SUM` / `MAX` / `MIN` / `AVERAGE` | | `count_all` | boolean | COUNTA 聚合,统计所有记录数(与 `series` 二选一) | -| `group_by` | `[{ "field_name": "xxx", "mode": "integrated" }]` | X 轴分组维度 | +| `group_by` | `[{ "field_name": "xxx", "mode": "integrated", "sort": {...} }]` | X 轴分组维度。`mode` 必填,`sort` 可选,见下方说明 | | `filter` | object | 筛选条件 | | `filter.conjunction` | `"and"` / `"or"` | 筛选逻辑 | | `filter.conditions` | `[{ "field_name", "operator", "value" }]` | 筛选条件数组,value 类型因字段类型而异(见下方 filter 格式规则) | +## group_by 详细说明 + +### mode 枚举 + +| mode | 含义 | 适用场景 | +|------|------|----------| +| `integrated` | 聚合分组(默认) | 绝大部分场景,按字段值分组统计 | +| `enumerated` | 多值拆分统计 | 多选、人员等多值字段,将每个选项/人员拆开独立统计 | + +> 多选、人员等多值字段默认用 `enumerated`;其他字段默认用 `integrated`。 + +### sort 排序 + +| sort.type | 含义 | 典型场景 | +|-----------|------|----------| +| `group` | 按横轴值排序 | 按月份升序、按品类名字母序 | +| `value` | 按纵轴值排序 | 按销售额从大到小 | +| `view` | 按数据源记录顺序 | 保持原表行序(不常用) | + +`sort.order`:`asc`(升序)/ `desc`(降序) + +示例 — 柱状图按销售额降序: + +```json +{ + "table_name": "订单表", + "series": [{ "field_name": "金额", "rollup": "SUM" }], + "group_by": [{ "field_name": "类别", "mode": "integrated", "sort": {"type": "value", "order": "desc"} }] +} +``` + ## filter 格式规则 **基本结构:** @@ -46,6 +91,20 @@ Block 的 `data_config` 字段因 `type` 不同而变化。本文档描述所有 } ``` +**多条件示例(and/or):** + +```json +{ + "filter": { + "conjunction": "and", + "conditions": [ + { "field_name": "状态", "operator": "is", "value": "已完成" }, + { "field_name": "金额", "operator": "isGreater", "value": 1000 } + ] + } +} +``` + **操作符:** | 操作符 | 含义 | 是否需要 value | @@ -68,10 +127,10 @@ Block 的 `data_config` 字段因 `type` 不同而变化。本文档描述所有 | 文本 / 电话 / URL | string | is, isNot, contains, doesNotContain, isEmpty, isNotEmpty | `{"field_name":"姓名","operator":"contains","value":"张"}` | | 数字 | number | is, isNot, isGreater, isGreaterEqual, isLess, isLessEqual, isEmpty, isNotEmpty | `{"field_name":"金额","operator":"isGreater","value":0}` | | 单选 | string(选项名) | is, isNot, isEmpty, isNotEmpty | `{"field_name":"状态","operator":"is","value":"已完成"}` | -| 多选 | string 或 string[] | is, isNot, contains, doesNotContain, isEmpty, isNotEmpty | `{"field_name":"标签","operator":"contains","value":["紧急","重要"]}` | -| 日期时间 / 创建时间 / 修改时间 | number(毫秒时间戳) | is, isGreater, isGreaterEqual, isLess, isLessEqual, isEmpty, isNotEmpty | `{"field_name":"创建日期","operator":"isGreater","value":1711209600000}` | +| 多选 | string[](选多个)/ string(选单个) | is, isNot, contains, doesNotContain, isEmpty, isNotEmpty | 多选传数组如 `["标签1","标签2"]`;单选传单个字符串 | +| 日期时间 / 创建时间 / 修改时间 | number(Unix 毫秒时间戳,13位) | is, isGreater, isGreaterEqual, isLess, isLessEqual, isEmpty, isNotEmpty | `{"field_name":"创建日期","operator":"isGreater","value":1704038400000}` | | 复选框 | boolean | is | `{"field_name":"已审核","operator":"is","value":true}` | -| 人员 / 创建人 / 修改人 | string 或 string[](用户 ID) | is, isNot, isEmpty, isNotEmpty | `{"field_name":"负责人","operator":"is","value":"user_id_xxx"}` | +| 人员 / 创建人 / 修改人 | string 或 string[](用户 ID,格式 `ou_xxx`) | is, isNot, isEmpty, isNotEmpty | `{"field_name":"负责人","operator":"is","value":"ou_xxxxxxxxxxxxxxxx"}` | | 所有类型(为空/不为空) | 不需要 value | isEmpty, isNotEmpty | `{"field_name":"备注","operator":"isEmpty"}` | > `value` 类型为 `string | number | boolean | string[]`,需根据字段类型匹配正确格式 @@ -93,6 +152,16 @@ Block 的 `data_config` 字段因 `type` 不同而变化。本文档描述所有 ## 可复制模板 +**按意图选择模板:** +- 比较不同类别数值 → 柱状图 / 条形图 +- 看趋势变化 → 折线图 / 面积图 +- 看占比分布 → 饼图 / 环形图 / 词云 +- 多指标对比 → 组合图 +- 看两变量关系 → 散点图 +- 看流程转化 → 漏斗图 +- 看多维度评分 → 雷达图 +- 显示单个指标 → 指标卡(统计数字或记录数) + 最小柱状图: ```json @@ -103,7 +172,7 @@ Block 的 `data_config` 字段因 `type` 不同而变化。本文档描述所有 } ``` -最小饼/环图(按分类计数): +最小饼图/环形图(按分类字段统计行数占比): ```json { @@ -123,27 +192,84 @@ Block 的 `data_config` 字段因 `type` 不同而变化。本文档描述所有 } ``` -## 常见错误与修复 +条形图(横向柱状图): -- 同时存在 `series` 与 `count_all` - - 现象:后端/本地校验报互斥错误 - - 修复:仅保留其一;统计字段用 `series`,统计条数用 `count_all:true` -- 缺少 `table_name` - - 现象:本地校验缺少必填字段 - - 修复:指定数据源表名(使用表名,非表 ID) -- `series[].rollup` 大小写/取值不合法 - - 现象:本地校验提示枚举不支持 - - 修复:改为 `SUM|MAX|MIN|AVERAGE` 中之一(不区分大小写,CLI 会统一为大写;计数请使用 `count_all:true`) -- `group_by` 超出 2 个或字段名为空 - - 修复:保留前 2 个,或补齐 `field_name` -- 排序枚举不合法 - - 修复:`group_by.sort.type` 仅能为 `group|value|view`;`order` 为 `asc|desc` -- filter 写法不规范 - - 修复:`conjunction` 取 `and|or`;`conditions[].operator` 必须在本页表格列举的范围内;除 `isEmpty/isNotEmpty` 外需提供 `value` +```json +{ + "table_name": "表名", + "series": [{ "field_name": "数值字段", "rollup": "SUM" }], + "group_by": [{ "field_name": "分组字段", "mode": "integrated" }] +} +``` -## 指标卡(statistics)data_config 示例 +面积图(趋势填充): -统计数字字段求和: +```json +{ + "table_name": "表名", + "series": [{ "field_name": "数值字段", "rollup": "SUM" }], + "group_by": [{ "field_name": "时间字段", "mode": "integrated", "sort": {"type":"group","order":"asc"} }] +} +``` + +组合图(柱+线等多指标对比): + +```json +{ + "table_name": "表名", + "series": [ + { "field_name": "指标1", "rollup": "SUM" }, + { "field_name": "指标2", "rollup": "SUM" } + ], + "group_by": [{ "field_name": "分类字段", "mode": "integrated" }] +} +``` + +散点图(两变量相关性): + +```json +{ + "table_name": "表名", + "series": [{ "field_name": "Y轴字段(数值/指标)", "rollup": "SUM" }], + "group_by": [{ "field_name": "X轴字段(分类/维度)", "mode": "integrated" }] +} +``` + +漏斗图(流程转化): + +```json +{ + "table_name": "表名", + "series": [{ "field_name": "数值字段", "rollup": "SUM" }], + "group_by": [{ "field_name": "阶段字段", "mode": "integrated" }] +} +``` + +词云(文本频率): + +```json +{ + "table_name": "表名", + "count_all": true, + "group_by": [{ "field_name": "文本字段", "mode": "integrated" }] +} +``` + +雷达图(多维度评分): + +```json +{ + "table_name": "表名", + "series": [ + { "field_name": "维度1", "rollup": "SUM" }, + { "field_name": "维度2", "rollup": "SUM" }, + { "field_name": "维度3", "rollup": "SUM" } + ], + "group_by": [{ "field_name": "分类字段", "mode": "integrated" }] +} +``` + +指标卡(统计数字): ```json { @@ -152,7 +278,7 @@ Block 的 `data_config` 字段因 `type` 不同而变化。本文档描述所有 } ``` -统计记录行数: +指标卡(统计记录数): ```json { @@ -161,10 +287,27 @@ Block 的 `data_config` 字段因 `type` 不同而变化。本文档描述所有 } ``` -> `series` 与 `count_all` 二选一,不能同时使用。 +## 常见错误与修复 + +- 同时存在 `series` 与 `count_all` + - 现象:后端/本地校验报互斥错误 + - 修复:见「关键约束」章节的二选一规则 +- 缺少 `table_name` + - 现象:本地校验缺少必填字段 + - 修复:指定数据源表名(使用表名,非表 ID) +- `series[].rollup` 大小写/取值不合法 + - 现象:本地校验提示枚举不支持 + - 修复:改为 `SUM|MAX|MIN|AVERAGE` 中之一(不区分大小写,CLI 会统一为大写;计数请使用 `count_all:true`) +- `group_by` 超出 2 个或字段名为空 + - 修复:保留前 2 个,或补齐 `field_name` +- 排序枚举不合法 + - 修复:`group_by.sort.type` 仅能为 `group|value|view`;`order` 为 `asc|desc` +- filter 写法不规范 + - 修复:`conjunction` 取 `and|or`;`conditions[].operator` 必须在本页表格列举的范围内;除 `isEmpty/isNotEmpty` 外需提供 `value` ## 坑点 - **`count_all` 与 `series` 二选一** — 两者不能同时使用 - **filter `value` 类型因字段而异** — 文本/单选为 string,数字为 number,日期为毫秒时间戳,多选/人员可为 string[],复选框为 boolean;`isEmpty`/`isNotEmpty` 不需要 value - **`data_config` 结构随 `type` 变化** — 不同组件类型的字段不同,创建前务必确认类型对应的字段 +- **表名用 name,不是 ID** — `table_name` 对应的是表名称(如「订单表」),不是 `table_id` diff --git a/skills/lark-base/references/lark-base-dashboard-block-create.md b/skills/lark-base/references/lark-base-dashboard-block-create.md index fa64435fa..4db25cd39 100644 --- a/skills/lark-base/references/lark-base-dashboard-block-create.md +++ b/skills/lark-base/references/lark-base-dashboard-block-create.md @@ -1,106 +1,99 @@ # base +dashboard-block-create -> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。 -> **data_config 结构:** 参见 [dashboard-block-data-config.md](dashboard-block-data-config.md) 了解图表类型、通用字段和 filter 规则。 +> **前置条件:** 先阅读 [lark-base-dashboard.md](lark-base-dashboard.md) 了解整体工作流 +> **关键:** 创建前必须阅读 [dashboard-block-data-config.md](dashboard-block-data-config.md) 了解组件类型和 data_config 结构 -在仪表盘中创建一个 Block(图表组件)。 +在仪表盘中创建一个组件(Block)。 -## 推荐命令 +## 关键约束 -```bash -# 创建柱状图 block -lark-cli base +dashboard-block-create \ - --base-token bascn***************CtadY \ - --dashboard-id blkxxx \ - --name "订单趋势" \ - --type column \ - --data-config '{"table_name":"订单表","count_all":true,"group_by":[{"field_name":"金额","mode":"integrated"}],"filter":{"conjunction":"and","conditions":[{"field_name":"金额","operator":"isGreater","value":0},{"field_name":"状态","operator":"is","value":"已完成"},{"field_name":"负责人","operator":"isNotEmpty"},{"field_name":"创建日期","operator":"isGreaterEqual","value":1711209600000}]}}' +- **`type` 创建后不可修改**,创建时务必选对 +- **`data_config` 结构随 `type` 变化**,不同组件类型字段不同,**⚠️ 必须阅读 [dashboard-block-data-config.md](dashboard-block-data-config.md) 了解如何构造** +- **组件创建必须串行执行**,不能并发 -# 创建指标卡(统计数字字段求和) -lark-cli base +dashboard-block-create \ - --base-token bascn***************CtadY \ - --dashboard-id blkxxx \ - --name "销售总额" \ - --type statistics \ - --data-config '{"table_name":"数据表","series":[{"field_name":"数字","rollup":"SUM"}]}' +## 推荐命令 -# 创建指标卡(统计记录行数) +```bash +# 简单示例:创建一个指标卡(统计记录数) lark-cli base +dashboard-block-create \ - --base-token bascn***************CtadY \ - --dashboard-id blkxxx \ - --name "记录总数" \ + --base-token xxx \ + --dashboard-id blk_xxx \ + --name "总记录数" \ --type statistics \ - --data-config '{"table_name":"数据表","count_all":true}' + --data-config '{"table_name":"订单表","count_all":true}' -# 使用文件传入复杂 data_config +# 复杂配置用文件传入 lark-cli base +dashboard-block-create \ - --base-token bascn***************CtadY \ - --dashboard-id blkxxx \ - --name "销售漏斗" \ - --type funnel \ + --base-token xxx \ + --dashboard-id blk_xxx \ + --name "销售额趋势" \ + --type line \ --data-config @config.json ``` +完整流程参考 [lark-base-dashboard.md](lark-base-dashboard.md) 的「场景 1:从 0 到 1 创建仪表盘」 + ## 参数 | 参数 | 必填 | 说明 | |------|------|------| | `--base-token ` | 是 | Base Token | -| `--dashboard-id ` | 是 | 仪表盘 ID | -| `--name ` | **是** | Block 名称(允许重名) | -| `--type ` | **是** | Block 类型(见 [dashboard-block-data-config.md](dashboard-block-data-config.md) 类型枚举表) | -| `--data-config ` | 否 | 数据配置 JSON 对象(支持 `@file.json`) | -| `--user-id-type ` | 否 | 用户 ID 类型 | +| `--dashboard-id ` | 是 | 仪表盘 ID(从 `+dashboard-list/get` 获取) | +| `--name ` | **是** | 组件名称(允许重名) | +| `--type ` | **是** | 组件类型,见下方枚举值。**不同 type 对应不同的 data_config 结构**,常用:`column`(柱状图)、`line`(折线图)、`pie`(饼图)、`statistics`(指标卡) | +| `--data-config ` | 否 | 数据配置 JSON,**结构随 type 变化**。**⚠️ 必须阅读 [dashboard-block-data-config.md](dashboard-block-data-config.md) 了解如何构造** | +| `--user-id-type ` | 否 | 用户 ID 类型,filter 涉及人员字段时使用 | | `--dry-run` | 否 | 预览 API 调用,不执行 | -## API 入参详情 - -**HTTP 方法和路径:** - +### type 枚举值 + +| 值 | 说明 | +|----|------| +| `column` | 柱状图 | +| `bar` | 条形图 | +| `line` | 折线图 | +| `pie` | 饼图 | +| `ring` | 环形图 | +| `area` | 面积图 | +| `combo` | 组合图 | +| `scatter` | 散点图 | +| `funnel` | 漏斗图 | +| `wordCloud` | 词云 | +| `radar` | 雷达图 | +| `statistics` | 指标卡 | + +## 返回示例 + +```json +{ + "block": { + "block_id": "chtxxxxxxxx", + "name": "总记录数", + "type": "statistics", + "data_config": { + "table_name": "电商交易明细", + "count_all": true + } + }, + "created": true +} ``` -POST /open-apis/base/v3/bases/:base_token/dashboards/:dashboard_id/blocks -``` - -**Request Body:** - -| 字段 | 类型 | 必填 | 说明 | -|------|------|------|------| -| `name` | string | **是** | Block 名称(允许重名) | -| `type` | string | **是** | Block 类型枚举 | -| `data_config` | object | 否 | 数据配置(数据源、维度、指标、筛选等) | - -> Create 不支持 `layout`(layout 由后端自动计算) ## 返回重点 -| 字段 | 类型 | 说明 | -|------|------|------| -| `block_id` | string | Block ID | -| `name` | string | Block 名称 | -| `type` | string | Block 类型 | -| `layout` | object | 布局信息(只读,后端自动计算) | -| `data_config` | object | 数据配置 | - -## 工作流 +| 字段 | 说明 | +|------|------| +| `block.block_id` | 组件 ID,后续编辑/删除需要用到,务必记录 | +| `block.name` | 组件名称 | +| `block.type` | 组件类型 | +| `block.data_config` | 实际创建的数据配置(可能包含后端自动添加的默认值)| +| `created` | 是否创建成功 | > [!CAUTION] > 这是**写入操作** — 执行前必须向用户确认。 -1. 先确定图表类型(参见 [dashboard-block-data-config.md](dashboard-block-data-config.md))。 -2. JSON 较大时优先用 `@file.json`。 - -> [!TIP] -> CLI 会对 `data_config` 做轻量校验与规范化:`series[].rollup` 大写、`group_by[].sort.*` 小写;若需要跳过,使用 `--no-validate`。可直接参考文档尾部的“可复制模板”。 - -## 坑点 - -- **`name` 和 `type` 必填** — name 允许重名,type 不可在创建后修改。 -- **`layout` 只读** — 由后端自动计算,Create 不支持指定布局。 -- **`data_config` 结构随 `type` 变化** — 不同组件类型的字段不同,创建前务必确认类型对应的字段。 -- **`count_all` 与 `series` 二选一** — 两者不能同时使用。 -- **`user_id_type`** 仅在 filter 涉及人员字段时有意义。 ## 参考 -- [lark-base-dashboard-block.md](lark-base-dashboard-block.md) — block 索引页 +- [lark-base-dashboard.md](lark-base-dashboard.md) — dashboard 模块指引 - [dashboard-block-data-config.md](dashboard-block-data-config.md) — data_config 结构、图表类型、filter 规则 diff --git a/skills/lark-base/references/lark-base-dashboard-block-delete.md b/skills/lark-base/references/lark-base-dashboard-block-delete.md index 215b4bcee..d98939539 100644 --- a/skills/lark-base/references/lark-base-dashboard-block-delete.md +++ b/skills/lark-base/references/lark-base-dashboard-block-delete.md @@ -1,8 +1,8 @@ # base +dashboard-block-delete -> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。 +> **前置条件:** 先阅读 [lark-base-dashboard.md](lark-base-dashboard.md) 了解整体工作流。 -删除仪表盘中的一个 Block。 +删除仪表盘中的一个组件(Block),不可恢复。 ## 推荐命令 @@ -10,7 +10,7 @@ lark-cli base +dashboard-block-delete \ --base-token bascn***************CtadY \ --dashboard-id blkxxx \ - --block-id 9v7g********idcd + --block-id chtxxxxxxxx ``` ## 参数 @@ -22,19 +22,25 @@ lark-cli base +dashboard-block-delete \ | `--block-id ` | 是 | Block ID | | `--dry-run` | 否 | 预览 API 调用,不执行 | -## API 入参详情 +## 返回示例 -**HTTP 方法和路径:** - -``` -DELETE /open-apis/base/v3/bases/:base_token/dashboards/:dashboard_id/blocks/:block_id +```json +{ + "block_id": "chtxxxxxxxx", + "deleted": true +} ``` -## 工作流 +## 返回重点 + +| 字段 | 说明 | +|------|------| +| `block_id` | 被删除的组件 ID | +| `deleted` | 是否删除成功 | > [!CAUTION] > 这是**写入操作**且**不可逆** — 执行前必须向用户确认。 ## 参考 -- [lark-base-dashboard-block.md](lark-base-dashboard-block.md) — block 索引页 +- [lark-base-dashboard.md](lark-base-dashboard.md) — dashboard 模块指引 diff --git a/skills/lark-base/references/lark-base-dashboard-block-get.md b/skills/lark-base/references/lark-base-dashboard-block-get.md index db7c93a27..0994f6059 100644 --- a/skills/lark-base/references/lark-base-dashboard-block-get.md +++ b/skills/lark-base/references/lark-base-dashboard-block-get.md @@ -1,8 +1,8 @@ # base +dashboard-block-get -> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。 +> **前置条件:** 先阅读 [lark-base-dashboard.md](lark-base-dashboard.md) 了解整体工作流。 -获取仪表盘中单个 Block 的详情。 +获取仪表盘中单个组件的详情(包含 data_config 完整配置)。常用于:1) 查看组件的完整配置;2) 编辑组件前了解当前配置。 ## 推荐命令 @@ -10,7 +10,7 @@ lark-cli base +dashboard-block-get \ --base-token bascn***************CtadY \ --dashboard-id blkxxx \ - --block-id 9v7g********idcd + --block-id chtxxxxxxxx ``` ## 参数 @@ -24,35 +24,34 @@ lark-cli base +dashboard-block-get \ | `--format ` | 否 | 输出格式 | | `--dry-run` | 否 | 预览 API 调用,不执行 | -## API 入参详情 - -**HTTP 方法和路径:** - +## 返回示例 + +```json +{ + "block": { + "block_id": "chtxxxxxxxx", + "name": "柱状图", + "type": "column", + "data_config": { + "table_name": "电商交易明细", + "series": [{"field_name": "营销费用", "rollup": "SUM"}], + "group_by": [{"field_name": "品类", "mode": "integrated"}] + }, + "layout": {"x": 0, "y": 0, "w": 6, "h": 4} + } +} ``` -GET /open-apis/base/v3/bases/:base_token/dashboards/:dashboard_id/blocks/:block_id -``` - -**Query 参数:** - -| 参数 | 必填 | 说明 | -|------|------|------| -| `user_id_type` | 否 | 用户 ID 类型,默认 open_id(仅在 filter 涉及人员字段时使用) | ## 返回重点 -| 字段 | 类型 | 说明 | -|------|------|------| -| `block_id` | string | Block ID | -| `name` | string | Block 名称 | -| `type` | string | Block 类型 | -| `layout` | object | 布局信息(只读) | -| `layout.x` | int | X 坐标 | -| `layout.y` | int | Y 坐标 | -| `layout.w` | int | 宽度 | -| `layout.h` | int | 高度 | -| `data_config` | object | 数据配置 | +| 字段 | 说明 | +|------|-------------------------------| +| `block.block_id` | 组件 ID | +| `block.name` | 组件名称 | +| `block.type` | 组件类型(如 `column`/`line`/`pie`) | +| `block.data_config` | 数据配置(新建/编辑组件时可基于此字段修改) | +| `block.layout` | 布局信息(只读,x/y/w/h 坐标和尺寸) | ## 参考 -- [lark-base-dashboard-block.md](lark-base-dashboard-block.md) — block 索引页 -- [dashboard-block-data-config.md](dashboard-block-data-config.md) — data_config 结构详解 +- [lark-base-dashboard.md](lark-base-dashboard.md) — dashboard 模块指引 diff --git a/skills/lark-base/references/lark-base-dashboard-block-list.md b/skills/lark-base/references/lark-base-dashboard-block-list.md index 28b0e0ea7..ff8a0155a 100644 --- a/skills/lark-base/references/lark-base-dashboard-block-list.md +++ b/skills/lark-base/references/lark-base-dashboard-block-list.md @@ -1,8 +1,8 @@ # base +dashboard-block-list -> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。 +> **前置条件:** 先阅读 [lark-base-dashboard.md](lark-base-dashboard.md) 了解整体工作流。 -分页列出仪表盘中的所有 Block(图表组件)。 +分页列出仪表盘中的所有组件(Block)。常用于:1) 查看仪表盘有哪些组件;2) 获取组件 ID 和类型用于后续编辑/删除。 ## 推荐命令 @@ -23,22 +23,26 @@ lark-cli base +dashboard-block-list \ | `--format ` | 否 | 输出格式:json / pretty / table / csv / ndjson | | `--dry-run` | 否 | 预览 API 调用,不执行 | -## API 入参详情 - -**HTTP 方法和路径:** - -``` -GET /open-apis/base/v3/bases/:base_token/dashboards/:dashboard_id/blocks +## 返回示例 + +```json +{ + "items": [ + {"block_id": "chtxxxxxxxx", "name": "图表", "type": "column"}, + {"block_id": "chtxxxxxxxx", "name": "总利润", "type": "statistics"} + ], + "total": 4, + "has_more": false +} ``` ## 返回重点 -| 字段 | 类型 | 说明 | -|------|------|------| -| `items` | []Block | Block 列表 | -| `total` | int | Block 总数 | -| `has_more` | bool | 是否还有更多 | -| `page_token` | string | 下一页分页标记(has_more=true 时返回) | +| 字段 | 说明 | +|------|------| +| `items` | 组件列表,每项包含 `block_id`(ID)、`name`(名称)、`type`(类型)| +| `total` | 组件总数 | +| `has_more` | 是否有更多组件(为 `true` 时需用 `page_token` 继续获取)| ## 坑点 @@ -46,4 +50,4 @@ GET /open-apis/base/v3/bases/:base_token/dashboards/:dashboard_id/blocks ## 参考 -- [lark-base-dashboard-block.md](lark-base-dashboard-block.md) — block 索引页 +- [lark-base-dashboard.md](lark-base-dashboard.md) — dashboard 模块指引 diff --git a/skills/lark-base/references/lark-base-dashboard-block-update.md b/skills/lark-base/references/lark-base-dashboard-block-update.md index 0262b3c18..38cc39eda 100644 --- a/skills/lark-base/references/lark-base-dashboard-block-update.md +++ b/skills/lark-base/references/lark-base-dashboard-block-update.md @@ -1,19 +1,37 @@ # base +dashboard-block-update -> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。 -> **data_config 结构:** 参见 [dashboard-block-data-config.md](dashboard-block-data-config.md) 了解图表类型、通用字段和 filter 规则。 +> **前置条件:** 先阅读 [lark-base-dashboard.md](lark-base-dashboard.md) 了解整体工作流 +> **关键:** 更新前必须阅读 [dashboard-block-data-config.md](dashboard-block-data-config.md) 了解 data_config 结构和更新规则 -更新仪表盘中 Block 的名称或数据配置。 +更新仪表盘中组件的名称或数据配置。 + +## 关键约束 + +- **不可修改 `type` 和 `layout`** — 只能更新 `name` 和 `data_config`。 +- **`data_config` 顶层按 key merge** — 只需传入要修改的顶层字段,未传的字段保留原值;但每个字段内部是全量替换(如传新 `filter` 会完整覆盖旧 `filter`)。 +- **`series` 与 `count_all` 二选一** — 且至少提供其一。 +- **表名用 name,不是 ID** — `table_name` 对应的是表名称(如「订单表」),不是 `table_id`。 +- **`user_id_type`** 仅在 filter 涉及人员字段时有意义。 + +> [!TIP] +> CLI 默认会对 `data_config` 做轻量校验与规范化;如需兼容特殊场景,可加 `--no-validate` 跳过。 ## 推荐命令 ```bash +# 示例 1:更新组件名称 +lark-cli base +dashboard-block-update \ + --base-token xxx \ + --dashboard-id blk_xxx \ + --block-id chtxxxxxxxx \ + --name "新名称" + +# 示例 2:更新数据配置(只传要改的字段,未传字段保留原值) lark-cli base +dashboard-block-update \ - --base-token bascn***************CtadY \ - --dashboard-id blkxxx \ - --block-id 9v7g********cd \ - --name "订单趋势v2" \ - --data-config '{"table_name":"订单表2","count_all":true,"group_by":[{"field_name":"金额2","mode":"integrated"}]}' + --base-token xxx \ + --dashboard-id blk_xxx \ + --block-id chtxxxxxxxx \ + --data-config '{"filter":{"conjunction":"and","conditions":[{"field_name":"状态","operator":"is","value":"已完成"}]}}' ``` ## 参数 @@ -24,41 +42,43 @@ lark-cli base +dashboard-block-update \ | `--dashboard-id ` | 是 | 仪表盘 ID | | `--block-id ` | 是 | Block ID | | `--name ` | 否 | 新名称 | -| `--data-config ` | 否 | 数据配置 JSON 对象 | -| `--user-id-type ` | 否 | 用户 ID 类型 | +| `--data-config ` | 否 | 数据配置 JSON。**结构随 block 的 `type` 变化**。**⚠️ 必须阅读 [dashboard-block-data-config.md](dashboard-block-data-config.md) 了解如何构造** | +| `--user-id-type ` | 否 | 用户 ID 类型,filter 涉及人员字段时使用 | +| `--no-validate` | 否 | 跳过 data_config 本地校验(用于兼容特殊场景) | | `--dry-run` | 否 | 预览 API 调用,不执行 | -## API 入参详情 - -**HTTP 方法和路径:** - +## 返回示例 + +```json +{ + "block": { + "block_id": "chtxxxxxxxx", + "name": "新名称", + "type": "column", + "data_config": { + "table_name": "订单表", + "series": [{"field_name": "金额", "rollup": "SUM"}], + "group_by": [{"field_name": "类别", "mode": "integrated"}] + } + }, + "updated": true +} ``` -PATCH /open-apis/base/v3/bases/:base_token/dashboards/:dashboard_id/blocks/:block_id -``` - -**Request Body:** - -| 字段 | 类型 | 必填 | 说明 | -|------|------|------|------| -| `name` | string | 否 | Block 名称 | -| `data_config` | object | 否 | 数据配置 | -> Update 不支持修改 `type` 和 `layout` +## 返回重点 -## 工作流 +| 字段 | 说明 | +|------|------| +| `block.block_id` | 组件 ID | +| `block.name` | 更新后的名称 | +| `block.type` | 组件类型(不可修改)| +| `block.data_config` | 更新后的数据配置 | +| `updated` | 是否更新成功 | > [!CAUTION] > 这是**写入操作** — 执行前必须向用户确认。 -> [!TIP] -> CLI 默认会对 `data_config` 做轻量校验与规范化(见 [dashboard-block-data-config.md](dashboard-block-data-config.md) 的“约束与本地校验”);如需兼容特殊场景,可加 `--no-validate` 跳过。 - -## 坑点 - -- **不可修改 `type` 和 `layout`** — 只能更新 `name` 和 `data_config`。 -- **`user_id_type`** 仅在 filter 涉及人员字段时有意义。 - ## 参考 -- [lark-base-dashboard-block.md](lark-base-dashboard-block.md) — block 索引页 -- [dashboard-block-data-config.md](dashboard-block-data-config.md) — data_config 结构详解 +- [lark-base-dashboard.md](lark-base-dashboard.md) — dashboard 模块指引 +- [dashboard-block-data-config.md](dashboard-block-data-config.md) — data_config 结构、图表类型、filter 规则 diff --git a/skills/lark-base/references/lark-base-dashboard-block.md b/skills/lark-base/references/lark-base-dashboard-block.md deleted file mode 100644 index c8d78eb0f..000000000 --- a/skills/lark-base/references/lark-base-dashboard-block.md +++ /dev/null @@ -1,25 +0,0 @@ -# base dashboard block shortcuts - -> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。 - -dashboard block(图表组件)相关命令索引。 - -## 命令导航 - -| 文档 | 命令 | 说明 | -|------|------|------| -| [lark-base-dashboard-block-list.md](lark-base-dashboard-block-list.md) | `+dashboard-block-list` | 分页列出仪表盘 Block | -| [lark-base-dashboard-block-get.md](lark-base-dashboard-block-get.md) | `+dashboard-block-get` | 获取 Block 详情 | -| [lark-base-dashboard-block-create.md](lark-base-dashboard-block-create.md) | `+dashboard-block-create` | 创建 Block | -| [lark-base-dashboard-block-update.md](lark-base-dashboard-block-update.md) | `+dashboard-block-update` | 更新 Block | -| [lark-base-dashboard-block-delete.md](lark-base-dashboard-block-delete.md) | `+dashboard-block-delete` | 删除 Block | - -## 相关 - -- [lark-base-dashboard.md](lark-base-dashboard.md) — 仪表盘管理 -- [dashboard-block-data-config.md](dashboard-block-data-config.md) — Block data_config 结构、图表类型、filter 规则 - -## 说明 - -- 聚合页只保留目录职责;每个命令的详细说明请进入对应单命令文档。 -- 所有 `+xxx-list` 调用都必须串行执行;若要批量跑多个 list 请求,只能串行执行。 diff --git a/skills/lark-base/references/lark-base-dashboard-create.md b/skills/lark-base/references/lark-base-dashboard-create.md index 0437db148..6215b4aac 100644 --- a/skills/lark-base/references/lark-base-dashboard-create.md +++ b/skills/lark-base/references/lark-base-dashboard-create.md @@ -1,8 +1,12 @@ # base +dashboard-create -> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。 +> **前置条件:** 先阅读 [lark-base-dashboard.md](lark-base-dashboard.md) 了解整体工作流。 -创建仪表盘。 +创建空白仪表盘。创建成功后务必记录返回的 `dashboard_id`,后续添加组件和管理仪表盘都需要用到。 + +## 关键约束 + +- **dashboard_id** 在 create 返回中取得,后续 get/update/delete 使用。 ## 推荐命令 @@ -41,36 +45,29 @@ lark-cli base +dashboard-create \ | `deepDark` | 深色 | | `futuristic` | 未来感 | -## API 入参详情 - -**HTTP 方法和路径:** +## 返回示例 +```json +{ + "dashboard_id": "blkxxxxxxxxxxxx", + "name": "数据分析仪表盘", + "theme": { + "theme_style": "default" + } +} ``` -POST /open-apis/base/v3/bases/:base_token/dashboards -``` - -**Request Body:** - -| 字段 | 类型 | 说明 | -|------|------|------| -| `name` | string | 仪表盘名称 | -| `theme` | object | 主题配置 | -| `theme.theme_style` | string | 主题风格 | ## 返回重点 -- 返回创建后的仪表盘对象,包含 `dashboard_id`。 - -## 工作流 +| 字段 | 说明 | +|------|------| +| `dashboard_id` | 仪表盘 ID(如 `blkxxxxxxxxxxxx`),后续操作都需要用到,务必记录 | +| `name` | 仪表盘名称 | +| `theme.theme_style` | 主题风格 | > [!CAUTION] > 这是**写入操作** — 执行前必须向用户确认。 -## 坑点 - -- **dashboard_id** 在 create 返回中取得,后续 get/update/delete 使用。 -- **theme_style** 是嵌套在 `theme` 对象下的字段,shortcut 自动包装为 `{"theme": {"theme_style": "..."}}`。 - ## 参考 -- [lark-base-dashboard.md](lark-base-dashboard.md) — dashboard 索引页 +- [lark-base-dashboard.md](lark-base-dashboard.md) — dashboard 模块指引 diff --git a/skills/lark-base/references/lark-base-dashboard-delete.md b/skills/lark-base/references/lark-base-dashboard-delete.md index 4cf57d9f7..d09b885a7 100644 --- a/skills/lark-base/references/lark-base-dashboard-delete.md +++ b/skills/lark-base/references/lark-base-dashboard-delete.md @@ -1,15 +1,15 @@ # base +dashboard-delete -> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。 +> **前置条件:** 先阅读 [lark-base-dashboard.md](lark-base-dashboard.md) 了解整体工作流。 -删除仪表盘。 +删除仪表盘(会同时删除其下所有组件,不可恢复)。 ## 推荐命令 ```bash lark-cli base +dashboard-delete \ --base-token VwGhb**************fMnod \ - --dashboard-id dshxxxxxxx + --dashboard-id blkxxxxxxx ``` ## 参数 @@ -20,23 +20,25 @@ lark-cli base +dashboard-delete \ | `--dashboard-id ` | 是 | 仪表盘 ID | | `--dry-run` | 否 | 预览 API 调用,不执行 | -## API 入参详情 +## 返回示例 -**HTTP 方法和路径:** - -``` -DELETE /open-apis/base/v3/bases/:base_token/dashboards/:dashboard_id +```json +{ + "dashboard_id": "blkxxxxxxxxxxxx", + "deleted": true +} ``` -## 工作流 +## 返回重点 -> [!CAUTION] -> 这是**写入操作**且**不可逆** — 执行前必须向用户确认。 +| 字段 | 说明 | +|------|------| +| `dashboard_id` | 被删除的仪表盘 ID | +| `deleted` | 是否删除成功 | -## 坑点 - -- 删除仪表盘会同时删除其下所有 Block,不可恢复。 +> [!CAUTION] +> 这是**写入操作**且**不可逆** — 执行前必须向用户确认。删除仪表盘会同时删除其下所有组件,不可恢复。 ## 参考 -- [lark-base-dashboard.md](lark-base-dashboard.md) — dashboard 索引页 +- [lark-base-dashboard.md](lark-base-dashboard.md) — dashboard 模块指引 diff --git a/skills/lark-base/references/lark-base-dashboard-get.md b/skills/lark-base/references/lark-base-dashboard-get.md index 4d74abc9b..7c16d9edb 100644 --- a/skills/lark-base/references/lark-base-dashboard-get.md +++ b/skills/lark-base/references/lark-base-dashboard-get.md @@ -1,15 +1,15 @@ # base +dashboard-get -> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。 +> **前置条件:** 先阅读 [lark-base-dashboard.md](lark-base-dashboard.md) 了解整体工作流。 -获取仪表盘详情,包括主题和组件列表。 +获取仪表盘详情(名称、主题配置、包含的所有组件列表)。常用于:1) 查看仪表盘有哪些组件;2) 获取组件 ID 用于后续编辑/删除。 ## 推荐命令 ```bash lark-cli base +dashboard-get \ --base-token VwGhb**************fMnod \ - --dashboard-id dshxxxxxxx + --dashboard-id blkxxxxxxx ``` ## 参数 @@ -21,28 +21,39 @@ lark-cli base +dashboard-get \ | `--format ` | 否 | 输出格式 | | `--dry-run` | 否 | 预览 API 调用,不执行 | -## API 入参详情 - -**HTTP 方法和路径:** - -``` -GET /open-apis/base/v3/bases/:base_token/dashboards/:dashboard_id +## 返回示例 + +```json +{ + "dashboard_id": "blkxxxxxxxxxxxx", + "name": "数据分析仪表盘", + "theme": { + "theme_style": "default" + }, + "blocks": [ + { + "block_id": "chtxxxxxxxx", + "block_name": "总净利润", + "block_type": "statistics" + }, + { + "block_id": "chtxxxxxxxx", + "block_name": "品类占比", + "block_type": "pie" + } + ] +} ``` ## 返回重点 | 字段 | 类型 | 说明 | |------|------|------| -| `dashboard_id` | string | 仪表盘 ID | +| `dashboard_id` | string | 仪表盘 ID(如 `blkxxxxxxxxxxxx`)| | `name` | string | 仪表盘名称 | -| `theme` | object | 主题配置 | | `theme.theme_style` | string | 主题风格:`default` / `SimpleBlue` / `DarkGreen` / `summerBreeze` / `simplistic` / `energetic` / `deepDark` / `futuristic` | -| `blocks` | []object | 组件列表 | -| `blocks[].block_id` | string | 组件 ID | -| `blocks[].block_name` | string | 组件名称 | -| `blocks[].block_type` | string | 组件类型 | +| `blocks` | []object | 组件列表,每项包含 `block_id`(组件ID)、`block_name`(名称)、`block_type`(类型,如 `column`/`line`/`pie`)| ## 参考 -- [lark-base-dashboard.md](lark-base-dashboard.md) — dashboard 索引页 -- [lark-base-dashboard-block.md](lark-base-dashboard-block.md) — Block 管理 +- [lark-base-dashboard.md](lark-base-dashboard.md) — dashboard 模块指引 diff --git a/skills/lark-base/references/lark-base-dashboard-list.md b/skills/lark-base/references/lark-base-dashboard-list.md index 733a9f92b..14a154a6b 100644 --- a/skills/lark-base/references/lark-base-dashboard-list.md +++ b/skills/lark-base/references/lark-base-dashboard-list.md @@ -1,8 +1,12 @@ # base +dashboard-list -> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。 +> **前置条件:** 先阅读 [lark-base-dashboard.md](lark-base-dashboard.md) 了解整体工作流。 -分页列出一个 Base 下的仪表盘。 +分页列出一个 Base 下的所有仪表盘。常用于:1) 查看当前有哪些仪表盘;2) 获取 dashboard_id 用于后续操作(如添加组件、查看详情)。 + +## 关键约束 + +- `+dashboard-list` 禁止并发调用;批量列多个 Base 时必须串行。 ## 推荐命令 @@ -21,23 +25,28 @@ lark-cli base +dashboard-list \ | `--format ` | 否 | 输出格式:json / pretty / table / csv / ndjson | | `--dry-run` | 否 | 预览 API 调用,不执行 | -## API 入参详情 - -**HTTP 方法和路径:** - -``` -GET /open-apis/base/v3/bases/:base_token/dashboards +## 返回示例 + +```json +{ + "items": [ + {"dashboard_id": "blkxxxxxxxxxxxx", "name": "商品总览仪表盘"}, + {"dashboard_id": "blkxxxxxxxxxxxx", "name": "订单总览仪表盘"}, + {"dashboard_id": "blkxxxxxxxxxxxx", "name": "销售数据分析仪表盘"} + ], + "total": 3, + "has_more": false +} ``` ## 返回重点 -- 返回 `items / total / page_token / has_more`。 -- `items` 仅含 `dashboard_id` 和 `name`。 - -## 坑点 - -- `+dashboard-list` 禁止并发调用;批量列多个 Base 时必须串行。 +| 字段 | 说明 | +|------|------| +| `items` | 仪表盘列表,每项包含 `dashboard_id`(ID)和 `name`(名称)| +| `total` | 总数 | +| `has_more` | 是否有下一页(为 `true` 时需用 `page_token` 继续获取)| ## 参考 -- [lark-base-dashboard.md](lark-base-dashboard.md) — dashboard 索引页 +- [lark-base-dashboard.md](lark-base-dashboard.md) — dashboard 模块指引 diff --git a/skills/lark-base/references/lark-base-dashboard-update.md b/skills/lark-base/references/lark-base-dashboard-update.md index 3b3c47443..1d22e5e89 100644 --- a/skills/lark-base/references/lark-base-dashboard-update.md +++ b/skills/lark-base/references/lark-base-dashboard-update.md @@ -1,6 +1,6 @@ # base +dashboard-update -> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。 +> **前置条件:** 先阅读 [lark-base-dashboard.md](lark-base-dashboard.md) 了解整体工作流。 更新仪表盘名称或主题。 @@ -9,7 +9,7 @@ ```bash lark-cli base +dashboard-update \ --base-token VwGhb**************fMnod \ - --dashboard-id dshxxxxxxx \ + --dashboard-id blkxxxxxxx \ --name "新名称" \ --theme-style default ``` @@ -37,31 +37,33 @@ lark-cli base +dashboard-update \ | `deepDark` | 深色 | | `futuristic` | 未来感 | -## API 入参详情 - -**HTTP 方法和路径:** - +## 返回示例 + +```json +{ + "dashboard": { + "dashboard_id": "blkxxxxxxxxxxxx", + "name": "新名称", + "theme": { + "theme_style": "default" + } + }, + "updated": true +} ``` -PATCH /open-apis/base/v3/bases/:base_token/dashboards/:dashboard_id -``` - -**Request Body:** -| 字段 | 类型 | 说明 | -|------|------|------| -| `name` | string | 仪表盘名称 | -| `theme` | object | 主题配置 | -| `theme.theme_style` | string | 主题风格 | +## 返回重点 -## 工作流 +| 字段 | 说明 | +|------|------| +| `dashboard` | 更新后的仪表盘对象 | +| `dashboard.name` | 新名称(如果更新了)| +| `dashboard.theme.theme_style` | 新主题(如果更新了)| +| `updated` | 是否更新成功 | > [!CAUTION] > 这是**写入操作** — 执行前必须向用户确认。 -## 坑点 - -- **theme_style** 是嵌套在 `theme` 对象下的字段,shortcut 自动包装为 `{"theme": {"theme_style": "..."}}`。 - ## 参考 -- [lark-base-dashboard.md](lark-base-dashboard.md) — dashboard 索引页 +- [lark-base-dashboard.md](lark-base-dashboard.md) — dashboard 模块指引 diff --git a/skills/lark-base/references/lark-base-dashboard.md b/skills/lark-base/references/lark-base-dashboard.md index eada30166..c5db1653a 100644 --- a/skills/lark-base/references/lark-base-dashboard.md +++ b/skills/lark-base/references/lark-base-dashboard.md @@ -1,24 +1,212 @@ -# base dashboard shortcuts +# Dashboard(仪表盘/数据看板)模块指引 > **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。 -dashboard 相关命令索引。 +Dashboard 是 Base 中的数据可视化看板,可以把表格数据变成**组件**(图表、指标卡等)进行展示。 -## 命令导航 +## 核心概念 -| 文档 | 命令 | 说明 | -|------|------|------| -| [lark-base-dashboard-list.md](lark-base-dashboard-list.md) | `+dashboard-list` | 分页列出仪表盘 | -| [lark-base-dashboard-get.md](lark-base-dashboard-get.md) | `+dashboard-get` | 获取仪表盘详情 | -| [lark-base-dashboard-create.md](lark-base-dashboard-create.md) | `+dashboard-create` | 创建仪表盘 | -| [lark-base-dashboard-update.md](lark-base-dashboard-update.md) | `+dashboard-update` | 更新仪表盘 | -| [lark-base-dashboard-delete.md](lark-base-dashboard-delete.md) | `+dashboard-delete` | 删除仪表盘 | +- **Dashboard(仪表盘)**:容器,包含多个组件 +- **Block(组件)**:仪表盘中的单个可视化元素(柱状图、折线图、饼图、指标卡等) +- **data_config**:组件的数据源配置(表名、字段、分组等) -## 相关 +## 能力速览 -- [lark-base-dashboard-block.md](lark-base-dashboard-block.md) — 仪表盘 Block(图表组件)管理 +| 你想做什么 | 用这些命令 | 关键文档 | +|------|-----------|---------| +| 创建/删除/改名称 | `+dashboard-create/delete/update` | 本页下方「仪表盘管理」 | +| 在仪表盘里添加组件 | `+dashboard-block-create` | 先读 [lark-base-dashboard-block-create.md](lark-base-dashboard-block-create.md),再读 [dashboard-block-data-config.md](dashboard-block-data-config.md) | +| 修改组件 | `+dashboard-block-update` | 先读 [lark-base-dashboard-block-update.md](lark-base-dashboard-block-update.md),再读 [dashboard-block-data-config.md](dashboard-block-data-config.md) | +| 查看仪表盘有哪些组件 | `+dashboard-get` 或 `+dashboard-block-list` | 本页下方「查看仪表盘」 | -## 说明 +## 典型场景工作流 -- 聚合页只保留目录职责;每个命令的详细说明请进入对应单命令文档。 -- 所有 `+xxx-list` 调用都必须串行执行;若要批量跑多个 list 请求,只能串行执行。 +### 场景 1:从 0 到 1 创建仪表盘 + +示例:搭建一个销售数据分析仪表盘 + +```bash +# 第 1 步:创建空白仪表盘 +lark-cli base +dashboard-create --base-token xxx --name "销售数据分析" +# 记录返回的 dashboard_id + +# 第 2 步:获取数据源信息 +lark-cli base +table-list --base-token xxx +lark-cli base +field-list --base-token xxx --table-id tbl_xxx + +# 第 3 步:规划应该创建哪些组件(根据用户需求确定组件类型和数量) +# 例如:总销售额(指标卡)、月度趋势(折线图)、品类占比(饼图) + +# 第 4 步:顺序创建每个组件(必须串行执行,不能并发) +# 重要:创建组件前,先阅读 [lark-base-dashboard-block-create.md](lark-base-dashboard-block-create.md) 了解命令参数 +# 再阅读 [dashboard-block-data-config.md](dashboard-block-data-config.md) 了解 data_config 结构、组件类型和 filter 规则 + +# 第 1 个组件 +lark-cli base +dashboard-block-create \ + --base-token xxx \ + --dashboard-id blk_xxx \ + --name "总销售额" \ + --type statistics \ + --data-config '{"table_name":"订单表","series":[{"field_name":"金额","rollup":"SUM"}]}' + +# 第 2 个组件(等上一个完成后再执行) +lark-cli base +dashboard-block-create \ + --base-token xxx \ + --dashboard-id blk_xxx \ + --name "月度趋势" \ + --type line \ + --data-config '{"table_name":"订单表","series":[{"field_name":"金额","rollup":"SUM"}],"group_by":[{"field_name":"月份","mode":"integrated"}]}' + +# 继续创建其他组件... +``` + +### 场景 2:在已有仪表盘上添加新组件 + +```bash +# 第 1 步:列出仪表盘,定位到当前仪表盘 +lark-cli base +dashboard-list --base-token xxx +# 获取目标 dashboard_id + +# 第 2 步:根据用户诉求规划组件类型和数据源 +# 建议先查看当前仪表盘已有组件,避免重复创建,或作为参考 +lark-cli base +dashboard-get --base-token xxx --dashboard-id blk_xxx + +# 第 3 步:获取数据源信息 +lark-cli base +table-list --base-token xxx +lark-cli base +field-list --base-token xxx --table-id tbl_xxx + +# 第 4 步:顺序创建每个新组件(必须串行执行,不能并发) +# 重要:先阅读 [lark-base-dashboard-block-create.md](lark-base-dashboard-block-create.md) 了解命令参数 +# 再阅读 [dashboard-block-data-config.md](dashboard-block-data-config.md) 了解 data_config 结构 +lark-cli base +dashboard-block-create \ + --base-token xxx \ + --dashboard-id blk_xxx \ + --name "新组件名" \ + --type column \ + --data-config '{...}' +``` + +### 场景 3:编辑已有组件 + +> [!IMPORTANT] +> `+dashboard-block-update` **不能修改组件的 `type`**(图表类型),只能更新 `name` 和 `data_config`。 +> 如需更换组件类型,必须先删除再重新创建。 + +```bash +# 第 1 步:列出仪表盘,定位到当前仪表盘 +lark-cli base +dashboard-list --base-token xxx + +# 第 2 步:列出组件,获取到目标组件 +lark-cli base +dashboard-block-list --base-token xxx --dashboard-id blk_xxx +# 获取目标 block_id +# 提示:查看已有组件可作为参考,或检查是否重复创建相似组件 + +# 第 3 步:获取组件当前详情 +lark-cli base +dashboard-block-get --base-token xxx --dashboard-id blk_xxx --block-id chtxxxxxxxx + +# 第 4 步:根据用户编辑诉求准备更新 +# 如果编辑诉求涉及数据源变更,需要先获取数据源信息 +lark-cli base +table-list --base-token xxx +lark-cli base +field-list --base-token xxx --table-id tbl_xxx + +# 第 5 步:执行更新 +# 重要:先阅读 [lark-base-dashboard-block-update.md](lark-base-dashboard-block-update.md) 了解命令参数 +# 再阅读 [dashboard-block-data-config.md](dashboard-block-data-config.md) 了解 data_config 更新规则 +lark-cli base +dashboard-block-update \ + --base-token xxx \ + --dashboard-id blk_xxx \ + --block-id chtxxxxxxxx \ + --data-config '{...}' +``` + +### 场景 4:读取仪表盘或组件现状 + +**选择查询方式:** +- 想看仪表盘整体结构(含主题、所有组件名称和类型)→ 用 **方式 A** +- 只想快速查看有哪些组件 → 用 **方式 B** +- 想看某个组件的详细 data_config 配置 → 用 **方式 C** + +```bash +# 第 1 步:列出仪表盘,定位到当前仪表盘 +lark-cli base +dashboard-list --base-token xxx + +# 第 2 步:根据用户诉求查看详情 + +# 方式 A:查看仪表盘整体情况(包含所有组件列表) +lark-cli base +dashboard-get --base-token xxx --dashboard-id blk_xxx + +# 方式 B:列出所有组件 +lark-cli base +dashboard-block-list --base-token xxx --dashboard-id blk_xxx + +# 方式 C:查看某个组件的详细配置 +lark-cli base +dashboard-block-get --base-token xxx --dashboard-id blk_xxx --block-id chtxxxxxxxx + +# 最后:把获取到的现状信息整理好告诉用户 +``` + +## 组件类型选择 + +组件 `type` 决定展示形式: + +| 用户想看什么 | 选什么 type | 说明 | +|-------------|------------|------| +| 数据趋势(时间变化) | line | 折线图组件 | +| 类别比较(谁高谁低) | column | 柱状图组件 | +| 占比分布(各部分比例) | pie | 饼图组件 | +| 单个关键指标 | statistics | 指标卡组件 | + +详细组件类型和 data_config 完整规则:[dashboard-block-data-config.md](dashboard-block-data-config.md) + +## 常见问题 + +**Q: 创建组件的命令和 data_config 怎么写?** +A: +1. 先读 [lark-base-dashboard-block-create.md](lark-base-dashboard-block-create.md) 了解 `--name`、`--type`、`--data-config` 等参数 +2. 再读 [dashboard-block-data-config.md](dashboard-block-data-config.md) 了解: + - 全部组件类型的可复制模板 + - filter 筛选条件格式 + - 字段类型与操作符对应表 + +**Q: 为什么组件创建失败了?** +A: 常见原因: +- `table_name` 用了 table_id 而不是表名(必须用表名称,如「订单表」) +- `series` 和 `count_all` 同时存在(必须二选一,互斥) +- 字段名拼写错误(必须用 `+field-list` 获取的真实字段名,禁止猜测) +- 组件创建并发执行(必须串行,等上一个完成再执行下一个) + +**Q: 可以一次创建多个组件吗?** +A: 不可以,必须串行执行。等上一个 `+dashboard-block-create` 完成后再执行下一个。 + +**Q: 组件的 `type` 创建后能改吗?** +A: 不能。`+dashboard-block-update` 只能修改 `name` 和 `data_config`,不能修改 `type`。 + +**Q: 更新组件的命令和 data_config 怎么写?** +A: +1. 先读 [lark-base-dashboard-block-update.md](lark-base-dashboard-block-update.md) 了解更新参数 +2. 再读 [dashboard-block-data-config.md](dashboard-block-data-config.md) 了解 data_config 结构 + +**data_config 更新策略(顶层 key merge)**: +- 只传入需要修改的顶层字段(如 `series`、`filter`) +- 未传的顶层字段(如 `group_by`)自动保留原值 +- 但每个传入的字段内部是**全量替换**(如传新 `filter` 会完整覆盖旧 `filter`) + +**Q: 查看已有组件有什么用?** +A: 在「添加新组件」或「编辑组件」前查看已有组件可以: +- 了解当前仪表盘已有哪些可视化 +- 避免重复创建相似的组件 +- 参考已有组件的 data_config 结构作为模板 + +## 命令详细文档 + +| CLI 命令 | 说明 | 详细文档 | +|----------|------|----------| +| `+dashboard-list` | 列出所有仪表盘 | [lark-base-dashboard-list.md](lark-base-dashboard-list.md) | +| `+dashboard-get` | 获取仪表盘详情(含所有组件)| [lark-base-dashboard-get.md](lark-base-dashboard-get.md) | +| `+dashboard-create` | 创建仪表盘 | [lark-base-dashboard-create.md](lark-base-dashboard-create.md) | +| `+dashboard-update` | 修改仪表盘 | [lark-base-dashboard-update.md](lark-base-dashboard-update.md) | +| `+dashboard-delete` | 删除仪表盘 | [lark-base-dashboard-delete.md](lark-base-dashboard-delete.md) | +| `+dashboard-block-list` | 列出组件 | [lark-base-dashboard-block-list.md](lark-base-dashboard-block-list.md) | +| `+dashboard-block-get` | 获取单个组件详情 | [lark-base-dashboard-block-get.md](lark-base-dashboard-block-get.md) | +| `+dashboard-block-create` | 创建组件 | [lark-base-dashboard-block-create.md](lark-base-dashboard-block-create.md) | +| `+dashboard-block-update` | 更新组件 | [lark-base-dashboard-block-update.md](lark-base-dashboard-block-update.md) | +| `+dashboard-block-delete` | 删除组件 | [lark-base-dashboard-block-delete.md](lark-base-dashboard-block-delete.md) |