Skip to content

Commit 50b4c68

Browse files
authored
fix(base): guide complete dashboard data recovery (#2144)
* fix(base): guide complete dashboard data recovery * fix(base): paginate complete dashboard reads
1 parent b546516 commit 50b4c68

6 files changed

Lines changed: 24 additions & 4 deletions

File tree

shortcuts/base/base_shortcuts_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -561,6 +561,8 @@ func TestBaseDashboardHelpGuidesAgents(t *testing.T) {
561561
wantTips: []string{
562562
"lark-cli base +dashboard-block-list --base-token <base_token> --dashboard-id <dashboard_id>",
563563
"Use returned block_id and type values",
564+
"--page-size 100",
565+
"until has_more=false",
564566
},
565567
},
566568
{
@@ -569,6 +571,7 @@ func TestBaseDashboardHelpGuidesAgents(t *testing.T) {
569571
wantTips: []string{
570572
"lark-cli base +dashboard-block-get --base-token <base_token> --dashboard-id <dashboard_id> --block-id <block_id>",
571573
"metadata such as name, type, layout, and data_config",
574+
"Text block content is stored in data_config.text",
572575
"computed chart result",
573576
},
574577
},
@@ -579,6 +582,11 @@ func TestBaseDashboardHelpGuidesAgents(t *testing.T) {
579582
"lark-cli base +dashboard-block-get-data --base-token <base_token> --block-id <block_id>",
580583
"does not need --dashboard-id",
581584
"computed chart protocol JSON",
585+
"complete dashboard export",
586+
"data_config.text",
587+
"does not support computed data",
588+
"use +data-query",
589+
"do not omit the block or guess values",
582590
},
583591
},
584592
{

shortcuts/base/dashboard_block_get.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ var BaseDashboardBlockGet = common.Shortcut{
2727
Tips: []string{
2828
"lark-cli base +dashboard-block-get --base-token <base_token> --dashboard-id <dashboard_id> --block-id <block_id>",
2929
"Use this command for block metadata such as name, type, layout, and data_config.",
30+
"Text block content is stored in data_config.text; include it when the user asks for all dashboard content.",
3031
"Use +dashboard-block-get-data when you need the computed chart result instead of metadata.",
3132
},
3233
DryRun: func(ctx context.Context, runtime *common.RuntimeContext) *common.DryRunAPI {

shortcuts/base/dashboard_block_get_data.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ var BaseDashboardBlockGetData = common.Shortcut{
2727
"This command does not need --dashboard-id.",
2828
"Use +dashboard-block-get first when you need block metadata like name, type, or data_config.",
2929
"This command returns computed chart protocol JSON directly, not wrapped block metadata.",
30-
"Text blocks do not have computed chart data; this shortcut is for chart/statistics blocks.",
30+
"For a complete dashboard export, read text blocks with +dashboard-block-get; their content is in data_config.text.",
31+
"If a chart type does not support computed data, inspect its data_config with +dashboard-block-get, then use +data-query with the same real table, dimensions, measures, and filters; do not omit the block or guess values.",
3132
},
3233
DryRun: func(ctx context.Context, runtime *common.RuntimeContext) *common.DryRunAPI {
3334
return dryRunDashboardBlockGetData(ctx, runtime)

shortcuts/base/dashboard_block_list.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ var BaseDashboardBlockList = common.Shortcut{
2727
Tips: []string{
2828
"lark-cli base +dashboard-block-list --base-token <base_token> --dashboard-id <dashboard_id>",
2929
"Use returned block_id and type values for +dashboard-block-get/update/delete/get-data.",
30+
"For a complete dashboard, use --page-size 100; while has_more=true, pass the returned page_token to --page-token and continue until has_more=false.",
3031
},
3132
Validate: func(ctx context.Context, runtime *common.RuntimeContext) error {
3233
_, err := common.ValidatePageSizeTyped(runtime, "page-size", 20, 1, 100)

skills/lark-base/SKILL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ metadata:
7070
| 表单题目创建/更新 | `+form-questions-create` / `+form-questions-update` | Base 内表单按 table 管理;先确定并复用真实 `table_id`。读 [lark-base-form-questions-create.md](references/lark-base-form-questions-create.md) / [lark-base-form-questions-update.md](references/lark-base-form-questions-update.md);题目显隐条件 `visible_rule` 结构见公共协议 [lark-base-filter-condition.md](references/lark-base-filter-condition.md) |
7171
| Base 内表单管理 | `+form-list/get/create/update/delete` / `+form-questions-list/delete` | 缺少或不确定归属时,先用 `+table-list``+base-block-list` 取得真实 `table_id`;这些命令使用 `--base-token + --table-id` 并在整个工作流中复用同一 `table_id`,删除前确认目标表单 |
7272
| 分享表单详情 | `+form-detail --share-token <share_token>` | 只接受表单分享链接里的 `share_token`,不要传 `--base-token` / `--form-id`;提交前读 [lark-base-form-detail.md](references/lark-base-form-detail.md) |
73-
| 仪表盘与组件 | `+dashboard-*` / `+dashboard-block-*` | 提到图表/看板/block 时先读 [lark-base-dashboard.md](references/lark-base-dashboard.md);组件 `data_config`[dashboard-block-data-config.md](references/dashboard-block-data-config.md);读取一个或多个图表计算结果用 `+dashboard-block-get-data` |
73+
| 仪表盘与组件 | `+dashboard-*` / `+dashboard-block-*` | 提到图表/看板/block 时先读 [lark-base-dashboard.md](references/lark-base-dashboard.md);组件 `data_config`[dashboard-block-data-config.md](references/dashboard-block-data-config.md);读取一个或多个图表计算结果用 `+dashboard-block-get-data`;读取完整仪表盘时按 block 类型分流,文本和不支持直接取数的图表按 reference 恢复 |
7474
| Workflow | `+workflow-*` | 创建/更新或理解 steps 时读入口 [lark-base-workflow-guide.md](references/lark-base-workflow-guide.md) 和 steps JSON SSOT [lark-base-workflow-schema.md](references/lark-base-workflow-schema.md);list/get/enable/disable 只处理 workflow ID 与启停状态 |
7575
| 高级权限与角色 | `+advperm-*` / `+role-*` | 角色操作先读入口 [lark-base-role-guide.md](references/lark-base-role-guide.md);角色 create/update 或解读完整配置再读权限 JSON SSOT [role-config.md](references/role-config.md);系统角色不可删除;关闭高级权限会影响自定义角色 |
7676

@@ -134,7 +134,7 @@ metadata:
134134

135135
## Dashboard / Workflow / Role
136136

137-
- Dashboard 的复杂点是 block 的 `data_config`,不是 list/get/create/delete 命令参数。创建或更新 block 前先读 [dashboard-block-data-config.md](references/dashboard-block-data-config.md),组件必须串行创建;`+dashboard-arrange` 是服务端智能布局,仅在用户明确要求重排/美化、或对本次会话从零新建的仪表盘做收尾整理时执行。`+dashboard-block-get-data` 读取图表最终计算结果,不返回 block 名称、类型、布局或 `data_config`;需要元数据先用 `+dashboard-block-get`
137+
- Dashboard 的复杂点是 block 的 `data_config`,不是 list/get/create/delete 命令参数。创建或更新 block 前先读 [dashboard-block-data-config.md](references/dashboard-block-data-config.md),组件必须串行创建;`+dashboard-arrange` 是服务端智能布局,仅在用户明确要求重排/美化、或对本次会话从零新建的仪表盘做收尾整理时执行。`+dashboard-block-get-data` 读取图表最终计算结果,不返回 block 名称、类型、布局或 `data_config`;需要元数据先用 `+dashboard-block-get`用户要求“全部/完整”仪表盘内容时不得跳过 text 或不支持直接取数的 block,按 [lark-base-dashboard.md](references/lark-base-dashboard.md) 的完整读取分支恢复。
138138
- Dashboard shortcut 不支持指定组件的 `x/y/w/h`、精确位置或尺寸,不能把 `+dashboard-arrange` 静默当作等价实现。用户只要求一般性重排/美化时可执行一次智能重排;用户要求精确结果时先说明限制并询问是否接受自适应布局,接受后才执行。不要探测 raw `lark-cli api`、源码或未公开布局参数。
139139
- 创建接口成功返回即表示写入成功;只有结果不确定时才额外执行一次 `+dashboard-get``+dashboard-block-list`。不要仅为确认创建而逐组件调用 `+dashboard-block-get-data`
140140
- 用户要读取多个组件的计算结果时,先完整列出组件(`+dashboard-block-list --page-size 100`;若 `has_more=true`,继续把返回的 `page_token` 传给 `--page-token`,直到 `has_more=false`),再按 [lark-base-dashboard-block-get-data.md](references/lark-base-dashboard-block-get-data.md) 在一个 shell 工具调用内串行读取;不要把每个 block 拆成独立模型轮次。

skills/lark-base/references/lark-base-dashboard.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,12 @@ lark-cli base +dashboard-arrange \
165165
- 想看某个组件的详细 data_config 配置 → 用 **方式 C**
166166
- 想看某个图表/指标卡实际算出来的数据 → 用 **方式 D**
167167

168+
用户要求读取“全部图表”或“完整仪表盘”时,先用方式 B 分页枚举所有 block:使用 `--page-size 100`;若返回 `has_more=true`,继续把本页返回的 `page_token` 传给 `--page-token`,直到 `has_more=false`。收齐后再对每个 block 收口,不能只返回 get-data 成功的子集:
169+
170+
1. 图表或指标卡:使用方式 D 读取计算结果。
171+
2. `text`:使用方式 C,正文位于 `data_config.text`;text 没有计算结果,但属于完整仪表盘内容。
172+
3. get-data 返回不支持的图表类型:先用方式 C 读取真实 `data_config`,确认 `table_name`、维度、指标、聚合与筛选,再按 [数据分析 SOP](lark-base-data-analysis-sop.md) 使用 `+data-query` 重建同口径结果。字段必须来自真实配置和表结构,不得猜测;无法等价重建时明确报告限制,不能静默省略该 block。
173+
168174
```bash
169175
# 第 1 步:列出仪表盘,定位到当前仪表盘
170176
lark-cli base +dashboard-list --base-token xxx
@@ -175,7 +181,10 @@ lark-cli base +dashboard-list --base-token xxx
175181
lark-cli base +dashboard-get --base-token xxx --dashboard-id blk_xxx
176182

177183
# 方式 B:列出所有组件
178-
lark-cli base +dashboard-block-list --base-token xxx --dashboard-id blk_xxx
184+
lark-cli base +dashboard-block-list \
185+
--base-token xxx \
186+
--dashboard-id blk_xxx \
187+
--page-size 100
179188

180189
# 方式 C:查看某个组件的详细配置
181190
lark-cli base +dashboard-block-get --base-token xxx --dashboard-id blk_xxx --block-id chtxxxxxxxx

0 commit comments

Comments
 (0)