@amaster.ai/pi-lark 0.1.2-beta.69 → 0.1.2-beta.71

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.
Files changed (46) hide show
  1. package/package.json +2 -2
  2. package/skills/lark-apps/references/lark-apps-local-dev.md +1 -1
  3. package/skills/lark-base/references/lark-base-app.md +2 -2
  4. package/skills/lark-base/references/lark-base-workflow-schema.md +68 -0
  5. package/skills/lark-base/references/lark-base-workflow.md +99 -3
  6. package/skills/lark-calendar/SKILL.md +12 -7
  7. package/skills/lark-calendar/references/lark-calendar-meeting-relation.md +99 -0
  8. package/skills/lark-calendar/references/lark-calendar-meeting.md +1 -1
  9. package/skills/lark-calendar/references/lark-calendar-recurring.md +3 -1
  10. package/skills/lark-doc/SKILL.md +1 -1
  11. package/skills/lark-doc/references/lark-doc-create-workflow.md +8 -10
  12. package/skills/lark-doc/references/lark-doc-script.md +11 -17
  13. package/skills/lark-drive/references/lark-drive-permission-guide.md +1 -1
  14. package/skills/lark-im/references/lark-im-chat-messages-list.md +2 -1
  15. package/skills/lark-im/references/lark-im-messages-mget.md +19 -2
  16. package/skills/lark-im/references/lark-im-messages-search.md +1 -1
  17. package/skills/lark-im/references/lark-im-threads-messages-list.md +1 -1
  18. package/skills/lark-mail/SKILL.md +19 -8
  19. package/skills/lark-mail/references/lark-mail-draft-create.md +1 -1
  20. package/skills/lark-mail/references/lark-mail-draft-edit.md +1 -1
  21. package/skills/lark-mail/references/lark-mail-forward.md +1 -1
  22. package/skills/lark-mail/references/lark-mail-reply-all.md +1 -1
  23. package/skills/lark-mail/references/lark-mail-reply.md +1 -1
  24. package/skills/lark-mail/references/lark-mail-rules.md +87 -4
  25. package/skills/lark-mail/references/lark-mail-send.md +1 -1
  26. package/skills/lark-mail/references/lark-mail-thread-modify.md +73 -0
  27. package/skills/lark-mail/references/lark-mail-thread-trash.md +62 -0
  28. package/skills/lark-mail/references/lark-mail-watch.md +1 -1
  29. package/skills/lark-meeting/SKILL.md +2 -2
  30. package/skills/lark-meeting/references/lark-minutes-search.md +2 -2
  31. package/skills/lark-meeting/references/lark-vc-meeting-events.md +3 -2
  32. package/skills/lark-meeting/references/lark-vc-search.md +10 -7
  33. package/skills/lark-meeting/scenes/create-and-edit-minutes.md +4 -0
  34. package/skills/lark-meeting/scenes/query-meeting-and-artifacts.md +3 -3
  35. package/skills/lark-sheets/SKILL.md +3 -1
  36. package/skills/lark-sheets/references/lark-sheets-chart.md +66 -32
  37. package/skills/lark-sheets/references/lark-sheets-visual-standards.md +6 -3
  38. package/skills/lark-sheets/scripts/lark_chart_quality_check.py +1524 -0
  39. package/skills/lark-sheets/scripts/lark_chart_size_advisor.py +408 -0
  40. package/skills/lark-sheets/scripts/lark_chart_size_rules.py +292 -0
  41. package/skills/lark-slides/references/xml/slides_xml_schema_definition.xml +333 -20
  42. package/skills/lark-wiki/references/lark-wiki-move.md +3 -2
  43. package/skills/lark-wiki/references/lark-wiki-node-create.md +3 -2
  44. package/skills/lark-wiki/references/lark-wiki-node-delete.md +8 -4
  45. package/skills/lark-wiki/references/lark-wiki-node-get.md +7 -4
  46. package/skills/lark-sheets/scripts/lark_chart_layout_check.py +0 -472
@@ -32,7 +32,7 @@
32
32
 
33
33
  普通创建、数据源修正和常用配置更新不要构造原始 snapshot。
34
34
 
35
- 典型工作流:先确认表头和精确数据范围,用 `+chart-create-basic` 一次创建并尽量在同次调用中带上已知标题/轴/标签内容要求;标签位置只有用户明确指定时才传。创建后用返回的完整 `snapshot` 检查范围、方向与系列,再按需用 `+chart-list` 验证。已有图表的数据范围或方向错误时用 `+chart-data-update`,常用配置修正用 `+chart-config-update`。只有用户要求单个系列、数据点或高级引擎字段时,才读取现有 snapshot 并调 `+chart-update --properties`。不要为了常用配置先输出整份 schema,也不要删除重建已经创建成功的图表。
35
+ 典型工作流:先确认表头、精确数据范围和图表配置,运行 `python scripts/lark_chart_size_advisor.py` 取得建议尺寸,再将返回的 `data.create_flags.width` / `height` 原样传给 `+chart-create-basic`;创建时尽量在同次调用中带上已知标题/轴/标签内容要求,标签位置只有用户明确指定时才传。创建后用返回的完整 `snapshot` 检查范围、方向与系列,再按需用 `+chart-list` 验证。已有图表的数据范围或方向错误时用 `+chart-data-update`,常用配置修正用 `+chart-config-update`。只有用户要求单个系列、数据点或高级引擎字段时,才读取现有 snapshot 并调 `+chart-update --properties`。不要为了常用配置先输出整份 schema,也不要删除重建已经创建成功的图表。
36
36
 
37
37
  **多图表工作流**:先完成所有辅助数据和表头,列出每张目标图的类型、精确数据范围、标题和落点;确认清单后,用一次 `+batch-chart-create` 批量创建。它的每个 operation 直接填写 `+chart-create-basic` flags,CLI 内部固定按 `+chart-create-basic` 执行,不要再套 `shortcut` / `input`。图表之间独立时允许部分成功:按返回的逐项结果定位失败图表,只重试失败项。批量 create 的逐项结果不返回完整 snapshot;批次后每个受影响的 sheet 各调用一次 `+chart-list`。已经成功创建的图表有数据源或配置差异时,用 `+batch-chart-update` 批量执行对应的语义更新,不要删除重建。
38
38
 
@@ -60,13 +60,33 @@
60
60
 
61
61
  **数量词必须展开**:用户说“每个 / 每天 / 分别 / 逐一 / 各一张图”时,先从数据中数出实体数 `N`,把这 `N` 张图逐项写进清单,再加上其它汇总图得到目标总数 `M`;一个包含全部实体的多系列图不能替代这 `N` 张独立图。批次前断言 operations 中恰有 `M` 个图表创建,批次后断言图表总数、逐图标题与实体集合一致。
62
62
 
63
- **范围与系列前置校验(创建前必做)**:清单中同时记录每张图的表头范围、纳入维度、明确排除维度、数据方向和预期系列数。当前每张图**最多 50 个数值系列**;按列组织时通常为“所选数值列数”,按行组织时通常为“所选数值行数”。创建时就用 `+chart-create-basic --dim1-index ... --dim2-indexes ...` 显式选择类别与不超过 50 个数值系列;如果业务要求展示超过 50 个系列,应先建立紧凑汇总表或 Top-N,而不是反复删除重建。创建前根据实际表头确认索引和边界,不凭字母猜范围;创建后范围、方向或系列数不符时,使用 `+chart-data-update` 修正,CLI 会读取当前快照、重建 `refs` / `dim1` / `dim2.series` 并只提交 data patch,不要删除后重建。
63
+ **范围与系列前置校验(创建前必做)**:清单中同时记录每张图的表头范围、纳入维度、明确排除维度、数据方向和预期系列数。每张图只支持一个类别 / X 轴维度(`dim1`),不支持把多个字段作为多级横轴;当前每张图**最多 50 个数值系列**;按列组织时通常为“所选数值列数”,按行组织时通常为“所选数值行数”。创建时就用 `+chart-create-basic --dim1-index ... --dim2-indexes ...` 显式选择类别与不超过 50 个数值系列;如果业务要求展示超过 50 个系列,应先建立紧凑汇总表或 Top-N,而不是反复删除重建。创建前根据实际表头确认索引和边界,不凭字母猜范围;创建后范围、方向或系列数不符时,使用 `+chart-data-update` 修正,CLI 会读取当前快照、重建 `refs` / `dim1` / `dim2.series` 并只提交 data patch,不要删除后重建。
64
64
 
65
- **坐标轴语义与范围**:所有带坐标轴的图表都要在清单中记录每条轴对应的字段语义、类别轴 / 连续轴类型、单位、边界、刻度间隔以及主副轴归属,不能只核对轴标题。多图对比时,先判断“范围 / 尺度一致”指绝对边界相同,还是跨度和刻度可比;用户未明确要求所有图共用相同最小值和最大值时,不要默认使用各数据子集的并集边界。按连续区间分图时,各图使用自己的区间边界并保持跨度和刻度可比;对比同一指标时保持值轴口径一致,不同单位或量级的指标不强行共用边界。
65
+ **尺寸建议(创建前必做)**:确认 `--chart-type`、`--data-range`、数据方向、dim1/dim2、标题、图例和标签策略后,先运行尺寸建议器。有分离表头时同时传 `--header-range`。
66
+
67
+ 硬下限如下;建议器不可用时也不得低于此值:
68
+
69
+ | 图表类型 | 最小宽度 × 高度(px) |
70
+ |---|---:|
71
+ | 柱形图、折线图、面积图及其它默认类型 | `640 × 400` |
72
+ | 条形图、组合图 | `720 × 420` |
73
+ | 饼图 | `720 × 440` |
74
+
75
+ ```bash
76
+ python scripts/lark_chart_size_advisor.py "<表格 URL 或 spreadsheet token>" \
77
+ --worksheet-id "<reference_id>" \
78
+ --chart-type column --data-range "'Sheet1'!A1:C10" \
79
+ --dim1-index 1 --dim2-indexes 2,3 \
80
+ --data-labels value --legend-position bottom --title "销售额对比"
81
+ ```
82
+
83
+ 运行建议器时,参数必须与后续创建保持一致:创建命令显式设置 `--aggregate-categories` 时传入同一值,组合图同步传入 `--series-types`;创建命令不传 `--data-labels` 时,建议器也按 `none` 估算,需要标签时两边都显式传入同一值。将返回的 `data.create_flags.width` / `height` 原样用于创建命令(包括 `--dry-run`),不要凭经验改小;`data.minimum_size` 仅表示兜底下限。若 `data.size_alone_is_insufficient=true`,先按 `data.layout_advice` 调整图表结构或标签策略,再用新配置重新计算尺寸。建议器只负责创建前预估,图表创建后仍须运行质量检查器。
84
+
85
+ **坐标轴语义与范围**:所有带坐标轴的图表都要在清单中记录每条轴对应的字段语义、类别轴 / 连续轴类型、单位以及主副轴归属,不能只核对轴标题。Y 轴显示范围默认交给图表引擎;用户未明确要求固定范围时,不传 `--y-axis-min` / `--y-axis-max`,需要固定范围时必须同时传上下界,重点只处理确有必要收紧的连续数值 X 轴。堆积图的峰值来自同一类别内系列累加,组合图还要按左右轴分别计算;不得直接把数据源单列的最小值 / 最大值当成 Y 轴边界。瀑布图的显示范围取决于逐项累计后的全部中间值、小计和总计,不得主动传 `--y-axis-min` / `--y-axis-max`;只有用户明确指定固定范围时才能例外,且必须覆盖所有累计节点。其它图表只有在用户明确要求或视觉验收证明自动范围不可读时,才按图表类型的实际绘制值计算并设置 Y 轴范围。多图对比时,先判断“范围 / 尺度一致”指绝对边界相同,还是跨度和刻度可比;对比同一指标时保持值轴口径一致,不同单位或量级的指标不强行共用边界。
66
86
 
67
87
  **横向类别行配方**:当日期/月份等类别横向排列在一行、目标数值在另一行时,把“类别行 + 数值行”一起放进 `--data-range` 并传 `--data-direction row`,例如 `--data-range "'Sheet1'!A1:M1,'Sheet1'!A3:M3" --data-direction row`。此时类别行属于数据映射,**不要**传给 `--header-range`。`--header-range` 仅表示与纯数据分离的“维度/系列名称”:column 方向必须是一行,row 方向必须是一列。row 方向却传入多列表头,通常说明把类别行误当成了分离表头。
68
88
 
69
- **整图配色优先走语义参数**:只要求统一主题或一组系列颜色时,在创建时传 `--color-palette` 或 `--colors`,已有图表用 `+chart-config-update` 更新;二者互斥。`--colors` 接受逗号分隔且至少包含 2 个十六进制色值的字符串;批量 operation 的 `colors` 同时接受字符串或字符串数组,也必须至少包含 2 个颜色。`--colors` 是整图色板:引擎按颜色数组的顺序**循环**给每个系列上色(柱子、折线、扇区等各类系列元素都算一个上色单位),颜色数少于系列数时从头循环复用。若要**明确指定每个系列的颜色**,必须传入与系列数量相同的颜色(否则会因循环导致部分系列共用同一颜色)。只有指定某个系列或某个数据点的颜色时才使用原始 snapshot。
89
+ **整图配色优先走语义参数**:统一主题或系列配色用 `--color-palette` / `--colors`,已有图用 `+chart-config-update`;优先继承原表主题,同一指标跨图保持同色,组合图用同色系柱形、高对比折线和中性辅助线。`--colors` 会循环复用,明确逐系列配色时颜色数须与系列数一致。颜色过多难以区分时优先 Top-N 或拆图;单系列/数据点配色才使用原始 snapshot。
70
90
 
71
91
  ## 需求→图表类型映射(创建前必查)
72
92
 
@@ -87,8 +107,10 @@
87
107
 
88
108
  **常见配置错误(必须注意)**:
89
109
  - **图表类型选择错误**:用户说"堆积柱形图 / 百分比堆积"时,用 `+chart-create-basic --stack normal|percent` 或 `+chart-config-update --stack normal|percent`;用户说"占比 / 比例"时,优先考虑饼图或百分比堆积图。注意 `column` 是纵向柱形图、`bar` 是横向条形图,"对比 / 各 XX" 类纵向柱默认用 `column`;面积图原生支持 `snapshot.plotArea.plot.type="area"`,别因速查表没列就判"不支持"。
90
- - **数据标签开关**:创建时用 `--data-labels`,已有图用 `+chart-config-update --data-labels`;明确关闭时传 `none`,不要为常用标签配置构造原始 `labels` 对象。高级配置中 `plotArea.plot.labels` 对象的存在性即开关;关闭标签时应省略整个 `labels` 字段,不能用全部字段置为 `false` 代替。用常量或重复值系列表示基准、目标、阈值或上下限时,默认关闭该系列标签;不支持单点标签时,不得用全系列重复标签代替,改用包含名称和值的系列名、图例或标题。
91
- - **数据标签位置**:只有用户明确要求且已有标签时才传 `--data-label-position`;它只调整已有标签的位置,不会单独开启标签。需要同时显示标签时一并传 `--data-labels`;未明确位置时省略,让图表按类型自动选择。标签位置只控制摆放方式,不能实现仅显示末点或关键点。
110
+ - **数据标签开关**:普通基础图先按拟开启 `--data-labels value` 运行尺寸建议器,再用建议宽高创建;不要仅凭数据点或系列数预先传 `none`。若使用建议尺寸后仍过密,依次改为关键点 / 末值 / 异常值的稀疏标签、Top-N 或拆图;用户明确要求隐藏全部标签时才传 `none`。已有图用 `+chart-config-update --data-labels`,不要为常用标签配置构造原始 `labels` 对象。高级配置中 `plotArea.plot.labels` 对象的存在性即开关:创建时关闭标签应省略该字段,更新时删除已有全局标签传 `labels: null`,不能用全部字段置为 `false` 代替。多个系列的数据标签展示要求不同时,禁止传全局 `--data-labels`,应在创建后读取完整 `plotArea.plot.series`,仅给需要标签的系列设置 `labels`,再用 `+chart-update --properties` 整段回写该数组。
111
+ - **辅助线与单点标签**:用户要求基准线、目标线、阈值线、平均线或上下限时,先在源数据旁新增一列重复目标值作为辅助线;如果只需要在线尾或某个关键位置显示一个标签,再新增一列稀疏标点数据,仅在目标行写入同一数值,其余单元格保持真正空白。数据准备完成后创建组合图:辅助值列用 `line`,稀疏标点列用 `scatter`,省略全局 `--data-labels`,并传 `--aggregate-categories=false` 关闭“汇总相同类别”;已有图用 `+chart-config-update --aggregate-categories=false`。随后读取完整系列数组,只给稀疏标点系列设置数值标签,辅助线系列必须省略 `labels`;原数据系列是否设置标签按用户要求决定。不得用重复值辅助线的全系列标签模拟单点标签,也不得用 0 代替空白标点,否则聚合会把空标点物化为每个类别的数据点,导致标签重复出现。
112
+ - **常量系列标签**:目标线、阈值线和上下限等重复常量系列默认不显示逐点标签;名称和值放在系列名、图例、标题或单个稀疏标记中。创建后若质量检查器提示“常量系列重复标签”,移除该系列标签或改成只有一个非空点的稀疏标记。
113
+ - **数据标签位置**:只有用户明确要求且已有标签时才传 `--data-label-position`;它只调整已有标签的位置,不会单独开启标签。需要同时显示标签时一并传 `--data-labels`;未明确位置时省略,让图表按类型自动选择。标签位置只控制摆放方式,不能实现仅显示末点或关键点。普通非堆叠柱形图显示数据标签位置一般传 `outside`。
92
114
  - **数据源范围与系列名来源要对齐**:
93
115
  - 默认让 `--data-range` 包含真正的表头行 / 列;表头上方的合并大标题必须跳过。
94
116
  - 数据和语义表头分离时,`--data-range` 只传纯数据,`--header-range` 传对应的一行(column)或一列(row)表头。范围可以是不连续多范围,也支持来自多个子表;不要因为跨子表就退回原始 snapshot。
@@ -96,6 +118,8 @@
96
118
  - **数据源必须是数值 / 日期型**:图表只渲染数值型单元格。用 `+cells-set` 构造数据源时,给数字 / 日期单元格设 `cell_styles.number_format`,不要留成纯文本,否则该系列渲染为空。
97
119
  - **数值 / 日期显示异常**:坐标轴沿用源单元格格式。日期显示成序列号、大数值显示成科学计数法时,修正源数据的 `cell_styles.number_format`,不要给图表轴构造未定义的 format 字段。
98
120
  - **轴口径错误**:用户要"占比 / 比例"时,用饼图或 `--stack percent`,并核对数据源与标签确实表达百分比,不要交付仍以原始计数为纵轴的图。
121
+ - **组合图系列被压扁**:创建前比较各系列的单位和典型值 / 峰值量级;单位不同、相差约一个数量级以上,或折线贴近 X 轴时,不得把所有系列都放左轴。用 `--series-y-axes` 将会被压扁的系列(常见为百分比、比率或小量级折线)放到右轴,并用左右轴标题明确各自单位;`--series-types` / `--series-y-axes` 必须与 `--dim2-indexes` 逐项对齐。
122
+ - **饼图标签截断**:饼图默认传 `--legend-position bottom`,并使用比普通单图更宽的画布;创建时同时传 `--width` / `--height`。宽度主要为左右两侧最长标签留白,不因类别数量线性增加;类别过多时改用 Top-N 或条形图,不能靠无限加宽或截断标签交付。
99
123
  - **对象语义验证**:基础单图先核对返回的完整 `snapshot`;批量创建、响应不完整、后续又更新或结果存疑时,再按受影响的 sheet 调一次 `+chart-list`。这里只核对数量、数据源、方向、系列和配置,不能代替交付前的布局检查。
100
124
 
101
125
  > **⚠️ 硬性规则:当用户通过列标题名称(而非列索引)指定横轴/纵轴系列时,必须先读取表格首行(表头)来确定列名与列索引的对应关系,再设置普通图表的 `--dim1-index` / `--dim2-indexes` 或气泡图的角色索引。**
@@ -138,8 +162,8 @@
138
162
  完成本次所有图表创建或更新后,再逐图核对以下项;全部通过才算完成:
139
163
 
140
164
  1. **数量**:图表数 = 用户明确要求的数量("每个 / 分别 / 逐一"等数量词已逐项展开为独立图,不用一张多系列图代替)。
141
- 2. **文案与展示项**:回读图表标题、副标题和坐标轴标题,确认语义准确且无乱码、占位符或空括号;图例、数据标签按用户要求展示或隐藏(未要求时不擅自增删),辅助系列不得用全点重复标签模拟单点或末点。带坐标轴的图表还要回读每条轴的字段语义、类型、单位、最小值 / 最大值、刻度以及主副轴归属;多图对比时再核对边界、跨度和口径是否符合用户的可比性要求。
142
- 3. **位置与布局**:图表创建、配置更新、数据更新或位置调整后,每个受影响子表运行一次 `python scripts/lark_chart_layout_check.py "<表格 URL 或 spreadsheet token>" --worksheet-id "<reference_id>"`,无需先用 `ls` 探测脚本。`data.passed=true` 且退出码为 `0` 才可交付;退出码 `2` 且 `data.passed=false` 表示检查成功发现问题,按返回位置用 `+chart-update --properties` 最小 patch 调整后重跑。退出码 `1`、网络超时或无有效 JSON 时只重试一次;仍失败则明确报告布局未完成验收,禁止用人工估算代替。
165
+ 2. **文案与展示项**:回读图表标题、副标题和坐标轴标题,确认语义准确且无乱码、占位符或空括号;图例按用户要求展示或隐藏,普通基础图的数据标签默认展示;密集时按“建议尺寸 → 稀疏标签 → Top-N / 拆图”处理。辅助系列不得用全点重复标签模拟单点或末点。带坐标轴的图表还要回读每条轴的字段语义、类型、单位、最小值 / 最大值、刻度以及主副轴归属;多图对比时再核对边界、跨度和口径是否符合用户的可比性要求。
166
+ 3. **图表质量**:图表创建、配置更新、数据更新或位置调整后,每个受影响子表运行一次 `python scripts/lark_chart_quality_check.py "<表格 URL 或 spreadsheet token>" --worksheet-id "<reference_id>"`,无需先用 `ls` 探测脚本。检查器覆盖几何重叠、遮挡内容、越界、最小尺寸、数值源格式、全零/空系列和常量系列重复标签。动态数值源只采样每系列前 50 点,每张图累计最多读取 2000 个源单元格(含表头和系列间空隙);`numeric_source_samples` 给出实际范围与采样点数,不续读剩余数据。仅采样为全零/常量但未覆盖完整系列时列为不可验证,不能据此修改整个系列。`data.passed=true` 且退出码为 `0` 表示已完成检查范围内无问题,不能视为未采样数据也正常。退出码 `2` 表示检查成功发现问题,按返回的修复建议调整后重跑;退出码 `1`、网络超时或无有效 JSON 时只重试一次,仍失败则明确报告质量检查未完成,禁止用人工估算代替。
143
167
 
144
168
  ## Shortcuts
145
169
 
@@ -173,15 +197,16 @@ _公共四件套 · 系统:`--dry-run`_
173
197
  | `--data-range` | string | required | 数据范围;未传 --header-range 时须包含表头,传入时只传纯数据;支持逗号分隔及跨子表多范围 |
174
198
  | `--header-range` | string | optional | 可选的分离表头范围;column 方向须为一行、row 方向须为一列,表头数须等于数据维度数 |
175
199
  | `--data-direction` | string | optional | 数据系列方向;column 表示首列为类别,row 表示首行为类别(可选值:`column` / `row`)(默认 `column`) |
200
+ | `--aggregate-categories` | bool | optional | 是否汇总相同类别;稀疏标点或需要保留逐行数据点时使用 --aggregate-categories=false,省略时沿用图表默认行为 |
176
201
  | `--x-axis-numbers-as` | string | optional | 横轴数字的解释方式;text 将数字视为等间距文本类别,values 按连续数值及真实间距绘制(可选值:`text` / `values`)(默认 `text`) |
177
202
  | `--x-axis-min` | float64 | optional | 连续数值 X 轴的显示范围下界;需同时使用 --x-axis-numbers-as values |
178
203
  | `--x-axis-max` | float64 | optional | 连续数值 X 轴的显示范围上界;需同时使用 --x-axis-numbers-as values |
179
- | `--y-axis-min` | float64 | optional | 左 Y 轴的显示范围下界;必须小于 --y-axis-max |
180
- | `--y-axis-max` | float64 | optional | 左 Y 轴的显示范围上界;必须大于 --y-axis-min |
181
- | `--dim1-index` | int | optional | 类别/X 轴维度在数据范围中的 1-based 索引;默认 1 |
204
+ | `--y-axis-min` | float64 | optional | 左 Y 轴的显示范围下界;默认省略,仅在用户明确要求固定范围时与 --y-axis-max 同时传;不得直接使用数据源单列最小值,且必须小于上界 |
205
+ | `--y-axis-max` | float64 | optional | 左 Y 轴的显示范围上界;默认省略,仅在用户明确要求固定范围时与 --y-axis-min 同时传;须按图表实际绘制值计算,且必须大于下界 |
206
+ | `--dim1-index` | int | optional | 唯一类别/X 轴维度在数据范围中的 1-based 索引;默认 1;不支持多个字段组成多级横轴 |
182
207
  | `--dim2-indexes` | string | optional | 值/Y 轴系列的 1-based 索引列表,逗号分隔;不能包含 dim1,最多 50 个。气泡图旧调用按 `x,y[,group][,size]` 顺序传 2–4 个,新调用优先使用角色索引;饼图和排列图只传 1 个 |
183
- | `--series-types` | string | optional | 仅组合图;按 --dim2-indexes 顺序指定系列类型,逗号分隔,可选 column、line、area,数量必须与数值系列一致 |
184
- | `--series-y-axes` | string | optional | 仅组合图;按 --dim2-indexes 顺序指定系列使用 left 或 right Y 轴,逗号分隔,数量必须与数值系列一致 |
208
+ | `--series-types` | string | optional | 仅组合图;按 --dim2-indexes 顺序指定系列类型,逗号分隔,可选 column、line、area、scatter,数量必须与数值系列一致 |
209
+ | `--series-y-axes` | string | optional | 仅组合图;先比较系列单位和量级,将会被压扁的系列放到 right 轴;按 --dim2-indexes 顺序传 left 或 right,数量必须与数值系列一致 |
185
210
  | `--key-index` | int | optional | 仅气泡图:标识/名称维度的 1-based 索引;与 dim1/dim2 索引互斥,默认 1 |
186
211
  | `--x-index` | int | optional | 仅气泡图:X 值维度的 1-based 索引;须与 --y-index 一起提供 |
187
212
  | `--y-index` | int | optional | 仅气泡图:Y 值维度的 1-based 索引;须与 --x-index 一起提供 |
@@ -189,21 +214,21 @@ _公共四件套 · 系统:`--dry-run`_
189
214
  | `--size-index` | int | optional | 仅气泡图:可选气泡大小维度的 1-based 索引 |
190
215
  | `--title` | string | optional | 图表标题 |
191
216
  | `--subtitle` | string | optional | 图表副标题 |
192
- | `--legend-position` | string | optional | 图例位置;hidden 隐藏图例(可选值:`top` / `bottom` / `left` / `right` / `hidden`) |
217
+ | `--legend-position` | string | optional | 图例位置;饼图默认 bottom,hidden 隐藏图例(可选值:`top` / `bottom` / `left` / `right` / `hidden`) |
193
218
  | `--x-axis-title` | string | optional | X 轴标题 |
194
219
  | `--y-axis-title` | string | optional | 左 Y 轴标题 |
195
220
  | `--secondary-y-axis-title` | string | optional | 右 Y 轴标题 |
196
221
  | `--x-axis-label-angle` | int | optional | X 轴标签旋转角度(可选值:`-90` / `-45` / `0` / `45` / `90`) |
197
222
  | `--y-axis-label-angle` | int | optional | 左 Y 轴标签旋转角度(可选值:`-90` / `-45` / `0` / `45` / `90`) |
198
- | `--data-labels` | string | optional | 数据标签内容;value、category、percentage 可按 value_category_percentage 顺序组成任意非空组合;series 显示系列名称,none 隐藏标签(可选值:`none` / `value` / `category` / `percentage` / `value_category` / `value_percentage` / `category_percentage` / `value_category_percentage` / `series`) |
199
- | `--data-label-position` | string | optional | 仅当用户明确指定时传入;只调整已有数据标签的位置,不会单独开启标签;省略时按图表类型自动优化数据标签位置(可选值:`auto` / `top` / `bottom` / `left` / `right` / `center` / `inside` / `outside`) |
223
+ | `--data-labels` | string | optional | 数据标签内容;普通基础图默认传 value,不要仅因数据点或系列较多而省略,仅用户明确要求隐藏全部标签时传 none;value、category、percentage 可按 value_category_percentage 顺序组成任意非空组合;series 显示系列名称(可选值:`none` / `value` / `category` / `percentage` / `value_category` / `value_percentage` / `category_percentage` / `value_category_percentage` / `series`) |
224
+ | `--data-label-position` | string | optional | 普通非堆叠柱形图显示标签时一般传 outside;其它场景仅当用户明确指定时传入;只调整已有数据标签的位置,不会单独开启标签(可选值:`auto` / `top` / `bottom` / `left` / `right` / `center` / `inside` / `outside`) |
200
225
  | `--stack` | string | optional | 堆叠模式(可选值:`none` / `normal` / `percent`) |
201
226
  | `--stacked` | bool | optional | 兼容别名;等价于 --stack normal(隐藏 flag:不在 `--help` 列出,但可正常传入) |
202
- | `--smooth` | bool | optional | 是否使用平滑曲线;支持 --smooth=false 和 --smooth false |
227
+ | `--smooth` | bool | optional | 是否使用平滑曲线;显式关闭使用 --smooth=false |
203
228
  | `--color-palette` | string | optional | 预设整图配色主题;与 --colors 互斥(可选值:`brandColorSeries@v2` / `rainbowColorSeries@v2` / `complementaryColorSeries@v2` / `converseColorSeries@v2` / `primaryColorSeries@v2` / `singleColorSeries-B-@v2` / `singleColorSeries-W-@v2` / `singleColorSeries-G-@v2` / `singleColorSeries-Y-@v2` / `singleColorSeries-O-@v2` / `singleColorSeries-R-@v2` / `singleColorSeries-D-@v2`) |
204
229
  | `--colors` | string_slice | optional | 自定义整图系列颜色,逗号分隔且至少 2 个十六进制色值;与 --color-palette 互斥 |
205
230
  | `--anchor-cell` | string | optional | 可选图表锚点单元格,如 F2;省略时放到数据范围右侧 |
206
- | `--width` | int | optional | 可选图表宽度;必须与 --height 同时传 |
231
+ | `--width` | int | optional | 可选图表宽度;必须与 --height 同时传;饼图及长类别标签场景应适量加宽以避免截断 |
207
232
  | `--height` | int | optional | 可选图表高度;必须与 --width 同时传 |
208
233
 
209
234
  ### `+chart-config-update`
@@ -223,14 +248,14 @@ _公共四件套 · 系统:`--dry-run`_
223
248
  | `--y-axis-label-angle` | int | optional | 左 Y 轴标签旋转角度(可选值:`-90` / `-45` / `0` / `45` / `90`) |
224
249
  | `--x-axis-min` | float64 | optional | 连续数值 X 轴的显示范围下界;必须小于 --x-axis-max |
225
250
  | `--x-axis-max` | float64 | optional | 连续数值 X 轴的显示范围上界;必须大于 --x-axis-min |
226
- | `--y-axis-min` | float64 | optional | 左 Y 轴的显示范围下界;必须小于 --y-axis-max |
227
- | `--y-axis-max` | float64 | optional | 左 Y 轴的显示范围上界;必须大于 --y-axis-min |
251
+ | `--y-axis-min` | float64 | optional | 左 Y 轴的显示范围下界;默认省略,仅在用户明确要求固定范围时与 --y-axis-max 同时传;不得直接使用数据源单列最小值,且必须小于上界 |
252
+ | `--y-axis-max` | float64 | optional | 左 Y 轴的显示范围上界;默认省略,仅在用户明确要求固定范围时与 --y-axis-min 同时传;须按图表实际绘制值计算,且必须大于下界 |
228
253
  | `--data-labels` | string | optional | 数据标签内容;value、category、percentage 可按 value_category_percentage 顺序组成任意非空组合;series 显示系列名称,none 隐藏标签(可选值:`none` / `value` / `category` / `percentage` / `value_category` / `value_percentage` / `category_percentage` / `value_category_percentage` / `series`) |
229
254
  | `--data-label-position` | string | optional | 仅当用户明确指定时传入;只调整已有数据标签的位置,不会单独开启标签;省略时按图表类型自动优化数据标签位置(可选值:`auto` / `top` / `bottom` / `left` / `right` / `center` / `inside` / `outside`) |
230
- | `--last-point-label` | bool | optional | 仅折线图、面积图、雷达图及组合图中的线性系列;true 开启每个系列最后一个数据点的数值标签,false 关闭这些单点标签 |
255
+ | `--aggregate-categories` | bool | optional | 是否汇总相同类别;稀疏标点或需要保留逐行数据点时使用 --aggregate-categories=false,省略时保留当前设置 |
231
256
  | `--stack` | string | optional | 堆叠模式(可选值:`none` / `normal` / `percent`) |
232
257
  | `--stacked` | bool | optional | 兼容别名;等价于 --stack normal(隐藏 flag:不在 `--help` 列出,但可正常传入) |
233
- | `--smooth` | bool | optional | 是否使用平滑曲线;支持 --smooth=false 和 --smooth false |
258
+ | `--smooth` | bool | optional | 是否使用平滑曲线;显式关闭使用 --smooth=false |
234
259
  | `--color-palette` | string | optional | 预设整图配色主题;与 --colors 互斥(可选值:`brandColorSeries@v2` / `rainbowColorSeries@v2` / `complementaryColorSeries@v2` / `converseColorSeries@v2` / `primaryColorSeries@v2` / `singleColorSeries-B-@v2` / `singleColorSeries-W-@v2` / `singleColorSeries-G-@v2` / `singleColorSeries-Y-@v2` / `singleColorSeries-O-@v2` / `singleColorSeries-R-@v2` / `singleColorSeries-D-@v2`) |
235
260
  | `--colors` | string_slice | optional | 自定义整图系列颜色,逗号分隔且至少 2 个十六进制色值;与 --color-palette 互斥 |
236
261
 
@@ -244,7 +269,7 @@ _公共四件套 · 系统:`--dry-run`_
244
269
  | `--data-range` | string | required | 新数据范围;未传 --header-range 时须包含表头,传入或原图已使用分离表头时只传纯数据;支持逗号分隔及跨子表多范围 |
245
270
  | `--header-range` | string | optional | 可选的分离表头范围;提供后自动使用 detached 表头映射,省略时保留原图已有的 detached 映射 |
246
271
  | `--data-direction` | string | optional | 数据系列方向;省略时沿用现有图表方向(可选值:`column` / `row`) |
247
- | `--dim1-index` | int | optional | 类别/X 轴维度在数据范围中的 1-based 索引;省略时使用第 1 个维度 |
272
+ | `--dim1-index` | int | optional | 唯一类别/X 轴维度在数据范围中的 1-based 索引;省略时使用第 1 个维度;不支持多个字段组成多级横轴 |
248
273
  | `--dim2-indexes` | string | optional | 值/Y 轴系列在数据范围中的 1-based 索引,逗号分隔;省略时使用除 dim1 外的全部维度 |
249
274
  | `--key-index` | int | optional | 仅气泡图:标识/名称维度的 1-based 索引;与 dim1/dim2 索引互斥,默认 1 |
250
275
  | `--x-index` | int | optional | 仅气泡图:X 值维度的 1-based 索引;须与 --y-index 一起提供 |
@@ -290,7 +315,6 @@ _创建/更新的图表属性_
290
315
  - `position` (object?) — 必填 { row: number, col: string }
291
316
  - `offset` (object?) — 可选 { row_offset?: number, col_offset?: number }
292
317
  - `size` (object?) — 必填 { width: number, height: number }
293
- - `last_point_label` (boolean?) — update 使用
294
318
  - `snapshot` (oneOf?) — 图表快照配置
295
319
 
296
320
  ## Examples
@@ -303,7 +327,7 @@ _创建/更新的图表属性_
303
327
 
304
328
  ### `+chart-create-basic`
305
329
 
306
- 默认使用第 1 个维度作为类别/X 轴,其余维度作为数值系列;普通图表可用 1-based 的 `--dim1-index` 和逗号分隔的 `--dim2-indexes` 精确选择。组合图默认首个数值系列为左轴柱、其余为右轴折线;需要其它组合时,用 `--series-types` 和 `--series-y-axes` 按 `--dim2-indexes` 的顺序逐项指定系列类型与左右轴,两组参数的数量都必须与最终数值系列数一致。横轴数字默认按等间距文本类别处理;只有数字之间的真实间距需要影响图形位置时,才传 `--x-axis-numbers-as values` 使用连续数轴。气泡图改用 `--key-index`、`--x-index`、`--y-index` 和可选的 `--group-index` / `--size-index`,其中 x/y 必须同时提供,key 默认 1;角色索引不能与 dim1/dim2 索引混用。旧气泡图的 dim1/dim2 位置调用仍兼容。饼图和排列图只允许一个数值系列;组合图至少需要两个数值系列;所有图表最多选择 50 个数值系列。默认让 `--data-range` 包含真实表头;只有“维度/系列名称”与纯数据分离时,才让 `--data-range` 只传纯数据,并用 `--header-range` 传对应的一行(column)或一列(row)表头。类别维度与数值维度不连续时,范围参数可传逗号分隔的多范围,也支持来自多个子表;沿数据点轴对齐的跨子表范围会保留独立引用,同一子表内错行、错列或重叠时合并为最小包围矩形,跨子表范围无法对齐时会报错。单独调用成功后返回完整 `snapshot`,可直接检查创建结果并继续修改。参数名使用 `--anchor-cell` 和 `--data-labels`。兼容调用中,`--type` / `--range` 会分别按 `--chart-type` / `--data-range` 处理,`--x-axis` / `--y-axis` 会按轴标题处理;新调用仍优先使用规范参数名。
330
+ 默认使用第 1 个维度作为类别/X 轴,其余维度作为数值系列;普通图表可用 1-based 的 `--dim1-index` 和逗号分隔的 `--dim2-indexes` 精确选择。组合图默认首个数值系列为左轴柱、其余为右轴折线;创建前仍要比较各系列单位和量级,避免折线或小量级系列因共用左轴而贴近 X 轴。需要其它组合时,用 `--series-types` 和 `--series-y-axes` 按 `--dim2-indexes` 的顺序逐项指定系列类型与左右轴;系列类型可选 `column`、`line`、`area`、`scatter`,两组参数的数量都必须与最终数值系列数一致。横轴数字默认按等间距文本类别处理;只有数字之间的真实间距需要影响图形位置时,才传 `--x-axis-numbers-as values` 使用连续数轴。气泡图改用 `--key-index`、`--x-index`、`--y-index` 和可选的 `--group-index` / `--size-index`,其中 x/y 必须同时提供,key 默认 1;角色索引不能与 dim1/dim2 索引混用。旧气泡图的 dim1/dim2 位置调用仍兼容。饼图和排列图只允许一个数值系列;组合图至少需要两个数值系列;所有图表最多选择 50 个数值系列。饼图默认将图例放在底部,并根据类别标签长度适量增加 `--width`(同时传 `--height`)。默认让 `--data-range` 包含真实表头;只有“维度/系列名称”与纯数据分离时,才让 `--data-range` 只传纯数据,并用 `--header-range` 传对应的一行(column)或一列(row)表头。类别维度与数值维度不连续时,范围参数可传逗号分隔的多范围,也支持来自多个子表;沿数据点轴对齐的跨子表范围会保留独立引用,同一子表内错行、错列或重叠时合并为最小包围矩形,跨子表范围无法对齐时会报错。单独调用成功后返回完整 `snapshot`,可直接检查创建结果并继续修改。参数名使用 `--anchor-cell` 和 `--data-labels`。兼容调用中,`--type` / `--range` 会分别按 `--chart-type` / `--data-range` 处理,`--x-axis` / `--y-axis` 会按轴标题处理;新调用仍优先使用规范参数名。
307
331
 
308
332
  **连续数值 X 轴的可读性**:`--x-axis-numbers-as values` 会保留数字的真实间距,但未指定范围时可能自动包含 0。如果数据集中在远离 0 的窄区间,数据点会挤在图表一侧;此时应保留 `values`,创建时用 `--x-axis-min` / `--x-axis-max` 收紧范围,已有图表用 `+chart-config-update` 修正,不要改成 `text` 掩盖问题。两个边界可单独设置;同时设置时 min 必须小于 max。
309
333
 
@@ -320,7 +344,19 @@ lark-cli sheets +chart-create-basic --url "..." --sheet-name "Sheet1" \
320
344
  --dim1-index 1 --dim2-indexes 2,3,4 \
321
345
  --series-types column,column,line --series-y-axes left,left,right \
322
346
  --title "价格与效率" --y-axis-title "价格" --secondary-y-axis-title "效率" \
323
- --anchor-cell F2 --width 700 --height 400
347
+ --anchor-cell F2 --width 720 --height 420
348
+
349
+ # 辅助线只显示一个标签:C 列为重复目标值,D 列仅目标位置有值、其余单元格为空
350
+ lark-cli sheets +chart-create-basic --url "..." --sheet-name "Sheet1" \
351
+ --chart-type combo --data-range "'Sheet1'!A1:D7" \
352
+ --dim1-index 1 --dim2-indexes 2,3,4 \
353
+ --series-types line,line,scatter --series-y-axes left,left,left \
354
+ --aggregate-categories=false \
355
+ --title "趋势与目标线" --anchor-cell F2 --width 720 --height 420
356
+
357
+ # 先从创建结果或 +chart-list 取得完整 series 数组,再整段回写;辅助线系列不设置 labels
358
+ lark-cli sheets +chart-update --url "..." --sheet-id "$SID" --chart-id "chrXXX" \
359
+ --properties '{"snapshot":{"plotArea":{"plot":{"series":[{"index":2,"comboType":"line","labels":{"value":true}},{"index":3,"comboType":"line"},{"index":4,"comboType":"scatter","labels":{"value":true}}]}}}}'
324
360
 
325
361
  # 气泡图:x、y 必填,group、size 可选
326
362
  lark-cli sheets +chart-create-basic --url "..." --sheet-name "Sheet1" \
@@ -399,17 +435,15 @@ lark-cli sheets +chart-data-update --url "..." --sheet-id "$SID" --chart-id "chr
399
435
 
400
436
  ### `+chart-config-update`
401
437
 
402
- 只传需要改的字段,成功后返回更新后的 `viewModel`。`--data-labels` 支持 `value`、`category`、`percentage` 的任意非空组合,组合值按 `value_category_percentage` 顺序拼接;另可用 `series` 显示系列名称、用 `none` 删除数据标签。折线图、面积图、雷达图及组合图中的线性系列可用 `--last-point-label=true` 只开启每个系列最后一个数据点的数值标签,传 `false` 关闭这些单点标签。`--legend-position hidden` 隐藏图例;`--smooth=false` 和 `--smooth false` 都可显式关闭平滑曲线。为减少参数重试,`--stacked` 自动按 `--stack normal` 处理,`percentage,value` 或 `value,percentage` 自动按 `value_percentage` 处理,`--x-axis` / `--y-axis` 自动按 `--x-axis-title` / `--y-axis-title` 处理;新调用仍优先使用规范参数。
438
+ 只传需要改的字段,成功后返回更新后的 `viewModel`。`--data-labels` 支持 `value`、`category`、`percentage` 的任意非空组合,组合值按 `value_category_percentage` 顺序拼接;另可用 `series` 显示系列名称、用 `none` 删除数据标签。多个系列需要不同标签策略时不要使用这个全局参数,按上文的辅助列与高级系列配置流程处理。`--legend-position hidden` 隐藏图例;显式关闭平滑曲线时使用 `--smooth=false`。为减少参数重试,`--stacked` 自动按 `--stack normal` 处理,`percentage,value` 或 `value,percentage` 自动按 `value_percentage` 处理,`--x-axis` / `--y-axis` 自动按 `--x-axis-title` / `--y-axis-title` 处理;新调用仍优先使用规范参数。
403
439
 
404
440
  ```bash
405
441
  lark-cli sheets +chart-config-update --url "..." --sheet-id "$SID" --chart-id "chrXXX" \
406
442
  --title "新标题" --x-axis-label-angle -45 --legend-position right
407
443
 
408
444
  lark-cli sheets +chart-config-update --url "..." --sheet-id "$SID" --chart-id "chrXXX" \
409
- --data-labels value_percentage --stack percent
445
+ --data-labels value_percentage --stack percent --aggregate-categories=false
410
446
 
411
- lark-cli sheets +chart-config-update --url "..." --sheet-id "$SID" --chart-id "chrXXX" \
412
- --last-point-label=true
413
447
  ```
414
448
 
415
449
  ### `+chart-create`
@@ -418,7 +452,7 @@ lark-cli sheets +chart-config-update --url "..." --sheet-id "$SID" --chart-id "c
418
452
 
419
453
  ### `+chart-update`
420
454
 
421
- 标题、轴、图例、标签、堆叠、平滑、配色优先使用 `+chart-config-update`,数据范围和方向使用 `+chart-data-update`。只有高级字段才使用 `+chart-update`;不要为常见修改构造 raw properties。
455
+ 标题、轴、图例、标签、堆叠、平滑、配色和相同类别汇总优先使用 `+chart-config-update`,数据范围和方向使用 `+chart-data-update`。只有高级字段才使用 `+chart-update`;不要为常见修改构造 raw properties。
422
456
 
423
457
  `+chart-update` 支持真正的局部更新:只传实际变化的字段,未传字段保持不变,不要复制并回写完整 snapshot。
424
458
 
@@ -431,7 +465,7 @@ lark-cli sheets +chart-config-update --url "..." --sheet-id "$SID" --chart-id "c
431
465
  ```bash
432
466
  # 只调整尺寸;无需携带 snapshot
433
467
  lark-cli sheets +chart-update --url "..." --sheet-id "$SID" --chart-id "chrXXX" \
434
- --properties '{"size":{"width":640,"height":360}}'
468
+ --properties '{"size":{"width":640,"height":400}}'
435
469
  ```
436
470
 
437
471
  #### 高级 `properties` 边界
@@ -80,9 +80,12 @@
80
80
 
81
81
  ### 6. 图表展示
82
82
 
83
- - 遵循用户指令选择图表类型,或匹配用户意图(饼图/环形图 → 占比,折线图 → 趋势)。
84
- - 包含必要元素:标题、坐标轴标题、多系列图例;数据标签按需(关键点 / 末值标注即可,不必每个数据点都加)。
85
- - 调整至合适大小,避免数据和标签过多堆叠。
83
+ - 遵循用户指令选择图表类型,或匹配用户意图(饼图 → 占比,折线图 → 趋势)。
84
+ - 包含必要元素:标题、坐标轴标题、多系列图例;普通基础图先按开启数值标签运行尺寸建议器并默认展示,密集时依次采用建议尺寸、稀疏标签、Top-N 或拆图;目标线等常量系列不显示逐点重复标签。
85
+ - Y 轴显示范围默认交给图表引擎,不按数据源单列的最小值 / 最大值主动设限;组合图先比较系列单位和量级,把会被压扁的系列放到右轴。
86
+ - 饼图默认将图例放在底部;尺寸建议器保持相对固定的饼区,主要按最长标签增加两侧留白。类别过多或数值高度偏斜时优先 Top-N 或条形图,避免靠无限加宽解决。
87
+ - 创建前运行 `scripts/lark_chart_size_advisor.py`,使用其 `create_flags`;若提示仅放大无法解决,则改用条形图、Top-N 或拆图。创建后运行 `scripts/lark_chart_quality_check.py`。
88
+ - 优先继承原表配色,同一指标跨图保持同色;组合图使用同色系柱形和高对比折线,辅助系列使用中性色。分类色过多时优先精简数据,不依靠更多相近颜色区分。
86
89
  - **图表放置防重叠**:新增图表前须计算放置区域,避免与已有图表重叠。具体步骤:
87
90
  1. 调用 `+chart-list` 获取当前工作表所有已有图表的 `position`(锚点单元格:`col` 是列字母如 "A"/"B"、`row` 是 1-based 行号;以 `+chart-list` 实际返回字段为准)、`offset`(锚点内偏移:`row_offset`、`col_offset`,单位像素)以及 `size`(`width`、`height`,单位像素)。
88
91
  2. 获取工作表的行高和列宽信息(像素)。