@amaster.ai/pi-lark 0.1.5 → 0.1.7

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 (258) hide show
  1. package/README.md +5 -1
  2. package/dist/config.d.ts +1 -1
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +2 -2
  5. package/dist/config.js.map +1 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -1
  8. package/dist/index.js.map +1 -1
  9. package/package.json +4 -4
  10. package/skills/lark-approval/references/lark-approval-initiate.md +2 -5
  11. package/skills/lark-approval/references/lark-approval-instances-initiated.md +6 -0
  12. package/skills/lark-approval/references/lark-approval-tasks-query.md +9 -0
  13. package/skills/lark-approval/references/lark-approval-tasks-rollback.md +8 -2
  14. package/skills/lark-apps/SKILL.md +46 -16
  15. package/skills/lark-apps/creative-design/agents/assets/vision-probe.png +0 -0
  16. package/skills/lark-apps/creative-design/agents/fork-verifier-agent.md +71 -0
  17. package/skills/lark-apps/creative-design/agents/vision-probe-agent.md +41 -0
  18. package/skills/lark-apps/creative-design/assets/index.html +27 -0
  19. package/skills/lark-apps/creative-design/creative-design.md +239 -0
  20. package/skills/lark-apps/creative-design/references/aily.md +39 -0
  21. package/skills/lark-apps/creative-design/references/animated-video.md +34 -0
  22. package/skills/lark-apps/creative-design/references/charts.md +165 -0
  23. package/skills/lark-apps/creative-design/references/claude.md +36 -0
  24. package/skills/lark-apps/creative-design/references/codex.md +32 -0
  25. package/skills/lark-apps/creative-design/references/data-report.md +108 -0
  26. package/skills/lark-apps/creative-design/references/frontend-design.md +71 -0
  27. package/skills/lark-apps/creative-design/references/hi-fi-design.md +32 -0
  28. package/skills/lark-apps/creative-design/references/interactive-prototype.md +24 -0
  29. package/skills/lark-apps/creative-design/references/make-a-deck.md +133 -0
  30. package/skills/lark-apps/creative-design/references/visual-exposure.md +82 -0
  31. package/skills/lark-apps/creative-design/references/wireframe.md +14 -0
  32. package/skills/lark-apps/creative-design/starter-components/android-frame.jsx +188 -0
  33. package/skills/lark-apps/creative-design/starter-components/animations.jsx +773 -0
  34. package/skills/lark-apps/creative-design/starter-components/browser-window.jsx +122 -0
  35. package/skills/lark-apps/creative-design/starter-components/deck-stage.js +2483 -0
  36. package/skills/lark-apps/creative-design/starter-components/design-canvas.jsx +1432 -0
  37. package/skills/lark-apps/creative-design/starter-components/ios-frame.jsx +270 -0
  38. package/skills/lark-apps/creative-design/starter-components/macos-window.jsx +197 -0
  39. package/skills/lark-apps/creative-design/starter-components/tweaks-panel.jsx +752 -0
  40. package/skills/lark-apps/references/lark-apps-access-scope-set.md +1 -1
  41. package/skills/lark-apps/references/lark-apps-automation.md +242 -0
  42. package/skills/lark-apps/references/lark-apps-cache.md +61 -0
  43. package/skills/lark-apps/references/lark-apps-cloud-dev.md +0 -1
  44. package/skills/lark-apps/references/lark-apps-create.md +1 -2
  45. package/skills/lark-apps/references/lark-apps-db-execute.md +186 -2
  46. package/skills/lark-apps/references/lark-apps-db.md +4 -4
  47. package/skills/lark-apps/references/lark-apps-env-pull.md +1 -1
  48. package/skills/lark-apps/references/lark-apps-file.md +2 -2
  49. package/skills/lark-apps/references/lark-apps-get.md +43 -0
  50. package/skills/lark-apps/references/lark-apps-git-credential.md +1 -1
  51. package/skills/lark-apps/references/lark-apps-html-publish.md +5 -4
  52. package/skills/lark-apps/references/lark-apps-init.md +2 -3
  53. package/skills/lark-apps/references/lark-apps-list.md +1 -1
  54. package/skills/lark-apps/references/lark-apps-local-dev.md +54 -11
  55. package/skills/lark-apps/references/lark-apps-openapi-key.md +1 -1
  56. package/skills/lark-apps/references/lark-apps-release-create.md +5 -3
  57. package/skills/lark-apps/references/lark-apps-release-get.md +3 -3
  58. package/skills/lark-apps/references/lark-apps-role.md +133 -0
  59. package/skills/lark-base/SKILL.md +26 -15
  60. package/skills/lark-base/references/dashboard-block-data-config.md +28 -2
  61. package/skills/lark-base/references/lark-base-cell-value.md +12 -7
  62. package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +7 -7
  63. package/skills/lark-base/references/lark-base-dashboard.md +11 -2
  64. package/skills/lark-base/references/lark-base-data-query.md +20 -11
  65. package/skills/lark-base/references/lark-base-field-create.md +8 -2
  66. package/skills/lark-base/references/lark-base-field-json.md +56 -19
  67. package/skills/lark-base/references/lark-base-field-update.md +21 -3
  68. package/skills/lark-base/references/lark-base-filter-condition.md +179 -0
  69. package/skills/lark-base/references/lark-base-form-questions-create.md +40 -7
  70. package/skills/lark-base/references/lark-base-form-questions-update.md +73 -20
  71. package/skills/lark-base/references/lark-base-form-submit.md +16 -7
  72. package/skills/lark-base/references/lark-base-record-batch-create.md +12 -10
  73. package/skills/lark-base/references/lark-base-record-batch-update.md +11 -9
  74. package/skills/lark-base/references/lark-base-record-upsert.md +1 -1
  75. package/skills/lark-base/references/lark-base-role-guide.md +11 -0
  76. package/skills/lark-base/references/lark-base-view-set-filter.md +14 -138
  77. package/skills/lark-base/references/role-config.md +31 -5
  78. package/skills/lark-calendar/SKILL.md +101 -37
  79. package/skills/lark-calendar/references/lark-calendar-create.md +13 -43
  80. package/skills/lark-calendar/references/lark-calendar-recurring.md +1 -0
  81. package/skills/lark-calendar/references/lark-calendar-room-find.md +7 -10
  82. package/skills/lark-calendar/references/lark-calendar-rsvp.md +1 -5
  83. package/skills/lark-calendar/references/lark-calendar-schedule-clear-time.md +60 -0
  84. package/skills/lark-calendar/references/lark-calendar-schedule-fuzzy-time.md +88 -0
  85. package/skills/lark-calendar/references/lark-calendar-schedule-meeting.md +67 -210
  86. package/skills/lark-calendar/references/lark-calendar-suggestion.md +2 -6
  87. package/skills/lark-calendar/references/lark-calendar-update.md +12 -11
  88. package/skills/lark-contact/SKILL.md +19 -3
  89. package/skills/lark-contact/references/lark-contact-search-bot.md +60 -0
  90. package/skills/lark-doc/SKILL.md +1 -1
  91. package/skills/lark-doc/references/lark-doc-fetch.md +14 -4
  92. package/skills/lark-doc/references/lark-doc-mindnote.md +17 -2
  93. package/skills/lark-doc/references/lark-doc-whiteboard.md +13 -8
  94. package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +76 -0
  95. package/skills/lark-doc/references/lark-doc-xml.md +6 -4
  96. package/skills/lark-drive/SKILL.md +35 -43
  97. package/skills/lark-drive/references/lark-drive-add-comment.md +2 -4
  98. package/skills/lark-drive/references/lark-drive-add-reply.md +47 -0
  99. package/skills/lark-drive/references/lark-drive-apply-permission.md +2 -2
  100. package/skills/lark-drive/references/lark-drive-batch-query-comments.md +46 -0
  101. package/skills/lark-drive/references/lark-drive-comment-content.md +50 -0
  102. package/skills/lark-drive/references/lark-drive-comment-location.md +18 -12
  103. package/skills/lark-drive/references/lark-drive-delete-reply.md +48 -0
  104. package/skills/lark-drive/references/lark-drive-delete.md +35 -11
  105. package/skills/lark-drive/references/lark-drive-download.md +5 -1
  106. package/skills/lark-drive/references/lark-drive-export.md +39 -10
  107. package/skills/lark-drive/references/lark-drive-files-list.md +27 -2
  108. package/skills/lark-drive/references/lark-drive-inspect.md +2 -0
  109. package/skills/lark-drive/references/lark-drive-list-comments.md +82 -0
  110. package/skills/lark-drive/references/lark-drive-list-replies.md +54 -0
  111. package/skills/lark-drive/references/lark-drive-member-add.md +3 -3
  112. package/skills/lark-drive/references/lark-drive-member-list.md +65 -0
  113. package/skills/lark-drive/references/lark-drive-move.md +5 -3
  114. package/skills/lark-drive/references/lark-drive-permission-get-setting.md +48 -0
  115. package/skills/lark-drive/references/lark-drive-permission-guide.md +12 -0
  116. package/skills/lark-drive/references/lark-drive-preview.md +11 -1
  117. package/skills/lark-drive/references/lark-drive-pull.md +3 -3
  118. package/skills/lark-drive/references/lark-drive-push.md +33 -6
  119. package/skills/lark-drive/references/lark-drive-react-reply.md +51 -0
  120. package/skills/lark-drive/references/lark-drive-reactions.md +27 -25
  121. package/skills/lark-drive/references/lark-drive-resolve-comment.md +45 -0
  122. package/skills/lark-drive/references/lark-drive-restore-comment.md +46 -0
  123. package/skills/lark-drive/references/lark-drive-search.md +7 -1
  124. package/skills/lark-drive/references/lark-drive-secure-label.md +1 -1
  125. package/skills/lark-drive/references/lark-drive-status.md +12 -14
  126. package/skills/lark-drive/references/lark-drive-task-result.md +58 -5
  127. package/skills/lark-drive/references/lark-drive-update-reply.md +46 -0
  128. package/skills/lark-drive/references/lark-drive-upload.md +1 -0
  129. package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize.md +26 -20
  130. package/skills/lark-drive/references/lark-drive-workflow-permission-governance-commands.md +38 -8
  131. package/skills/lark-drive/references/lark-drive-workflow-permission-governance-outputs.md +10 -10
  132. package/skills/lark-drive/references/lark-drive-workflow-permission-governance.md +22 -20
  133. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-execute.md +273 -0
  134. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-recall.md +202 -0
  135. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-resolve-verify.md +231 -0
  136. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-review-plan.md +248 -0
  137. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-setup.md +174 -0
  138. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector.md +202 -0
  139. package/skills/lark-drive/references/lark-drive-workflow.md +5 -3
  140. package/skills/lark-event/SKILL.md +3 -1
  141. package/skills/lark-event/references/lark-event-application.md +38 -0
  142. package/skills/lark-event/references/lark-event-approval.md +170 -0
  143. package/skills/lark-im/SKILL.md +6 -5
  144. package/skills/lark-im/references/card/card-2.0-schema.md +1 -1
  145. package/skills/lark-im/references/card/lark-im-card-style.md +4 -4
  146. package/skills/lark-im/references/card/resource/icons.md +14 -0
  147. package/skills/lark-im/references/lark-im-flag-list.md +8 -7
  148. package/skills/lark-im/references/lark-im-messages-reply.md +1 -1
  149. package/skills/lark-im/references/lark-im-messages-send.md +1 -1
  150. package/skills/lark-mail/SKILL.md +12 -9
  151. package/skills/lark-mail/references/lark-mail-forward.md +1 -1
  152. package/skills/lark-mail/references/lark-mail-message-modify.md +48 -0
  153. package/skills/lark-mail/references/lark-mail-message-trash.md +41 -0
  154. package/skills/lark-mail/references/lark-mail-reply-all.md +1 -1
  155. package/skills/lark-mail/references/lark-mail-reply.md +1 -1
  156. package/skills/lark-mail/references/lark-mail-watch.md +1 -1
  157. package/skills/lark-markdown/SKILL.md +3 -2
  158. package/skills/lark-markdown/references/lark-markdown-create.md +22 -2
  159. package/skills/lark-minutes/SKILL.md +19 -4
  160. package/skills/lark-minutes/references/lark-minutes-download.md +0 -2
  161. package/skills/lark-minutes/references/lark-minutes-search.md +0 -2
  162. package/skills/lark-minutes/references/lark-minutes-speaker-replace.md +0 -2
  163. package/skills/lark-minutes/references/lark-minutes-summary.md +0 -2
  164. package/skills/lark-minutes/references/lark-minutes-todo.md +2 -4
  165. package/skills/lark-minutes/references/lark-minutes-update.md +0 -2
  166. package/skills/lark-minutes/references/lark-minutes-upload.md +10 -10
  167. package/skills/lark-okr/SKILL.md +71 -26
  168. package/skills/lark-okr/references/lark-okr-batch-create.md +19 -18
  169. package/skills/lark-okr/references/lark-okr-create.md +173 -0
  170. package/skills/lark-okr/references/lark-okr-cycle-list.md +17 -7
  171. package/skills/lark-okr/references/lark-okr-entities.md +1 -0
  172. package/skills/lark-okr/references/lark-okr-indicator-update.md +3 -1
  173. package/skills/lark-okr/references/lark-okr-indicators.md +61 -12
  174. package/skills/lark-okr/references/lark-okr-progress-list.md +21 -9
  175. package/skills/lark-shared/SKILL.md +26 -8
  176. package/skills/lark-sheets/SKILL.md +98 -29
  177. package/skills/lark-sheets/references/lark-sheets-batch-update.md +18 -9
  178. package/skills/lark-sheets/references/lark-sheets-changeset.md +105 -0
  179. package/skills/lark-sheets/references/lark-sheets-chart.md +4 -2
  180. package/skills/lark-sheets/references/lark-sheets-conditional-format.md +2 -0
  181. package/skills/lark-sheets/references/lark-sheets-filter-view.md +1 -1
  182. package/skills/lark-sheets/references/lark-sheets-float-image.md +6 -6
  183. package/skills/lark-sheets/references/lark-sheets-formula-translation.md +12 -3
  184. package/skills/lark-sheets/references/lark-sheets-formula-verify.md +77 -0
  185. package/skills/lark-sheets/references/lark-sheets-history.md +93 -0
  186. package/skills/lark-sheets/references/lark-sheets-pivot-table.md +7 -2
  187. package/skills/lark-sheets/references/lark-sheets-range-operations.md +44 -14
  188. package/skills/lark-sheets/references/lark-sheets-read-data.md +3 -3
  189. package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +4 -4
  190. package/skills/lark-sheets/references/lark-sheets-visual-standards.md +4 -4
  191. package/skills/lark-sheets/references/lark-sheets-workbook.md +29 -4
  192. package/skills/lark-sheets/references/lark-sheets-write-cells.md +21 -11
  193. package/skills/lark-slides/SKILL.md +121 -63
  194. package/skills/lark-slides/references/asset-planning.md +18 -5
  195. package/skills/lark-slides/references/iconpark.md +3 -3
  196. package/skills/lark-slides/references/lark-slides-create.md +30 -3
  197. package/skills/lark-slides/references/lark-slides-history.md +132 -0
  198. package/skills/lark-slides/references/lark-slides-media-upload.md +1 -3
  199. package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +85 -0
  200. package/skills/lark-slides/references/lark-slides-replace-pages.md +1 -1
  201. package/skills/lark-slides/references/lark-slides-replace-slide.md +1 -4
  202. package/skills/lark-slides/references/lark-slides-screenshot.md +11 -8
  203. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +5 -6
  204. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +5 -2
  205. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +5 -5
  206. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +14 -13
  207. package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +67 -31
  208. package/skills/lark-slides/references/planning-layer.md +41 -10
  209. package/skills/lark-slides/references/slides_chart_demo.xml +1416 -0
  210. package/skills/lark-slides/references/slides_xml_schema_definition.xml +499 -78
  211. package/skills/lark-slides/references/troubleshooting.md +5 -5
  212. package/skills/lark-slides/references/validation-checklist.md +65 -19
  213. package/skills/lark-slides/references/visual-planning.md +26 -22
  214. package/skills/lark-slides/references/xml-schema-quick-ref.md +285 -45
  215. package/skills/lark-slides/scripts/sxsd_validator.py +908 -0
  216. package/skills/lark-slides/scripts/xml_text_overlap_lint.py +2429 -91
  217. package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +3567 -70
  218. package/skills/lark-task/SKILL.md +8 -0
  219. package/skills/lark-task/references/lark-task-complete.md +6 -2
  220. package/skills/lark-task/references/lark-task-create.md +23 -1
  221. package/skills/lark-task/references/lark-task-update.md +6 -2
  222. package/skills/lark-vc/SKILL.md +6 -3
  223. package/skills/lark-vc/references/lark-vc-recording.md +0 -2
  224. package/skills/lark-vc/references/vc-domain-boundaries.md +9 -1
  225. package/skills/lark-vc-agent/SKILL.md +25 -15
  226. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md +65 -37
  227. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +1 -1
  228. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-list-active.md +8 -8
  229. package/skills/lark-whiteboard/SKILL.md +13 -12
  230. package/skills/lark-whiteboard/elements/layout.md +1 -1
  231. package/skills/lark-whiteboard/elements/schema.md +2 -2
  232. package/skills/lark-whiteboard/references/{lark-whiteboard-query.md → lark-whiteboard-export.md} +15 -15
  233. package/skills/lark-whiteboard/references/lark-whiteboard-update.md +3 -3
  234. package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +12 -19
  235. package/skills/lark-whiteboard/routes/dsl.md +3 -3
  236. package/skills/lark-whiteboard/routes/mermaid.md +2 -2
  237. package/skills/lark-whiteboard/routes/svg-edit.md +4 -4
  238. package/skills/lark-whiteboard/routes/svg.md +11 -6
  239. package/skills/lark-whiteboard/scenes/bar-chart.md +1 -1
  240. package/skills/lark-whiteboard/scenes/fishbone.md +1 -1
  241. package/skills/lark-whiteboard/scenes/flywheel.md +1 -1
  242. package/skills/lark-whiteboard/scenes/line-chart.md +1 -1
  243. package/skills/lark-whiteboard/scenes/treemap.md +1 -1
  244. package/skills/lark-wiki/SKILL.md +8 -3
  245. package/skills/lark-wiki/references/lark-wiki-move-to-drive.md +122 -0
  246. package/skills/lark-wiki/references/lark-wiki-move.md +5 -3
  247. package/skills/lark-wiki/references/lark-wiki-node-get.md +1 -1
  248. package/skills/lark-wiki/references/lark-wiki-node-list.md +9 -2
  249. package/skills/lark-calendar/references/lark-calendar-agenda.md +0 -78
  250. package/skills/lark-calendar/references/lark-calendar-freebusy.md +0 -124
  251. package/skills/lark-calendar/references/lark-calendar-search-event.md +0 -29
  252. package/skills/lark-drive/references/lark-drive-comments-guide.md +0 -72
  253. package/skills/lark-sheets/references/lark-sheets-core-operations.md +0 -103
  254. package/skills/lark-slides/references/examples.md +0 -261
  255. package/skills/lark-slides/references/lark-slides-whiteboard.md +0 -330
  256. package/skills/lark-slides/references/slide-templates.md +0 -201
  257. package/skills/lark-slides/references/slides_demo.xml +0 -226
  258. package/skills/lark-slides/references/xml-format-guide.md +0 -369
@@ -90,6 +90,10 @@ user / created_by / updated_by: is, isNot, isEmpty, isNotEmpty
90
90
 
91
91
  `sort.order`:`asc`(升序)/ `desc`(降序)
92
92
 
93
+ 只要写 `sort` 对象,就需要明确排序方向。CLI 会把 `sort.type` 为 `group` 或 `view` 且缺少 `order` 的情况规范化为 `order:"asc"`;`sort.type:"value"` 必须显式写 `order:"asc"` 或 `order:"desc"`,因为指标值排序方向会改变业务含义。
94
+
95
+ 如果表中行序就是业务顺序,首次创建 block 时就一次性设置 `sort:{"type":"view","order":"asc"}` 保留行序,避免创建后再二次更新排序条件。
96
+
93
97
  示例 — 柱状图按销售额降序:
94
98
 
95
99
  ```json
@@ -169,9 +173,10 @@ user / created_by / updated_by: is, isNot, isEmpty, isNotEmpty
169
173
  - 长度/结构
170
174
  - `group_by` 最多 2 个;每项 `field_name` 必填
171
175
  - `group_by[].sort.type` 取值 `group|value|view`;`order` 取值 `asc|desc`
172
- - 规范化(CLI 自动处理)
176
+ - 规范化(CLI 自动处理;`--no-validate` 时不生效,`data_config` 原样透传给后端)
173
177
  - `series[].rollup` 自动转成大写(如 `sum` → `SUM`)
174
178
  - `group_by[].sort.type/order` 自动转成小写
179
+ - `group_by[].sort.type` 为 `group` 或 `view` 且缺少 `order` 时,自动补 `order:"asc"`;`value` 排序不会自动补方向
175
180
  - 本地校验(可通过 `--no-validate` 跳过)
176
181
  - `+dashboard-block-create` 默认对 `data_config` 做轻量校验;失败会聚合错误并给出修复建议
177
182
  - `+dashboard-block-update` 不做强类型校验,由后端验证具体字段
@@ -264,14 +269,35 @@ user / created_by / updated_by: is, isNot, isEmpty, isNotEmpty
264
269
 
265
270
  漏斗图(流程转化):
266
271
 
272
+ 先判断用户要看的数值语义:
273
+
274
+ - **当前数量**:统计每个当前状态/阶段下有多少记录,例如“各环节当前数量”“当前阶段分布”。源表有状态/阶段字段时,直接用 `count_all:true` + `group_by`。
275
+ - **累计数量**:统计到达该阶段及其后续阶段(后缀和)的累计数量,例如“流程转化”“从 A 到 B 各环节转化”。此口径假设流程单向、无跳阶/回退、记录不删除;不满足时须用状态变更历史,不能对当前快照累加。如果表中已有累计数量字段或阶段汇总表,直接用该字段画漏斗图;否则先计算累计数量,创建并写入 helper 汇总表后再画图。
276
+
277
+ 当前数量:
278
+
267
279
  ```json
268
280
  {
269
281
  "table_name": "表名",
270
- "series": [{ "field_name": "数值字段", "rollup": "SUM" }],
282
+ "count_all": true,
271
283
  "group_by": [{ "field_name": "状态字段", "mode": "integrated" }]
272
284
  }
273
285
  ```
274
286
 
287
+ 累计数量:
288
+
289
+ ```json
290
+ {
291
+ "table_name": "流程汇总表名",
292
+ "series": [{ "field_name": "累计数量", "rollup": "SUM" }],
293
+ "group_by": [{ "field_name": "阶段字段", "mode": "integrated", "sort": {"type":"view","order":"asc"} }]
294
+ }
295
+ ```
296
+
297
+ 如果只有当前状态数据但用户要看流程转化,需要先按业务阶段顺序计算每个阶段的累计数量,再创建 helper 汇总表(如:阶段、累计数量),用 `+record-batch-create` 一次写入后,按“累计数量”模板创建漏斗图。helper 表行序就是业务顺序时,首次创建 block 时一次性设置好 `group_by.sort`。
298
+
299
+ > ⚠️ 注意:helper 汇总表仅用于源表无法直接聚合出目标形态的场景(如上面的累计数量漏斗图)。只要能在源表上直接用 `group_by` + `rollup`(含 `AVERAGE`)算出,就不需要新建 helper 表。
300
+
275
301
  词云(文本频率):
276
302
 
277
303
  ```json
@@ -8,23 +8,28 @@
8
8
 
9
9
  - `--json` 必须是 JSON 对象。
10
10
  - `+record-upsert`:顶层直接传字段映射:`{"字段名或字段ID": CellValue}`。
11
- - `+record-batch-create`:`rows` 是 `CellValue[][]`,列顺序由 `fields` 决定。
12
- - `+record-batch-update`:`patch` 是 `Map<FieldNameOrID, CellValue>`,同一份 `patch` 会应用到所有 `record_id_list`。
11
+ - `+record-batch-create`:使用 `create_records`,其每个元素都是 `Map<FieldNameOrID, CellValue>`。
12
+ - `+record-batch-update`:使用 `update_records`,其每个 value 都是 `Map<FieldNameOrID, CellValue>`。
13
13
  - 一次 payload 里同一字段只用一种 key(字段名或字段 ID),不要重复。
14
14
  - 写入前先 `+field-list` 获取字段 `type/style/multiple`,再构造值。
15
15
  - 需要清空字段时优先传 `null`(字段允许清空时)。
16
16
 
17
17
  ## 2. 各类型 CellValue
18
18
 
19
- ### 2.1 text / phone / url
19
+ ### 2.1 text
20
20
 
21
- 用字符串。URL 字段也传 URL 字符串;普通文本里可以保留 Markdown 风格链接文本,平台会按字段类型处理。
21
+ text 字段的 `style.type` 影响单元格检查逻辑:
22
+ `type=plain` 传 Markdown 格式的字符串。
23
+ `type=url` 传一个带 title 的 Markdown 格式链接,或单独传一个链接。
24
+ `type=phone` 传合法电话号码。
25
+ `type=email` 传合法邮箱字符串。
22
26
 
23
27
  ```json
24
28
  {
25
- "标题": "Hello",
29
+ "标题": "Hello, [lark-cli](https://github.com/larksuite/cli)",
30
+ "官网": "[官网](https://example.com)",
26
31
  "联系电话": "1380000000000",
27
- "官网": "https://example.com"
32
+ "邮箱": "owner@example.com"
28
33
  }
29
34
  ```
30
35
 
@@ -43,7 +48,7 @@
43
48
 
44
49
  ### 2.3 select(单选/多选)
45
50
 
46
- 单选用选项名字符串;多选用选项名数组。选项名建议与字段配置一致;写入未知选项时平台可能自动新增选项,因此不要把自然语言近义词当成已有选项传入。
51
+ `select` 字段用 `multiple` 区分单选和多选:`multiple=false` 时传选项名字符串,`multiple=true` 时传选项名数组。只支持写入字段中已有的选项;构造 CellValue 前先用 `+field-list` 或 `+field-search-options` 确认目标选项存在。
47
52
 
48
53
  ```json
49
54
  {
@@ -98,21 +98,21 @@ lark-cli base +dashboard-block-get \
98
98
 
99
99
  ## 返回结构总览
100
100
 
101
- 服务端响应外层仍然是标准 OpenAPI 包装:
101
+ CLI 成功输出使用标准 `{ok, identity, data}` 信封:
102
102
 
103
103
  ```json
104
104
  {
105
- "code": 0,
106
- "msg": "success",
105
+ "ok": true,
106
+ "identity": "user",
107
107
  "data": {
108
- "dimensions": [...],
109
- "measures": [...],
110
- "main_data": [...]
108
+ "dimensions": [],
109
+ "measures": [],
110
+ "main_data": []
111
111
  }
112
112
  }
113
113
  ```
114
114
 
115
- 其中 `data` 就是 CLI 图表协议本体。不同图表类型的 `data` 结构略有不同:
115
+ 其中 `identity` 是本次调用实际使用的身份,`data` 是 CLI 图表协议本体。不同图表类型的 `data` 结构略有不同:
116
116
 
117
117
  | 图表类型 | 一定有 | 可能有 |
118
118
  |----------|--------|--------|
@@ -19,12 +19,19 @@ Dashboard 是 Base 中的数据可视化看板,可以把表格数据变成**
19
19
  | 修改组件 | `+dashboard-block-update` | 先读 block 现状,再读 [dashboard-block-data-config.md](dashboard-block-data-config.md) 决定替换哪些顶层 key |
20
20
  | 查看仪表盘有哪些组件 | `+dashboard-get` 或 `+dashboard-block-list` | 本页下方「查看仪表盘」 |
21
21
  | 读取图表计算结果 | `+dashboard-block-get-data` | 返回图表最终数据协议;需要 block 元数据先用 `+dashboard-block-get` |
22
- | 智能重排组件布局 | `+dashboard-arrange` | 只在用户明确要求重排时执行;无法指定精确位置 |
22
+ | 智能重排组件布局 | `+dashboard-arrange` | 用户明确要求重排,或本次会话新建仪表盘的收尾整理;无法指定精确位置 |
23
23
 
24
24
  ## 典型场景工作流
25
25
 
26
26
  ### 场景 1:从 0 到 1 创建仪表盘
27
27
 
28
+ 从 0 到 1 创建仪表盘时,按用户需求规划组件的类型和数量,并注意以下要点:
29
+
30
+ - 聚合方式:创建指标卡或分布图时优先把聚合写进 `data_config`,只有 Top N、字段取值探索、复杂筛选校验或 helper 汇总表场景才先用 `+data-query`。
31
+ - Dry-run 边界:已按模板构造的简单指标卡、分布图、趋势图不需要逐个 `--dry-run` 后再真实创建;只有在调试 JSON、检查请求体、复杂自造 `data_config` 或处理 API validation 错误时才 dry-run。
32
+ - 验证方式:通过创建接口返回值确认创建成功与否,只在结果不确定时用 `+dashboard-get` 或 `+dashboard-block-list` 确认仪表盘和组件存在,或调用 `+dashboard-block-get-data`读取计算结果验证。
33
+ - 布局方式:`+dashboard-arrange` 仅两种情况使用:① 用户明确要求美化/重排;② 本次会话中从零新建的仪表盘,建完组件后做一次性布局整理。不是创建成功的必要步骤。
34
+
28
35
  示例:搭建一个销售数据分析仪表盘
29
36
 
30
37
  ```bash
@@ -63,6 +70,7 @@ lark-cli base +dashboard-block-create \
63
70
 
64
71
  # 第 5 步:组件创建完成后,使用 arrange 命令智能重排布局(可选但推荐)
65
72
  # 默认布局可能不够美观,arrange 会根据组件数量和类型自动优化布局
73
+ # 若用户没有要求美化/重排,可先跳过此步骤;这不影响仪表盘和组件是否已创建成功
66
74
  lark-cli base +dashboard-arrange \
67
75
  --base-token xxx \
68
76
  --dashboard-id blk_xxx
@@ -125,11 +133,12 @@ lark-cli base +dashboard-block-update \
125
133
  --dashboard-id blk_xxx \
126
134
  --block-id chtxxxxxxxx \
127
135
  --data-config '{...}'
136
+
128
137
  ```
129
138
 
130
139
  ### 场景 4:重排仪表盘布局
131
140
 
132
- 当用户明确要求对已有仪表盘进行布局重排或美化时使用。
141
+ 当用户明确要求对已有仪表盘进行布局重排或美化时使用(对本次会话从零新建的仪表盘,可在建完组件后直接做一次性整理,见场景 1)。
133
142
 
134
143
  > [!CAUTION]
135
144
  > - 排列结果是**服务端智能推荐**,不一定完全符合用户预期
@@ -79,16 +79,23 @@ lark-cli base +data-query \
79
79
  | `--base-token <token>` | 是 | Base Token(base_token) |
80
80
  | `--dsl <json>` | 是 | LiteQuery Protocol JSON DSL 查询语句 |
81
81
 
82
- ## 如何从链接中提取参数
82
+ ## 如何从链接中解析参数
83
83
 
84
84
  用户通常会提供如下 URL:
85
85
 
86
+ ```text
87
+ https://example.feishu.cn/base/<base_token>?table=<block_id>
86
88
  ```
87
- https://example.feishu.cn/base/<base_token>?table=<table_id>
89
+
90
+ 不要直接把 URL 中的 `table=` 当成数据表 ID。它表示当前选中的 Base 顶层块,可能是数据表、仪表盘、工作流、文件夹或文档。先解析链接:
91
+
92
+ ```bash
93
+ lark-cli base +url-resolve --url "<url>" --as user
88
94
  ```
89
95
 
90
- - `--base-token`:取 `/base/` 后面的字符串
91
- - DSL 中的 `tableId`:取 `table=` 后面的值
96
+ - `--base-token`:使用返回的 `base_token`
97
+ - 仅当返回的 `block_type` 为 `table` 时,DSL 中的 `tableId` 才使用返回的 `table_id`
98
+ - 如果返回的是其他块类型,按 `hint.next_step` 继续处理;如果只返回中性的 `block_id`,先用 `+base-block-list` 确认块类型,再选择实际要查询的数据表
92
99
 
93
100
  ## API 入参详情
94
101
 
@@ -347,28 +354,30 @@ value 使用预定义关键字机制,第一个元素为字符串常量名称
347
354
  |------|------|------|------|
348
355
  | `format` | string | 是 | 固定为 `"flat"`,表示返回扁平化的对象数组 |
349
356
 
350
- ## API 出参详情
357
+ ## CLI 出参详情
358
+
359
+ CLI 输出标准信封 `{ok, identity, data}`(失败时为 `{ok:false, identity, error}`)。
351
360
 
352
361
  **成功时:**
353
362
 
354
363
  ```json
355
- {"code": 0, "data": {"main_data": [{"dim_city": {"value": "北京"}, "total_amount": {"value": 12345.00}}, ...]}, "msg": ""}
364
+ {"ok": true, "identity": "user", "data": {"main_data": [{"dim_city": {"value": "北京"}, "total_amount": {"value": 12345.00}}, ...]}}
356
365
  ```
357
366
 
358
367
  **失败时:**
359
368
 
360
369
  ```json
361
- {"code": 800004006, "data": {"error": {"code": 800004006, ...}}, "msg": "DSL validation failed"}
370
+ {"ok": false, "identity": "user", "error": {"type": "api", "subtype": "unknown", "code": 800004006, "message": "...does not exist in table schema", "hint": "...", "log_id": "..."}}
362
371
  ```
363
372
 
364
373
  **Response 字段:**
365
374
 
366
375
  | 字段 | 类型 | 说明 |
367
376
  |------|------|------|
368
- | `code` | int | 状态码,0 为成功 |
369
- | `msg` | string | 错误信息 |
370
- | `data.main_data` | []object | 查询结果数组,每个元素为一行数据 |
371
- | `data.error` | object | 失败时的错误详情 |
377
+ | `ok` | bool | 是否成功 |
378
+ | `identity` | string | 执行身份:`user` / `bot` |
379
+ | `data.main_data` | []object | 查询结果数组,每个元素为一行数据(成功时) |
380
+ | `error` | object | 失败时的 typed 错误,含 `type` / `subtype` / `code` / `message` / `hint` / `log_id` |
372
381
 
373
382
  每行数据的字段值封装在 CellValue 中:
374
383
 
@@ -23,12 +23,12 @@ lark-cli base +field-create \
23
23
  lark-cli base +field-create \
24
24
  --base-token <base_token> \
25
25
  --table-id <table_id> \
26
- --json '{"name":"状态","type":"select","multiple":false,"options":[{"name":"Todo","hue":"Blue","lightness":"Lighter"},{"name":"Done","hue":"Green","lightness":"Light"}]}'
26
+ --json '{"name":"状态","type":"select","multiple":false,"default_value":["Todo"],"options":[{"name":"Todo","hue":"Blue","lightness":"Lighter"},{"name":"Done","hue":"Green","lightness":"Light"}]}'
27
27
 
28
28
  lark-cli base +field-create \
29
29
  --base-token <base_token> \
30
30
  --table-id <table_id> \
31
- --json '{"name":"负责人","type":"user","multiple":false,"description":"用于标记记录的直接负责人;协作约定可参考[团队字段约定](https://example.com/field-spec)"}'
31
+ --json '{"name":"负责人","type":"user","multiple":false,"default_value":[{"$slot":"current_user"}],"description":"用于标记记录的直接负责人;协作约定可参考[团队字段约定](https://example.com/field-spec)"}'
32
32
  ```
33
33
 
34
34
  ## 参数
@@ -51,6 +51,7 @@ POST /open-apis/base/v3/bases/:base_token/tables/:table_id/fields
51
51
  - `--json` 必须是 **JSON 对象**,顶层直接传字段定义,不要再套一层。
52
52
  - 顶层最少包含:`name`、`type`。
53
53
  - 所有字段类型都支持可选 `description`;支持纯文本,也支持 Markdown 链接,如 `协作约定可参考[团队字段约定](https://example.com/field-spec)`。
54
+ - 需要字段默认值时传 `default_value`,直接使用字段对应 CellValue;`datetime` / `user` 的动态填充用 `$slot`。完整规则见 [lark-base-field-json.md](lark-base-field-json.md)。
54
55
  - `type` 不同,必填子字段不同:
55
56
  - `select`:`multiple` 控制是否多选,`options` 定义静态选项,`dynamic_options_source` 定义动态选项来源。静态与动态选项配置二选一,不能同时传。
56
57
  - `link`:必须有 `link_table`,可选 `bidirectional`、`bidirectional_link_field_name`。
@@ -64,6 +65,7 @@ POST /open-apis/base/v3/bases/:base_token/tables/:table_id/fields
64
65
  "name": "状态",
65
66
  "type": "select",
66
67
  "multiple": false,
68
+ "default_value": ["Todo"],
67
69
  "options": [
68
70
  { "name": "Todo", "hue": "Blue", "lightness": "Lighter" },
69
71
  { "name": "Done", "hue": "Green", "lightness": "Light" }
@@ -85,16 +87,20 @@ POST /open-apis/base/v3/bases/:base_token/tables/:table_id/fields
85
87
  ## 返回重点
86
88
 
87
89
  - 返回 `field` 和 `created: true`。
90
+ - 如果返回 `field_get_recommended:false` 且 `next_step:"done"`,表示本次是简单字段创建,通常不需要立刻执行 `+field-get`。
91
+ - 如果返回 `field_get_recommended:true` 或 `next_step:"field_get"`,按 `verification_hint` 读回字段;`formula`、`lookup`、`link`、`auto_number` 等计算、关联或生成型字段更适合读回确认服务端最终结构。
88
92
 
89
93
  ## 工作流
90
94
 
91
95
 
92
96
  1. formula / lookup 字段必须先阅读对应指南;没读之前不要直接创建。
97
+ 2. 创建简单字段时,优先相信命令返回;只有用户要求精确核对额外属性,或返回建议读回时,才继续执行 `+field-get`。
93
98
 
94
99
  ## 坑点
95
100
 
96
101
  - ⚠️ 这是写入操作,执行前必须确认。
97
102
  - ⚠️ 当 `type` 是 `formula` 或 `lookup` 时,先读对应 guide,再创建。
103
+ - ⚠️ 不要把“每次创建后都 `+field-get`”当作固定流程;按返回里的 `field_get_recommended` 和 `next_step` 决定是否读回。
98
104
 
99
105
  ## 参考
100
106
 
@@ -9,6 +9,7 @@
9
9
  - `--json` 必须是 JSON 对象。
10
10
  - 顶层统一使用:`type` + `name` + 类型特有字段。
11
11
  - 所有字段类型都支持可选 `description`;支持纯文本,也支持 Markdown 链接。
12
+ - 字段默认值使用 `default_value`,直接传对应 CellValue;支持范围只有 `text`、`number`、静态 `select`、`datetime`、`user`。清空默认值传 `null`;省略表示创建时不设置、更新时不修改。
12
13
  - 不要使用旧结构:`field_name`、`property`、`ui_type`、数字枚举 `type`。
13
14
  - `+field-update` 使用同样的字段 JSON 结构,但语义是 `PUT`;这是高风险写入操作,建议先 `+field-get` 再按目标状态全量提交,并带 `--yes`。
14
15
  - `type=formula` 或 `type=lookup` 创建/更新前,必须先读对应 guide。
@@ -27,12 +28,12 @@
27
28
 
28
29
  | 类型 | 最小必填字段 | 常见补充字段 |
29
30
  |------|--------------|-------------|
30
- | `text` | `type` `name` | `style.type` |
31
- | `number` | `type` `name` | `style` |
32
- | `select` | `type` `name` | `multiple` + `options`,或 `multiple` + `dynamic_options_source` |
33
- | `datetime` | `type` `name` | `style.format` |
31
+ | `text` | `type` `name` | `style.type` `default_value` |
32
+ | `number` | `type` `name` | `style` `default_value` |
33
+ | `select` | `type` `name` | `multiple` + `options` + 静态 `default_value`,或 `multiple` + `dynamic_options_source` |
34
+ | `datetime` | `type` `name` | `style.format` `default_value` |
34
35
  | `created_at` / `updated_at` | `type` `name` | `style.format` |
35
- | `user` / `group_chat` | `type` `name` | `multiple` |
36
+ | `user` / `group_chat` | `type` `name` | `multiple`;仅 `user` 支持 `default_value` |
36
37
  | `created_by` / `updated_by` | `type` `name` | 无 |
37
38
  | `link` | `type` `name` `link_table` | `bidirectional` `bidirectional_link_field_name` |
38
39
  | `formula` | `type` `name` `expression` | 无 |
@@ -47,31 +48,37 @@
47
48
  ### 3.1 text
48
49
 
49
50
  文本字段;电话、超链接、邮箱、条码也都属于 `text`,通过 `style.type` 区分。
51
+ 支持 `default_value`:静态 Markdown 文本字符串;`phone` style 必须是合法电话号码;`url` style 传一个 Markdown 链接或裸 URL;`email` style 必须是合法邮箱字符串,不要传 Markdown 链接或 `mailto:`。
50
52
 
51
53
  最小写法(默认 `style.type` 为 `plain`):
52
54
 
53
55
  ```json
54
56
  {
55
57
  "type": "text",
56
- "name": "标题"
58
+ "name": "标题",
59
+ "default_value": "默认标题"
57
60
  }
58
61
  ```
59
62
 
60
63
  常用写法:
61
64
 
65
+ 默认值可以是 Markdown 文本
62
66
  ```json
63
67
  {
64
68
  "type": "text",
65
69
  "name": "标题",
66
- "description": "主标题字段"
70
+ "description": "主标题字段",
71
+ "default_value": "未命名"
67
72
  }
68
73
  ```
69
74
 
75
+ `style.type=phone` 时默认值是合法电话号码字符串。
70
76
  ```json
71
77
  {
72
78
  "type": "text",
73
79
  "name": "联系电话",
74
- "style": { "type": "phone" }
80
+ "style": { "type": "phone" },
81
+ "default_value": "+8613800000000"
75
82
  }
76
83
  ```
77
84
 
@@ -79,7 +86,17 @@
79
86
  {
80
87
  "type": "text",
81
88
  "name": "官网",
82
- "style": { "type": "url" }
89
+ "style": { "type": "url" },
90
+ "default_value": "[官网](https://example.com)"
91
+ }
92
+ ```
93
+
94
+ ```json
95
+ {
96
+ "type": "text",
97
+ "name": "邮箱",
98
+ "style": { "type": "email" },
99
+ "default_value": "owner@example.com"
83
100
  }
84
101
  ```
85
102
 
@@ -88,13 +105,15 @@
88
105
  ### 3.2 number
89
106
 
90
107
  数字字段;货币、进度、评分都属于 `number`,通过 `style.type` 区分。
108
+ 支持 `default_value`:静态 JSON number;所有 number style 都按这个规则写。
91
109
 
92
110
  最小写法(默认 `style.type` 为 `plain`):
93
111
 
94
112
  ```json
95
113
  {
96
114
  "type": "number",
97
- "name": "工时"
115
+ "name": "工时",
116
+ "default_value": 8
98
117
  }
99
118
  ```
100
119
 
@@ -118,7 +137,8 @@
118
137
  "precision": 2,
119
138
  "percentage": false,
120
139
  "thousands_separator": true
121
- }
140
+ },
141
+ "default_value": 8
122
142
  }
123
143
  ```
124
144
 
@@ -151,7 +171,8 @@
151
171
  {
152
172
  "type": "number",
153
173
  "name": "完成度",
154
- "style": { "type": "progress", "percentage": true, "color": "Blue" }
174
+ "style": { "type": "progress", "percentage": true, "color": "Blue" },
175
+ "default_value": 0.65
155
176
  }
156
177
  ```
157
178
 
@@ -159,11 +180,11 @@
159
180
 
160
181
  支持字段:`icon`、`min`、`max`
161
182
 
162
- 默认值 / 约束:
183
+ 默认值 / 已知平台范围:
163
184
  - `icon` 默认 `star`
164
185
  - `icon` 可用:`star`、`heart`、`thumbsup`、`fire`、`smile`、`lightning`、`flower`、`number`
165
186
  - `min` 取值 `0..1`,默认 `1`
166
- - `max` 取值 `1..10`,默认 `5`
187
+ - `max` 默认 `5`;常见或已文档化的范围为 `1..10`,但 CLI 不强制上限为 `10`。如果用户明确需要更大评分范围,优先确认平台能力或用 `+field-create/update --dry-run` 检查请求形状;平台拒绝后再建议改用普通数字或进度字段。
167
188
 
168
189
  ```json
169
190
  {
@@ -180,6 +201,7 @@
180
201
  #### 静态选项
181
202
 
182
203
  支持字段:`multiple`、`options`
204
+ 支持 `default_value`:静态选项名数组;即使 `multiple=false` 也写数组,如 `["Todo"]`。
183
205
 
184
206
  默认值 / 约束:
185
207
  - `multiple` 默认 `false`
@@ -189,12 +211,14 @@
189
211
  - `options[].hue` 可用:`Red`、`Orange`、`Yellow`、`Lime`、`Green`、`Turquoise`、`Wathet`、`Blue`、`Carmine`、`Purple`、`Gray` 缺省值为 `Blue`
190
212
  - `options[].lightness` 可用:`Lighter`、`Light`、`Standard`、`Dark`、`Darker` 缺省值为 `Lighter`
191
213
  - 选项里没有 `id`,只有 `name`。
214
+ - 支持 `default_value` 配置:填选项名数组。
192
215
 
193
216
  ```json
194
217
  {
195
218
  "type": "select",
196
219
  "name": "状态",
197
220
  "multiple": false,
221
+ "default_value": ["Todo"],
198
222
  "options": [
199
223
  { "name": "Todo", "hue": "Blue", "lightness": "Lighter" },
200
224
  { "name": "Done", "hue": "Green", "lightness": "Light" }
@@ -205,6 +229,7 @@
205
229
  #### 动态选项
206
230
 
207
231
  支持字段:`multiple`、`dynamic_options_source`
232
+ 动态选项不支持 `default_value`。
208
233
 
209
234
  默认值 / 约束:
210
235
  - `multiple` 默认 `false`
@@ -213,6 +238,7 @@
213
238
  - `dynamic_options_source.field_id` 填来源字段 id 或字段名
214
239
  - `dynamic_options_source` 仅创建支持;更新已有字段时不要传
215
240
  - 引用选项条件 / 级联筛选条件:这个功能在 Base 前端支持,属于 UI-only 属性,OpenAPI 里不支持,CLI 不能读取、创建或更新;不要根据接口返回缺失判断未配置
241
+ - 动态选项不支持配置 `default_value`。
216
242
 
217
243
  ```json
218
244
  {
@@ -229,13 +255,15 @@
229
255
  ### 3.4 datetime
230
256
 
231
257
  手动填写的日期/时间字段。系统时间用 `created_at` / `updated_at`。
258
+ 支持 `default_value`:静态时间字符串,或 `{ "$slot": "record_created_time" }`。`datetime + record_created_time` 是自动填充可编辑单元格;`created_at` 是只读创建时间元信息。
232
259
 
233
260
  最小写法:
234
261
 
235
262
  ```json
236
263
  {
237
264
  "type": "datetime",
238
- "name": "截止时间"
265
+ "name": "截止时间",
266
+ "default_value": "2026-03-24 10:00:00"
239
267
  }
240
268
  ```
241
269
 
@@ -251,7 +279,8 @@
251
279
  {
252
280
  "type": "datetime",
253
281
  "name": "截止时间",
254
- "style": { "format": "yyyy-MM-dd HH:mm" }
282
+ "style": { "format": "yyyy-MM-dd HH:mm" },
283
+ "default_value": { "$slot": "record_created_time" }
255
284
  }
256
285
  ```
257
286
 
@@ -276,12 +305,19 @@
276
305
  ### 3.6 user / group_chat
277
306
 
278
307
  人员字段和群字段都支持 `multiple`。
308
+ `user` 支持 `default_value`:人员 CellValue 数组,元素可用 `{ "id": "ou_xxx" }` 或 `{ "$slot": "current_user" }`;不要猜用户 ID。`group_chat` 不支持默认值。
279
309
 
280
310
  默认值 / 约束:
281
311
  - `multiple` 默认 `true`
312
+ - `user` 字段支持 `default_value` 配置,`group_chat` 字段不支持 `default_value` 配置。
282
313
 
283
314
  ```json
284
- { "type": "user", "name": "负责人", "multiple": true }
315
+ {
316
+ "type": "user",
317
+ "name": "负责人",
318
+ "multiple": true,
319
+ "default_value": [{ "$slot": "current_user" }, { "id": "ou_xxx" }]
320
+ }
285
321
  ```
286
322
 
287
323
  ```json
@@ -383,7 +419,7 @@
383
419
 
384
420
  ### 3.11 auto_number
385
421
 
386
- 自动编号字段;不写 `style.rules` 时使用默认规则:`NO.001`。
422
+ 自动编号字段;创建时不写 `style.rules` 会使用默认规则:`NO.001`。更新已有自动编号字段时应显式提交目标 `style.rules`,因为 `+field-update` 会把新的编号规则重新应用到已有编号。
387
423
 
388
424
  最小写法:
389
425
 
@@ -476,7 +512,7 @@
476
512
  ## 4. 创建与更新
477
513
 
478
514
  - `+field-create`:按目标字段配置直接构造 `--json`。
479
- - `+field-update`:使用同样的 JSON 结构,但语义是 `PUT`;建议先 `+field-get`,再按目标完整状态提交,并带 `--yes`。
515
+ - `+field-update`:使用同样的 JSON 结构,但语义是 `PUT`;建议先 `+field-get`,再按目标完整状态提交,并带 `--yes`。当 `type` 是 `auto_number` 时,更新编号规则本身就会把新规则应用到已有编号,无需额外参数,也不要在 JSON 里塞额外的底层实现参数。
480
516
 
481
517
  ## 5. 暂不支持字段
482
518
 
@@ -488,3 +524,4 @@ Object(对象字段)、Button(按钮字段)、Stage(流程字段)暂
488
524
  - `number` 的精度、货币、进度、评分配置都放在 `style` 下,不要写顶层 `precision`。
489
525
  - `datetime` 是手动日期字段;系统时间请改用 `created_at` / `updated_at`。
490
526
  - `formula` / `lookup` 没读 guide 前不要直接写。
527
+ - 只有 `text`、`number`、静态 `select`、`datetime`、`user` 支持 `default_value`;清空统一传 `"default_value": null`。其他字段类型不要配置默认值。
@@ -11,14 +11,21 @@ lark-cli base +field-update \
11
11
  --base-token <base_token> \
12
12
  --table-id <table_id> \
13
13
  --field-id <field_id> \
14
- --json '{"name":"状态","type":"select","multiple":false,"options":[{"name":"Todo","hue":"Blue","lightness":"Lighter"},{"name":"Doing","hue":"Orange","lightness":"Light"},{"name":"Done","hue":"Green","lightness":"Light"}]}' \
14
+ --json '{"name":"状态","type":"select","multiple":false,"default_value":["Doing"],"options":[{"name":"Todo","hue":"Blue","lightness":"Lighter"},{"name":"Doing","hue":"Orange","lightness":"Light"},{"name":"Done","hue":"Green","lightness":"Light"}]}' \
15
15
  --yes
16
16
 
17
17
  lark-cli base +field-update \
18
18
  --base-token <base_token> \
19
19
  --table-id <table_id> \
20
20
  --field-id <field_id> \
21
- --json '{"name":"负责人","type":"user","multiple":false,"description":"用于标记记录的直接负责人"}' \
21
+ --json '{"name":"负责人","type":"user","multiple":false,"default_value":null,"description":"用于标记记录的直接负责人"}' \
22
+ --yes
23
+
24
+ lark-cli base +field-update \
25
+ --base-token <base_token> \
26
+ --table-id <table_id> \
27
+ --field-id <field_id> \
28
+ --json '{"name":"编号","type":"auto_number","style":{"rules":[{"type":"text","text":"TASK-"},{"type":"created_time","date_format":"yyyyMM"},{"type":"text","text":"-"},{"type":"incremental_number","length":4}]}}' \
22
29
  --yes
23
30
  ```
24
31
 
@@ -42,15 +49,19 @@ lark-cli base +field-update \
42
49
  PUT /open-apis/base/v3/bases/:base_token/tables/:table_id/fields/:field_id
43
50
  ```
44
51
 
52
+ 当 `--json.type` 是 `auto_number` 时,仍然走同一个 v3 字段更新接口:更新自动编号规则后,接口现状就会把新规则应用到已有编号(这是接口默认行为,只是 agent 通常不知道),因此**不需要**任何额外开关或参数。只需要正常提交目标自动编号字段定义即可;如果用户要求“将修改用于已有编号”,直接执行这次 `+field-update` 就能达到效果,不要在 `--json` 里额外添加任何参数去“触发”重排。
53
+
45
54
  ## JSON 值规范
46
55
 
47
56
  - `--json` 必须是 **JSON 对象**,顶层直接传字段定义。
48
57
  - 更新语义是 `PUT`(全量字段配置更新),不要只传零散片段;至少显式包含 `name`、`type`,并补齐该类型所需关键配置。
49
58
  - 所有字段类型都支持可选 `description`;支持纯文本,也支持 Markdown 链接。
59
+ - 需要字段默认值时传 `default_value`,直接使用字段对应 CellValue;传 `null` 清空,省略表示不修改现有默认值。完整规则见 [lark-base-field-json.md](lark-base-field-json.md)。
50
60
  - `select` 更新时:`options` 仍按对象数组传,避免混入无效字段。
51
61
  - `link` 更新限制:
52
62
  - 不能把非 `link` 字段改成 `link`,也不能把 `link` 改成非 `link`。
53
63
  - 现有 `link` 字段的 `bidirectional` 不能改。
64
+ - `auto_number` 更新的 `style.rules` 支持 `text`、`created_time`、`incremental_number`。
54
65
 
55
66
  **推荐更新示例**
56
67
 
@@ -59,6 +70,7 @@ PUT /open-apis/base/v3/bases/:base_token/tables/:table_id/fields/:field_id
59
70
  "name": "状态",
60
71
  "type": "select",
61
72
  "multiple": false,
73
+ "default_value": ["Doing"],
62
74
  "options": [
63
75
  { "name": "Todo", "hue": "Blue", "lightness": "Lighter" },
64
76
  { "name": "Doing", "hue": "Orange", "lightness": "Light" },
@@ -81,13 +93,18 @@ PUT /open-apis/base/v3/bases/:base_token/tables/:table_id/fields/:field_id
81
93
  ## 返回重点
82
94
 
83
95
  - 返回 `field` 和 `updated: true`。
96
+ - `updated:true` 只表示更新请求成功,不表示字段结构、已有记录值或下游能力已经完成验证。`+field-update` 无法知道更新前的字段类型,因此成功响应会推荐执行 `+field-get`;若发生类型转换,还要抽样读取记录值。
97
+ - 如果响应中的 `field.type` 与提交的 `type` 不一致,必须把它当作待核验的类型不匹配;不能返回完成态,也不能只根据其中任一类型推断更新成功。
98
+ - 如果 API 报告本次更新没有产生任何变更(no-op),命令会如实返回该错误;这通常说明目标字段已是期望状态,不要机械重试同一份 `+field-update`。需要确认当前字段完整状态时执行 `+field-get`。
99
+ - 如果返回 `field_get_recommended:true` 或 `next_step:"field_get"`,按提示读回字段;`auto_number` 更新后还应抽样读记录值确认编号已按新规则生成。
84
100
 
85
101
  ## 工作流
86
102
 
87
103
 
88
104
  1. 建议先用 `+field-get` 拉现状,再做最小化修改。
89
105
  2. `formula/lookup` 类型更新前先阅读对应指南。
90
- 3. 如果这次更新会改变字段 `type` 先按下方“字段类型变更规则”判断能否执行。如果不修改 `type`,大多数场景都相对安全。
106
+ 3. 如果更新 `auto_number`,理解为“更新编号规则,同时把新规则应用到已有编号”;执行后按返回提示读回字段并在必要时抽样记录值。
107
+ 4. 如果这次更新会改变字段 `type` 先按下方“字段类型变更规则”判断能否执行。如果不修改 `type`,大多数场景都相对安全。
91
108
 
92
109
  ## 字段类型变更规则
93
110
 
@@ -153,6 +170,7 @@ PUT /open-apis/base/v3/bases/:base_token/tables/:table_id/fields/:field_id
153
170
  ### 完成态验证
154
171
 
155
172
  - `FieldReadback`: 读回字段结构,确认 `type` / `multiple` / `style` / `options`
173
+ - `NoopReadback`: `+field-update` 返回 no-op 错误时,只能说明 API 报告没有产生变更;可以跳过重复 update,但不能替代 `FieldReadback`
156
174
  - `ValueReadback`: 抽样读回转换后的单元格值
157
175
  - `DownstreamReadback`: 若涉及看板 / 分组 / 排序 / lookup / 公式,继续读回结果
158
176
  - `CompletionRule`: 结构、值、下游能力都正确,才能回复“已完成”