@amaster.ai/pi-lark 0.1.5 → 0.1.6

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 (144) hide show
  1. package/package.json +3 -3
  2. package/skills/lark-approval/references/lark-approval-initiate.md +2 -5
  3. package/skills/lark-approval/references/lark-approval-instances-initiated.md +6 -0
  4. package/skills/lark-approval/references/lark-approval-tasks-query.md +9 -0
  5. package/skills/lark-approval/references/lark-approval-tasks-rollback.md +8 -2
  6. package/skills/lark-apps/SKILL.md +25 -7
  7. package/skills/lark-apps/references/lark-apps-access-scope-set.md +1 -1
  8. package/skills/lark-apps/references/lark-apps-automation.md +164 -0
  9. package/skills/lark-apps/references/lark-apps-db-execute.md +186 -2
  10. package/skills/lark-apps/references/lark-apps-db.md +3 -3
  11. package/skills/lark-apps/references/lark-apps-get.md +43 -0
  12. package/skills/lark-apps/references/lark-apps-html-publish.md +7 -2
  13. package/skills/lark-apps/references/lark-apps-init.md +1 -2
  14. package/skills/lark-apps/references/lark-apps-openapi-key.md +1 -1
  15. package/skills/lark-apps/references/lark-apps-release-create.md +3 -1
  16. package/skills/lark-apps/references/lark-apps-role.md +133 -0
  17. package/skills/lark-base/SKILL.md +7 -3
  18. package/skills/lark-base/references/dashboard-block-data-config.md +28 -2
  19. package/skills/lark-base/references/lark-base-cell-value.md +9 -4
  20. package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +7 -7
  21. package/skills/lark-base/references/lark-base-dashboard.md +11 -2
  22. package/skills/lark-base/references/lark-base-data-query.md +9 -7
  23. package/skills/lark-base/references/lark-base-field-create.md +4 -2
  24. package/skills/lark-base/references/lark-base-field-json.md +52 -15
  25. package/skills/lark-base/references/lark-base-field-update.md +4 -2
  26. package/skills/lark-base/references/lark-base-view-set-filter.md +3 -1
  27. package/skills/lark-calendar/SKILL.md +89 -31
  28. package/skills/lark-calendar/references/lark-calendar-create.md +8 -39
  29. package/skills/lark-calendar/references/lark-calendar-room-find.md +5 -9
  30. package/skills/lark-calendar/references/lark-calendar-rsvp.md +1 -5
  31. package/skills/lark-calendar/references/lark-calendar-schedule-clear-time.md +59 -0
  32. package/skills/lark-calendar/references/lark-calendar-schedule-fuzzy-time.md +88 -0
  33. package/skills/lark-calendar/references/lark-calendar-schedule-meeting.md +67 -210
  34. package/skills/lark-calendar/references/lark-calendar-suggestion.md +1 -5
  35. package/skills/lark-calendar/references/lark-calendar-update.md +2 -7
  36. package/skills/lark-doc/SKILL.md +1 -1
  37. package/skills/lark-doc/references/lark-doc-fetch.md +4 -2
  38. package/skills/lark-doc/references/lark-doc-mindnote.md +17 -2
  39. package/skills/lark-doc/references/lark-doc-whiteboard.md +4 -0
  40. package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +35 -0
  41. package/skills/lark-doc/references/lark-doc-xml.md +3 -2
  42. package/skills/lark-drive/SKILL.md +20 -8
  43. package/skills/lark-drive/references/lark-drive-comment-location.md +16 -4
  44. package/skills/lark-drive/references/lark-drive-comments-guide.md +16 -8
  45. package/skills/lark-drive/references/lark-drive-delete.md +35 -11
  46. package/skills/lark-drive/references/lark-drive-export.md +39 -10
  47. package/skills/lark-drive/references/lark-drive-files-list.md +27 -2
  48. package/skills/lark-drive/references/lark-drive-inspect.md +2 -0
  49. package/skills/lark-drive/references/lark-drive-list-comments.md +125 -0
  50. package/skills/lark-drive/references/lark-drive-member-add.md +1 -1
  51. package/skills/lark-drive/references/lark-drive-move.md +5 -3
  52. package/skills/lark-drive/references/lark-drive-permission-guide.md +12 -0
  53. package/skills/lark-drive/references/lark-drive-pull.md +3 -3
  54. package/skills/lark-drive/references/lark-drive-push.md +33 -6
  55. package/skills/lark-drive/references/lark-drive-status.md +12 -14
  56. package/skills/lark-drive/references/lark-drive-task-result.md +58 -5
  57. package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize.md +26 -20
  58. package/skills/lark-drive/references/lark-drive-workflow.md +2 -1
  59. package/skills/lark-event/SKILL.md +2 -1
  60. package/skills/lark-event/references/lark-event-approval.md +170 -0
  61. package/skills/lark-im/SKILL.md +5 -4
  62. package/skills/lark-im/references/lark-im-messages-reply.md +1 -1
  63. package/skills/lark-im/references/lark-im-messages-send.md +1 -1
  64. package/skills/lark-mail/SKILL.md +12 -9
  65. package/skills/lark-mail/references/lark-mail-forward.md +1 -1
  66. package/skills/lark-mail/references/lark-mail-message-modify.md +48 -0
  67. package/skills/lark-mail/references/lark-mail-message-trash.md +41 -0
  68. package/skills/lark-mail/references/lark-mail-reply-all.md +1 -1
  69. package/skills/lark-mail/references/lark-mail-reply.md +1 -1
  70. package/skills/lark-mail/references/lark-mail-watch.md +1 -1
  71. package/skills/lark-markdown/SKILL.md +3 -2
  72. package/skills/lark-markdown/references/lark-markdown-create.md +22 -2
  73. package/skills/lark-minutes/SKILL.md +19 -4
  74. package/skills/lark-minutes/references/lark-minutes-download.md +0 -2
  75. package/skills/lark-minutes/references/lark-minutes-search.md +0 -2
  76. package/skills/lark-minutes/references/lark-minutes-speaker-replace.md +0 -2
  77. package/skills/lark-minutes/references/lark-minutes-summary.md +0 -2
  78. package/skills/lark-minutes/references/lark-minutes-todo.md +2 -4
  79. package/skills/lark-minutes/references/lark-minutes-update.md +0 -2
  80. package/skills/lark-minutes/references/lark-minutes-upload.md +10 -10
  81. package/skills/lark-shared/SKILL.md +26 -8
  82. package/skills/lark-sheets/SKILL.md +98 -29
  83. package/skills/lark-sheets/references/lark-sheets-batch-update.md +18 -9
  84. package/skills/lark-sheets/references/lark-sheets-changeset.md +105 -0
  85. package/skills/lark-sheets/references/lark-sheets-chart.md +4 -2
  86. package/skills/lark-sheets/references/lark-sheets-conditional-format.md +2 -0
  87. package/skills/lark-sheets/references/lark-sheets-filter-view.md +1 -1
  88. package/skills/lark-sheets/references/lark-sheets-float-image.md +6 -6
  89. package/skills/lark-sheets/references/lark-sheets-formula-translation.md +12 -3
  90. package/skills/lark-sheets/references/lark-sheets-formula-verify.md +77 -0
  91. package/skills/lark-sheets/references/lark-sheets-history.md +93 -0
  92. package/skills/lark-sheets/references/lark-sheets-pivot-table.md +7 -2
  93. package/skills/lark-sheets/references/lark-sheets-range-operations.md +44 -14
  94. package/skills/lark-sheets/references/lark-sheets-read-data.md +3 -3
  95. package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +4 -4
  96. package/skills/lark-sheets/references/lark-sheets-visual-standards.md +4 -4
  97. package/skills/lark-sheets/references/lark-sheets-workbook.md +29 -4
  98. package/skills/lark-sheets/references/lark-sheets-write-cells.md +21 -11
  99. package/skills/lark-slides/SKILL.md +29 -18
  100. package/skills/lark-slides/references/asset-planning.md +16 -5
  101. package/skills/lark-slides/references/examples.md +57 -227
  102. package/skills/lark-slides/references/iconpark.md +2 -2
  103. package/skills/lark-slides/references/lark-slides-create.md +21 -2
  104. package/skills/lark-slides/references/lark-slides-media-upload.md +0 -1
  105. package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +89 -0
  106. package/skills/lark-slides/references/lark-slides-replace-pages.md +1 -1
  107. package/skills/lark-slides/references/lark-slides-replace-slide.md +1 -1
  108. package/skills/lark-slides/references/lark-slides-screenshot.md +11 -8
  109. package/skills/lark-slides/references/lark-slides-whiteboard.md +31 -30
  110. package/skills/lark-slides/references/lark-slides-xml-get.md +100 -0
  111. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +9 -7
  112. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +4 -4
  113. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +12 -10
  114. package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +14 -13
  115. package/skills/lark-slides/references/planning-layer.md +32 -2
  116. package/skills/lark-slides/references/slides_chart_demo.xml +1 -0
  117. package/skills/lark-slides/references/slides_xml_schema_definition.xml +8 -3
  118. package/skills/lark-slides/references/troubleshooting.md +7 -25
  119. package/skills/lark-slides/references/validation-checklist.md +18 -9
  120. package/skills/lark-slides/references/visual-planning.md +4 -3
  121. package/skills/lark-slides/references/xml-format-guide.md +65 -1
  122. package/skills/lark-slides/references/xml-schema-quick-ref.md +7 -3
  123. package/skills/lark-slides/scripts/xml_text_overlap_lint.py +907 -54
  124. package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +876 -5
  125. package/skills/lark-task/SKILL.md +1 -0
  126. package/skills/lark-task/references/lark-task-create.md +14 -1
  127. package/skills/lark-vc/SKILL.md +6 -3
  128. package/skills/lark-vc/references/lark-vc-recording.md +0 -2
  129. package/skills/lark-vc/references/vc-domain-boundaries.md +9 -1
  130. package/skills/lark-vc-agent/SKILL.md +25 -15
  131. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md +65 -37
  132. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +1 -1
  133. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-list-active.md +8 -8
  134. package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +5 -2
  135. package/skills/lark-wiki/SKILL.md +7 -3
  136. package/skills/lark-wiki/references/lark-wiki-move-to-drive.md +122 -0
  137. package/skills/lark-wiki/references/lark-wiki-move.md +5 -3
  138. package/skills/lark-wiki/references/lark-wiki-node-get.md +1 -1
  139. package/skills/lark-wiki/references/lark-wiki-node-list.md +9 -2
  140. package/skills/lark-calendar/references/lark-calendar-agenda.md +0 -78
  141. package/skills/lark-calendar/references/lark-calendar-freebusy.md +0 -124
  142. package/skills/lark-calendar/references/lark-calendar-search-event.md +0 -29
  143. package/skills/lark-sheets/references/lark-sheets-core-operations.md +0 -103
  144. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +0 -220
@@ -2,6 +2,8 @@
2
2
 
3
3
  `<whiteboard>` 放在 `<data>` 内,内部可放 **SVG** 或 **Mermaid**,用于绘制流程图、时序图、架构图、散点图、漏斗图、自定义图标、装饰图案等 `<chart>` 和 `<shape>` 难以覆盖的视觉内容。
4
4
 
5
+ 普通柱状图、条形图、折线图、面积图、雷达图、饼图 / 环图和组合图应优先使用原生 `<chart>`。除非用户明确要求像素级自定义,或图表类型确实不受 `<chart>` 支持,否则不要用 `<whiteboard>` + SVG / Mermaid 重画这些标准图表。
6
+
5
7
  > 前置条件:使用本文档前先阅读 [lark-slides SKILL.md](../SKILL.md)。
6
8
 
7
9
  ---
@@ -12,13 +14,13 @@
12
14
 
13
15
  | 场景 | 推荐元素 |
14
16
  |------|---------|
15
- | 有结构化数据序列的柱/条/折线/面积/雷达/饼/组合图 | `<chart>` — 原生渲染,支持 legend / tooltip / 系列配色 |
16
- | 散点图、漏斗图(`<chart>` 不支持) | `<whiteboard>` SVG |
17
+ | 有结构化数据序列的柱/条/折线/面积/雷达/饼/环/组合图 | `<chart>` — 原生渲染,支持 legend / tooltip / 系列配色 |
18
+ | 散点图、漏斗图(`<chart>` 不支持)或其他非原生数据视觉 | `<whiteboard>` SVG |
17
19
  | 流程图、时序图、架构图、类图、ER 图等拓扑图 | `<whiteboard>` Mermaid 或 SVG |
18
20
  | 自定义图标、徽标、示意性图形(需要 path/polygon 精确控制) | `<whiteboard>` SVG |
19
21
  | 进度条、波浪背景、装饰图案、像素级自定义可视化 | `<whiteboard>` SVG |
20
22
 
21
- > 适合 `<chart>` 的内容就用 `<chart>`,不要用 SVG 手绘——原生渲染更省力且质量更高。
23
+ > 适合 `<chart>` 的内容就用 `<chart>`,不要用 SVG / Mermaid 手绘——原生渲染更省力、结构更稳定,也更容易被回读和后续编辑。
22
24
 
23
25
  ---
24
26
 
@@ -39,9 +41,13 @@ SVG 内的坐标相对于 whiteboard 自身左上角(0,0),与 slide 坐标
39
41
 
40
42
  ## SVG 还是 Mermaid?
41
43
 
42
- 选择分两步:**先看图表类型,再看当前模型身份**。
44
+ 选择分三步:**先排除原生 `<chart>`,再判断 whiteboard 类型,最后看当前模型身份**。
45
+
46
+ ### 第一步:先确认是否应该使用 `<chart>`
43
47
 
44
- ### 第一步:图表类型优先判断
48
+ 如果内容是柱状图、条形图、折线图、面积图、雷达图、饼图 / 环图或组合图,返回使用原生 `<chart>`,不要继续套用本文档的 SVG / Mermaid 路径。
49
+
50
+ ### 第二步:whiteboard 类型优先判断
45
51
 
46
52
  以下类型**推荐 Mermaid**,自动布局、代码简洁;如需精确匹配品牌配色或自定义节点样式,可改用 SVG:
47
53
 
@@ -50,20 +56,19 @@ SVG 内的坐标相对于 whiteboard 自身左上角(0,0),与 slide 坐标
50
56
  | 流程图、决策树、架构图 | `flowchart TD` / `flowchart LR` |
51
57
  | 时序图 | `sequenceDiagram` |
52
58
  | 类图 | `classDiagram` |
53
- | 饼图 | `pie` |
54
59
  | 甘特图 | `gantt` |
55
60
  | 状态图 | `stateDiagram-v2` |
56
61
  | 思维导图 | `mindmap` |
57
62
  | ER 图 | `erDiagram` |
58
63
 
59
- ### 第二步:数据图表与装饰元素按模型身份选路径
64
+ ### 第三步:非原生图表与装饰元素按模型身份选路径
60
65
 
61
66
  上表以外的场景(散点图、漏斗图、进度条、时间线、波浪背景、星点纹理等)需要精确控制坐标和配色,SVG 表达力更强,但各模型生成 SVG 的能力有差异:
62
67
 
63
68
  | 模型身份 | 路径 |
64
69
  |----------|------|
65
70
  | Claude / Gemini / GPT / GLM | **SVG** — 精确控制坐标、颜色、透明度 |
66
- | Doubao / Seed / Other | **Mermaid** — 用 `pie`、`gantt` 等近似表达;确实无法用 Mermaid 表达时才回退到简单 SVG 矩形/线条 |
71
+ | Doubao / Seed / Other | **Mermaid** — 用 `gantt`、`flowchart` 等近似表达;确实无法用 Mermaid 表达时才回退到简单 SVG 矩形/线条 |
67
72
 
68
73
  > **先自报身份再选路径**:在决定使用 SVG 之前,确认当前模型属于哪一类。不要跳过这一步。
69
74
 
@@ -73,13 +78,13 @@ SVG 内的坐标相对于 whiteboard 自身左上角(0,0),与 slide 坐标
73
78
 
74
79
  ### ⚠️ 设计品质要求
75
80
 
76
- 在 slide 里嵌入 `<whiteboard>` 的目的是**提升视觉质量**,不是把数字堆进去。
81
+ 在 slide 里嵌入 `<whiteboard>` 的目的是**表达原生 `<chart>` 或基础 `<shape>` 难以覆盖的视觉关系**,不是把标准数据图表手绘一遍。
77
82
 
78
83
  - **不要只用矩形加文字应付**:通篇纯白底色 + 方块 + 黑字等于白做,这是不及格输出
79
- - **数据图表必须有坐标系**:坐标轴、网格线、数值标注缺一不可,不要只画柱子或点
84
+ - **非原生数据视觉必须有坐标系**:散点、漏斗等仍要有必要的坐标轴、刻度、数值标注或分段说明,不要只画点或色块
80
85
  - **字号必须有层级**:标题 ≠ 标签 ≠ 数值,混用同一字号会消灭视觉焦点
81
86
  - **配色要与 slide 主题呼应**:深色 slide 背景下图表用透明底或深色卡片;浅色背景下避免再加纯白底块
82
- - **每个 whiteboard 都是设计机会**:主动用圆角、半透明填充、折线面积、点装饰等细节拉开与默认模板的差距
87
+ - **每个 whiteboard 都是设计机会**:主动用圆角、半透明填充、清晰分组、节点状态等细节拉开与默认模板的差距
83
88
  - **写 SVG 前先判断背景亮度**:背景亮度 < 30% 时,装饰元素"对比不足"比"过强"危害更大,宁重勿轻;
84
89
  - **装饰层次用亮度跳跃,不用线性叠透明度**:`α=0.04→0.08→0.12` 的等差递增在深色底上几乎看不出差异(相邻层亮度差 ≈20);正确做法是非线性跳跃如 `0.10→0.40→0.70→1.0`,相邻层亮度差 ≥60。
85
90
 
@@ -106,11 +111,11 @@ whiteboard 渲染时以**所有子元素的几何包围盒合并结果**为内
106
111
 
107
112
  | 元素 | 说明 | 典型用途 |
108
113
  |------|------|---------|
109
- | `<rect>` | 矩形,支持 `rx` 圆角 | 柱图、卡片、进度条 |
114
+ | `<rect>` | 矩形,支持 `rx` 圆角 | 卡片、进度条、分段色块 |
110
115
  | `<circle>` | 圆 | 节点、装饰点、环形图 |
111
116
  | `<ellipse>` | 椭圆 | 自定义轮廓图形 |
112
- | `<line>` | 直线 | 坐标轴、分隔线 |
113
- | `<path>` | 任意路径(支持 Q/C 曲线) | 波浪、折线、弧形 |
117
+ | `<line>` | 直线 | 轴线、分隔线、连接线 |
118
+ | `<path>` | 任意路径(支持 Q/C 曲线) | 波浪、曲线、弧形 |
114
119
  | `<text>` | 文本,支持中文 | 标签、数值 |
115
120
  | `<polygon>` | 多边形 | 箭头、星形、面积填充 |
116
121
  | `<g>` | 分组 | 批量变换、语义分组 |
@@ -123,27 +128,25 @@ whiteboard 渲染时以**所有子元素的几何包围盒合并结果**为内
123
128
  ---
124
129
  ### 元素计算
125
130
 
126
- SVG 中只要涉及批量定位、等间距排布或数据映射,**建议额外运行一个 Python 脚本把坐标算出来再填入 SVG**,而不是手动估值。适用范围不限于数据图表——装饰性点阵、等间距圆、重复图案同样适用。
131
+ SVG 中只要涉及批量定位、等间距排布或数据映射,**建议额外运行一个 Python 脚本把坐标算出来再填入 SVG**,而不是手动估值。适用范围包括散点、漏斗、装饰性点阵、等间距圆、重复图案等;普通柱状图、折线图、饼图仍应回到原生 `<chart>`。
127
132
 
128
133
  > **主动去算**:写 SVG 之前先运行脚本,把输出当注释贴在 `<svg>` 开头,再照着填坐标。估值几乎每次都需要反复调整,跳过这步反而更慢。
129
134
 
130
- **数据图表(柱状图范式)**
135
+ **散点图 / 装饰性点阵范式**
131
136
 
132
137
  ```python
133
138
  W, H = 360, 260
134
139
  origin_x, origin_y = 50, 216 # 左下角,SVG Y 轴向下
135
140
  cw, ch = 290, 184
136
141
 
137
- data, y_max = [120, 160, 90], 200
138
- bar_w = int(cw / len(data) * 0.62)
139
- for i, v in enumerate(data):
140
- cx = round(origin_x + (i + 0.5) * cw / len(data))
141
- y = round(origin_y - v / y_max * ch)
142
- print(f"bar-{i}: x={cx - bar_w//2} y={y} w={bar_w} h={round(origin_y - y)}")
142
+ points = [(12, 40), (28, 80), (45, 65)]
143
+ x_min, x_max, y_min, y_max = 0, 50, 0, 100
144
+ for i, (xv, yv) in enumerate(points):
145
+ x = round(origin_x + (xv - x_min) / (x_max - x_min) * cw)
146
+ y = round(origin_y - (yv - y_min) / (y_max - y_min) * ch)
147
+ print(f"point-{i}: cx={x} cy={y}")
143
148
  ```
144
149
 
145
- 折线图:`x = origin_x + i/(n-1)*cw`,`y = origin_y - (v-y_min)/(y_max-y_min)*ch`。
146
-
147
150
  **装饰性元素(等间距范式)**
148
151
 
149
152
  ```python
@@ -160,9 +163,9 @@ for i in range(n):
160
163
  ```python
161
164
  # 每个元素登记 (x, y, w, h),含 stroke 外扩
162
165
  elements = [
163
- (10, 20, 80, 160), # bar-0
164
- (107, 10, 80, 170), # bar-1
165
- (204, 40, 80, 140), # bar-2
166
+ (10, 20, 80, 160), # item-0
167
+ (107, 10, 80, 170), # item-1
168
+ (204, 40, 80, 140), # item-2
166
169
  (0, 0, 300, 1), # x-axis
167
170
  ]
168
171
 
@@ -261,7 +264,6 @@ print(f"whiteboard width={wb_w} height={wb_h}")
261
264
  | 流程图 | `flowchart TD` / `flowchart LR` | 业务流程、决策树、工作流 |
262
265
  | 时序图 | `sequenceDiagram` | 系统交互、API 调用链 |
263
266
  | 甘特图 | `gantt` | 项目计划、里程碑 |
264
- | 饼图 | `pie` | 占比数据 |
265
267
  | 类图 | `classDiagram` | 对象关系、架构设计 |
266
268
  | ER 图 | `erDiagram` | 数据库结构 |
267
269
  | 状态图 | `stateDiagram-v2` | 状态机、生命周期 |
@@ -279,7 +281,6 @@ Mermaid 图表会自动撑满 whiteboard 区域。建议:
279
281
  |---------|-----------|------------|
280
282
  | 流程图(5-8 节点) | 720-816 | 300-400 |
281
283
  | 时序图(3-5 参与者) | 720-816 | 320-420 |
282
- | 饼图 | 500-600 | 300-360 |
283
284
  | 甘特图 | 816 | 280-360 |
284
285
  | 思维导图 | 816 | 380-480 |
285
286
 
@@ -307,7 +308,7 @@ Mermaid 语法包含 `[`、`>`、`-->`,不用 CDATA 直接写会破坏 XML 解
307
308
  - [ ] 文字 `y` 坐标为 baseline 位置,最小值 ≥ font-size(避免被裁切)
308
309
 
309
310
  **SVG 模式——视觉品质检查:**
310
- - [ ] 坐标轴、网格线、数值标注齐全,没有"裸柱子"或"裸折线"
311
+ - [ ] 非原生数据视觉有必要的坐标轴、网格线、数值标注或分段说明,没有"裸点"或无解释色块
311
312
  - [ ] 字号有层级:标题 > 数值 > 轴标签,非全部相同
312
313
  - [ ] 单一数据系列用同一颜色,多系列用不同颜色且对比充足
313
314
  - [ ] 轴标签与图表元素互不遮挡,留有足够空间
@@ -0,0 +1,100 @@
1
+ # slides +xml-get(读取 XML)
2
+
3
+ 读取已有演示文稿的完整 XML,或按 `slide_id` / 页码读取单页 XML。适合创建后验收、编辑前备份、获取 `slide_id` / `revision_id`,以及排查空白页、破图、文本溢出等问题。相比直接调用底层 `xml_presentations.get` / `xml_presentation.slide.get`,本 shortcut 会自动解析 Slides URL / Wiki URL,并可把 XML 保存到本地文件,避免终端输出被截断。
4
+
5
+ ## 命令
6
+
7
+
8
+ ```bash
9
+ lark-cli slides +xml-get \
10
+ --as user \
11
+ --presentation <slides_url_or_xml_presentation_id> \
12
+ --output .lark-slides/plan/<deck-id>/readback.xml
13
+ ```
14
+
15
+ ## 参数
16
+
17
+ | 参数 | 必需 | 说明 |
18
+ |------|------|------|
19
+ | `--presentation` | 是 | `xml_presentation_id`、`/slides/` URL 或 `/wiki/` URL |
20
+ | `--output` | 否 | 本地 XML 保存路径,必须是当前工作目录内的相对路径,不能传绝对路径。传入时 XML 内容保存到文件,stdout 只返回保存后的绝对路径、大小等简短元信息;省略时默认返回 JSON envelope |
21
+ | `--slide-id` | 否 | 页面 short ID;传入后只读取该页 XML。不能和 `--slide-number` 同时使用 |
22
+ | `--slide-number` | 否 | 1-based 页码;传入后只读取该页 XML。不能和 `--slide-id` 同时使用 |
23
+ | `--revision-id` | 否 | 读取指定版本;默认 `-1`,表示最新版本 |
24
+ | `--remove-attr-id` | 否 | 仅全文读取可用。移除返回 XML 中的 `id` 属性;适合只读检查,不适合精确块级编辑 |
25
+ | `--raw` | 否 | 省略 `--output` 时直接把 XML 原文写到 stdout,不包 JSON envelope。不能和 `--output` / `--jq` / 非 json `--format` 同时使用 |
26
+ | `--dry-run` | 否 | 预览将调用的 API 和输出方式,不读取真实 XML |
27
+
28
+ ## 输出到文件
29
+
30
+ 推荐普通工作流都传 `--output`,尤其是中大型 PPT。`--output` 必须是当前工作目录内的相对路径,例如 `.lark-slides/plan/$PID/readback.xml`,不要传 `/tmp/readback.xml` 这类绝对路径。XML 会写入本地文件,stdout 只保留元信息,便于后续脚本读取。
31
+
32
+ ```bash
33
+ lark-cli slides +xml-get --as user \
34
+ --presentation "$PID" \
35
+ --output .lark-slides/plan/$PID/readback.xml
36
+ ```
37
+
38
+ 成功输出中的 `data` 类似:
39
+
40
+ ```json
41
+ {
42
+ "xml_presentation_id": "slides_example_presentation_id",
43
+ "path": "/abs/path/.lark-slides/plan/slides_example_presentation_id/readback.xml",
44
+ "size": 123456,
45
+ "content_saved": true,
46
+ "revision_id": 12
47
+ }
48
+ ```
49
+
50
+ 其中 `path` 是 CLI 解析后的绝对路径。
51
+
52
+ 如果传入 `--remove-attr-id`,返回元信息中会包含 `"remove_attr_id": true`。
53
+
54
+ ## 读取单页
55
+
56
+ 已知页面 short ID 时,用 `--slide-id`:
57
+
58
+ ```bash
59
+ lark-cli slides +xml-get --as user \
60
+ --presentation "$PID" \
61
+ --slide-id "$SID" \
62
+ --output .lark-slides/plan/$PID/slide-$SID.xml
63
+ ```
64
+
65
+ 已知页码时,用 `--slide-number`(页码从 1 开始):
66
+
67
+ ```bash
68
+ lark-cli slides +xml-get --as user \
69
+ --presentation "$PID" \
70
+ --slide-number 2 \
71
+ --output .lark-slides/plan/$PID/slide-2.xml
72
+ ```
73
+
74
+ 单页模式底层调用 `xml_presentation.slide.get`,返回或保存的是单个 `<slide>` XML 片段。`--slide-id` 和 `--slide-number` 不能同时传;`--remove-attr-id` 只支持全文读取。
75
+
76
+ ## 输出到终端
77
+
78
+ 省略 `--output` 时,CLI 默认输出 JSON envelope,XML 位于 `data.xml_presentation.content`(全文)或 `data.slide.content`(单页)。这个模式适合配合 `--jq` 临时提取:
79
+
80
+ ```bash
81
+ lark-cli slides +xml-get --as user \
82
+ --presentation "$PID" \
83
+ --jq '.data.xml_presentation.content'
84
+ ```
85
+
86
+ 需要把 XML 原文直接写到 stdout 时,加 `--raw`:
87
+
88
+ ```bash
89
+ lark-cli slides +xml-get --as user \
90
+ --presentation "$PID" \
91
+ --slide-number 2 \
92
+ --raw
93
+ ```
94
+
95
+ ## 相关命令
96
+
97
+ - [slides +screenshot](lark-slides-screenshot.md) - 获取页面截图做视觉验证
98
+ - [slides +replace-slide](lark-slides-replace-slide.md) - 局部替换或插入页面元素
99
+ - [slides +replace-pages](lark-slides-replace-pages.md) - 多页整页重建
100
+ - [xml_presentations get](lark-slides-xml-presentations-get.md) - 底层原生 API 参考
@@ -49,7 +49,10 @@ lark-cli slides xml_presentation.slide delete --as user --params '{
49
49
 
50
50
  ```bash
51
51
  # 先读取 XML 内容,确认待删除页面
52
- lark-cli slides xml_presentations get --as user --params '{"xml_presentation_id":"slides_example_presentation_id"}' | jq -r '.data.xml_presentation.content'
52
+ lark-cli slides +xml-get --as user \
53
+ --presentation "slides_example_presentation_id" \
54
+ --output .lark-slides/plan/slides_example_presentation_id/readback.xml \
55
+ --json
53
56
 
54
57
  # 然后按已知 slide_id 删除
55
58
  lark-cli slides xml_presentation.slide delete --as user --params '{"xml_presentation_id":"slides_example_presentation_id","slide_id":"slide_example_id"}'
@@ -61,11 +64,11 @@ lark-cli slides xml_presentation.slide delete --as user --params '{"xml_presenta
61
64
 
62
65
  ```json
63
66
  {
64
- "code": 0,
67
+ "ok": true,
68
+ "identity": "user",
65
69
  "data": {
66
70
  "revision_id": 100
67
- },
68
- "msg": "success"
71
+ }
69
72
  }
70
73
  ```
71
74
 
@@ -118,6 +121,5 @@ done
118
121
 
119
122
  ## 相关命令
120
123
 
121
- - [slides +create](lark-slides-create.md) - 创建空白 PPT
122
- - [xml_presentations get](lark-slides-xml-presentations-get.md) - 读取 PPT 内容
123
- - [xml_presentation.slide create](lark-slides-xml-presentation-slide-create.md) - 添加幻灯片页面
124
+ - [slides +create](lark-slides-create.md) - 创建 PPT / 添加幻灯片页面
125
+ - [slides +xml-get](lark-slides-xml-get.md) - 读取 PPT 内容并保存到本地文件
@@ -65,15 +65,15 @@ lark-cli slides xml_presentation.slide get --as user --params '{
65
65
 
66
66
  ```json
67
67
  {
68
- "code": 0,
68
+ "ok": true,
69
+ "identity": "user",
69
70
  "data": {
70
71
  "slide": {
71
72
  "slide_id": "slide_example_id",
72
73
  "content": "<slide id=\"slide_example_id\"><style/><data>...</data></slide>"
73
74
  },
74
75
  "revision_id": 100
75
- },
76
- "msg": "success"
76
+ }
77
77
  }
78
78
  ```
79
79
 
@@ -106,5 +106,5 @@ lark-cli slides xml_presentation.slide get --as user --params '{
106
106
 
107
107
  - [slides +replace-slide](lark-slides-replace-slide.md) — 块级替换 shortcut(推荐)
108
108
  - [xml_presentation.slide replace](lark-slides-xml-presentation-slide-replace.md) — 底层 replace API 参考
109
- - [xml_presentations get](lark-slides-xml-presentations-get.md) — 读整个 PPT
109
+ - [slides +xml-get](lark-slides-xml-get.md) — 读整个 PPT 并保存到本地文件
110
110
  - [lark-slides-edit-workflows.md](lark-slides-edit-workflows.md) — 读-改-写闭环
@@ -130,24 +130,28 @@ lark-cli slides xml_presentation.slide replace --as user --params '{
130
130
 
131
131
  ```json
132
132
  {
133
- "code": 0,
133
+ "ok": true,
134
+ "identity": "user",
134
135
  "data": {
135
136
  "revision_id": 105
136
- },
137
- "msg": "success"
137
+ }
138
138
  }
139
139
  ```
140
140
 
141
141
  ### 失败(任一 part 失败,整批不生效)
142
142
 
143
- 失败时返回非零错误码(如 3350001)。若后端能定位失败的 part,`data` 中可能附带:
143
+ 失败时命令以非零退出码结束,stderr 返回类型化错误信封(`error.code`(如 3350001)/ `error.message` / `error.hint`),stdout 不会打印后端原始响应:
144
144
 
145
145
  ```json
146
146
  {
147
- "code": 3350001,
148
- "data": {
149
- "failed_part_index": 0,
150
- "failed_reason": "block not found"
147
+ "ok": false,
148
+ "identity": "user",
149
+ "error": {
150
+ "type": "api",
151
+ "subtype": "...",
152
+ "code": 3350001,
153
+ "message": "...",
154
+ "hint": "..."
151
155
  }
152
156
  }
153
157
  ```
@@ -155,8 +159,6 @@ lark-cli slides xml_presentation.slide replace --as user --params '{
155
159
  | 字段 | 类型 | 说明 |
156
160
  |------|------|------|
157
161
  | `data.revision_id` | integer | 成功时返回更新后最新版本号 |
158
- | `data.failed_part_index` | integer | 失败的 part 在 `parts` 数组中的索引(从 0 起) |
159
- | `data.failed_reason` | string | 失败原因 |
160
162
 
161
163
  ## 常见错误
162
164
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  读取飞书幻灯片(PPT)演示文稿的完整 XML 内容信息。
6
6
 
7
- ## 命令
7
+ ## 底层原生命令形态
8
8
 
9
9
  ```bash
10
10
  lark-cli slides xml_presentations get --as user --params '<json_params>'
@@ -35,19 +35,22 @@ lark-cli slides xml_presentations get --as user --params '<json_params>'
35
35
  ### 基础示例
36
36
 
37
37
  ```bash
38
- lark-cli slides xml_presentations get --as user --params '{"xml_presentation_id":"slides_example_presentation_id"}'
38
+ lark-cli slides xml_presentations get --as user \
39
+ --params '{"xml_presentation_id":"slides_example_presentation_id","revision_id":-1}'
39
40
  ```
40
41
 
41
- ### 结合 jq 格式化输出
42
+ ### 指定版本读取
42
43
 
43
44
  ```bash
44
- lark-cli slides xml_presentations get --as user --params '{"xml_presentation_id":"slides_example_presentation_id"}' | jq -r '.data.xml_presentation.content'
45
+ lark-cli slides xml_presentations get --as user \
46
+ --params '{"xml_presentation_id":"slides_example_presentation_id","revision_id":10}'
45
47
  ```
46
48
 
47
- ### 保存到文件
49
+ ### 移除 XML id 属性后读取
48
50
 
49
51
  ```bash
50
- lark-cli slides xml_presentations get --as user --params '{"xml_presentation_id":"slides_example_presentation_id"}' > presentation_data.json
52
+ lark-cli slides xml_presentations get --as user \
53
+ --params '{"xml_presentation_id":"slides_example_presentation_id","revision_id":-1,"remove_attr_id":true}'
51
54
  ```
52
55
 
53
56
  ## 返回值
@@ -56,15 +59,15 @@ lark-cli slides xml_presentations get --as user --params '{"xml_presentation_id"
56
59
 
57
60
  ```json
58
61
  {
59
- "code": 0,
62
+ "ok": true,
63
+ "identity": "user",
60
64
  "data": {
61
65
  "xml_presentation": {
62
66
  "presentation_id": "slides_example_presentation_id",
63
67
  "revision_id": 1,
64
68
  "content": "<presentation xmlns=\"http://www.larkoffice.com/sml/2.0\" height=\"540\" width=\"960\">...</presentation>"
65
69
  }
66
- },
67
- "msg": "success"
70
+ }
68
71
  }
69
72
  ```
70
73
 
@@ -86,13 +89,11 @@ lark-cli slides xml_presentations get --as user --params '{"xml_presentation_id"
86
89
 
87
90
  ## 注意事项
88
91
 
89
- 1. **执行前必做**: 使用 `lark-cli schema slides.xml_presentations.get` 查看最新的参数结构
92
+ 1. 直接调用底层 API 前,使用 `lark-cli schema slides.xml_presentations.get` 查看最新的参数结构
90
93
  2. 返回的 XML 在 `data.xml_presentation.content` 字段中
91
94
  3. 如果只需要部分信息,可以使用 `jq` 等工具过滤返回结果
92
- 4. 建议将获取的 XML 保存为文件,便于后续编辑或备份
93
95
 
94
96
  ## 相关命令
95
97
 
96
- - [slides +create](lark-slides-create.md) - 创建空白 PPT
97
- - [xml_presentation.slide create](lark-slides-xml-presentation-slide-create.md) - 添加幻灯片页面
98
+ - [slides +create](lark-slides-create.md) - 创建 PPT / 添加幻灯片页面
98
99
  - [xml_presentation.slide delete](lark-slides-xml-presentation-slide-delete.md) - 删除幻灯片页面
@@ -12,7 +12,7 @@
12
12
  4. 写入 `.lark-slides/plan/<deck-or-task-id>/slide_plan.json`。
13
13
  5. 读取 `xml-schema-quick-ref.md`、`visual-planning.md` 和 `asset-planning.md`。
14
14
  6. 按 plan、visual planning 和 asset planning 规则逐页生成 XML,把 `layout_type`、`visual_focus`、`text_density` 转成具体页面几何和文本量约束,并把缺失素材转成可执行兜底视觉。
15
- 7. 创建 PPT 后用 `xml_presentations.get` 回读,核对页面数量、关键元素和 plan 到 XML 的对应关系。
15
+ 7. 创建 PPT 后用 `slides +xml-get` 回读,核对页面数量、关键元素和 plan 到 XML 的对应关系。
16
16
 
17
17
  ## Plan Path
18
18
 
@@ -119,6 +119,34 @@ Each slide must include:
119
119
  - `text_density`: `low`, `medium`, or `high`.
120
120
  - `speaker_intent`: why the speaker needs this page and how it advances the story.
121
121
 
122
+ Optional slide fields:
123
+
124
+ - `chart_contract`: required when the page plan includes a standard data chart that `<chart>` supports. Use this shape:
125
+
126
+ ```json
127
+ {
128
+ "chart_contract": {
129
+ "required": true,
130
+ "render_as": "native_chart",
131
+ "chart_type": "line",
132
+ "data_source": "mock_placeholder",
133
+ "data_series_required": true,
134
+ "placeholder_label_required": true,
135
+ "manual_shape_fallback_allowed": false
136
+ }
137
+ }
138
+ ```
139
+
140
+ When `chart_contract.required == true`, XML generation must produce a `<chart>` element on that slide. A shape, line, polyline, or whiteboard approximation does not satisfy the plan.
141
+
142
+ `data_source` must be one of:
143
+
144
+ - `user_provided`: the user supplied concrete values, tables, CSV, or metric lists; use them and do not replace them with mock data.
145
+ - `mock_placeholder`: the user asked for a placeholder, template, example, or later-replaceable chart position; use mock data in native `<chart>`.
146
+ - `mock_required_by_intent`: the user did not provide concrete values but asked for data expression, charts, trends, comparisons, or distributions; use mock data in native `<chart>`.
147
+
148
+ `data_series_required` means the generated XML must include `<chartData>`. It does not require user-provided real-world values. When real values are unavailable but chart expression is part of the user's intent, write mock or placeholder values into native `<chart>` and label them clearly instead of switching to manual drawing primitives or metric blocks.
149
+
122
150
  ## Layout Vocabulary
123
151
 
124
152
  Use one of these `layout_type` values unless the user explicitly needs a custom structure:
@@ -183,6 +211,7 @@ Use an object for one planned asset, an array for multiple real needs, or `asset
183
211
  - `purpose`: why this asset helps the page's key message.
184
212
  - `suggested_query`: short future lookup hint only; do not execute it unless separately requested.
185
213
  - `fallback_if_missing`: concrete XML-native visual plan using shapes, labels, tables, whiteboard diagrams, or placeholder panels.
214
+ - `chart_contract`: when `asset_type` is `chart` and the visual is a supported standard data chart, set this optional slide-level field so generation is locked to native `<chart>`.
186
215
 
187
216
  For detailed rules and examples, read `asset-planning.md`.
188
217
 
@@ -190,7 +219,7 @@ Good examples:
190
219
 
191
220
  - `{"asset_type":"architecture_diagram","purpose":"Explain component relationships.","suggested_query":"service architecture diagram","fallback_if_missing":"Draw a component diagram with grouped boxes, connector arrows, and short labels."}`
192
221
  - `{"asset_type":"logo","purpose":"Identify the customer context.","suggested_query":"customer logo","fallback_if_missing":"Use a text label in a small badge."}`
193
- - `{"asset_type":"chart","purpose":"Show adoption trend.","suggested_query":"monthly adoption trend chart","fallback_if_missing":"Draw a simple trend line chart with axis labels and data points."}`
222
+ - `{"asset_type":"chart","purpose":"Show adoption trend.","suggested_query":"monthly adoption trend chart","fallback_if_missing":"Render a native `<chart>` using the provided series when available; otherwise render a native `<chart>` with mock placeholder values and label it as 模拟数据,仅占位,待替换真实数据."}`
194
223
 
195
224
  ## XML Generation Contract
196
225
 
@@ -201,6 +230,7 @@ Before writing each slide XML, map the plan fields to concrete decisions:
201
230
  - `visual_focus` determines the largest visual region or emphasized object.
202
231
  - `text_density` caps visible text volume.
203
232
  - `asset_need` informs placeholder diagrams, icons, charts, screenshots, or shape-based fallback visuals only. Missing real assets must use `fallback_if_missing`, not blank regions.
233
+ - `chart_contract` locks supported standard data charts to native `<chart>` output. Manual approximations are allowed only when the planned chart type is unsupported by `<chart>` or when the visual is explicitly non-data/decorative.
204
234
 
205
235
  After creating the PPT, fetch the presentation and verify:
206
236