@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
@@ -0,0 +1,179 @@
1
+ # Base Filter 条件结构(公共协议)
2
+
3
+ Filter 是一组「字段/操作符/值」条件的组合,用 `logic`(`and` / `or`)把多条 `conditions` 连接起来,用于描述「满足什么条件」。视图筛选 `filter`、记录读取/搜索的 `--filter-json`、表单题目显隐条件 `visible_rule` 复用同一套 tuple 结构,本文件是其公共协议(SSOT)。
4
+
5
+ ## 0. 适用范围
6
+
7
+ 本协议只适用于以下场景:
8
+
9
+ - `+view-set-filter` / `+view-get-filter` 的视图筛选配置。
10
+ - `+record-list --filter-json` / `+record-search --filter-json` 的结构化记录筛选。
11
+ - `+form-questions-create` / `+form-questions-update` 中的 `visible_rule` 显隐条件。
12
+
13
+ 本协议**不适用于 `+data-query`**。`+data-query` 支持过滤,但使用的是 LiteQuery DSL 的 `filters` 对象结构:`{"type":1,"conjunction":"and","conditions":[{"field_name":"状态","operator":"is","value":["有效"]}]}`,不是这里的 tuple 条件 `["状态","==","有效"]`。构造 `+data-query --dsl` 时请阅读 [lark-base-data-query.md](lark-base-data-query.md) 的 FilterGroup / Condition 章节。
14
+
15
+ ## 1. 顶层结构
16
+
17
+ - 必须是 JSON 对象。
18
+ - 顶层结构是 `{logic?, conditions?}`。
19
+ - `logic` 默认 `and`;推荐只用 canonical 值 `and` / `or`。
20
+ - `conditions` 默认空数组。
21
+ - 每条条件写成 tuple:`[field, operator, value?]`。
22
+ - `empty` / `non_empty` 可写成 2 项:`[field, "empty"]`、`[field, "non_empty"]`。
23
+
24
+ ```json
25
+ {
26
+ "logic": "and",
27
+ "conditions": [
28
+ ["状态", "intersects", ["Doing"]],
29
+ ["负责人", "intersects", [{ "id": "ou_xxx" }]],
30
+ ["截止时间", "empty"]
31
+ ]
32
+ }
33
+ ```
34
+
35
+ 清空写法:
36
+
37
+ ```json
38
+ {
39
+ "conditions": []
40
+ }
41
+ ```
42
+
43
+ ## 2. operator
44
+
45
+ 可用 operator:
46
+ - `==`
47
+ - `!=`
48
+ - `>`
49
+ - `>=`
50
+ - `<`
51
+ - `<=`
52
+ - `intersects`
53
+ - `disjoint`
54
+ - `empty`
55
+ - `non_empty`
56
+
57
+ ## 3. value 写法
58
+
59
+ value 类型取决于条件引用对象(字段 / 题目)的类型。
60
+
61
+ ### `text`
62
+
63
+ 用字符串:
64
+
65
+ ```json
66
+ ["标题", "intersects", "发布"]
67
+ ```
68
+
69
+ ### `location`
70
+
71
+ location 筛选只按 `full_address` 字符串匹配,不能直接按经纬度筛选;优先使用 `intersects` 做包含匹配,例如查深圳:
72
+
73
+ ```json
74
+ ["位置", "intersects", "深圳"]
75
+ ```
76
+
77
+ 不推荐写 `["位置", "==", "深圳"]` 这类精确匹配,除非确保筛选值与完整 `full_address` 完全一致。
78
+
79
+ ### `number` / `auto_number`
80
+
81
+ 用数字:
82
+
83
+ ```json
84
+ ["工时", ">=", 3.5]
85
+ ```
86
+
87
+ ### `select`
88
+
89
+ 用选项名数组:
90
+
91
+ ```json
92
+ ["状态", "intersects", ["Doing", "Blocked"]]
93
+ ```
94
+
95
+ ### `user` / `created_by` / `updated_by`
96
+
97
+ 用对象数组:
98
+
99
+ > **人员筛选:不要猜 ID。** 不知道 `open_id` 时,先用 `lark-contact` 查 id:`lark-cli contact +search-user --query "<姓名/邮箱/手机号>" --as user`。
100
+
101
+ ```json
102
+ ["负责人", "intersects", [{ "id": "ou_xxx" }]]
103
+ ```
104
+
105
+ ### `group_chat`
106
+
107
+ 用对象数组:
108
+
109
+ > **群组筛选:不要猜 ID。** 不知道 `chat_id` 时,先用 `lark-im` 搜群:`lark-cli im +chat-search --query "<群名关键词>" --as user`;取结果里的 `oc_xxx`。
110
+
111
+ ```json
112
+ ["负责群", "intersects", [{ "id": "oc_xxx" }]]
113
+ ```
114
+
115
+ ### `link`
116
+
117
+ 用记录 id 对象数组:
118
+
119
+ ```json
120
+ ["关联任务", "intersects", [{ "id": "rec_xxx" }]]
121
+ ```
122
+
123
+ ### `checkbox`
124
+
125
+ 用布尔值:
126
+
127
+ ```json
128
+ ["完成", "==", true]
129
+ ```
130
+
131
+ ### `datetime` / `created_at` / `updated_at`
132
+
133
+ 用相对时间关键字或 `ExactDate(...)`:
134
+
135
+ ```json
136
+ ["截止时间", "==", "ExactDate(2026-01-01)"]
137
+ ```
138
+
139
+ ```json
140
+ ["截止时间", "==", "ExactDate(2026-01-01 11:30)"]
141
+ ```
142
+
143
+ ```json
144
+ ["截止时间", "==", "Today"]
145
+ ```
146
+
147
+ 可用关键字:
148
+ - `Today`
149
+ - `Yesterday`
150
+ - `Tomorrow`
151
+
152
+ ### `formula` / `lookup`
153
+
154
+ - 筛选值类型由字段计算结果类型动态决定。
155
+ - 拿不准时,先把 `value` 当作单个字符串填入做一次尝试。
156
+ - 如果报错,再按错误提示把 `value` 改成对应类型。
157
+
158
+ 字符串示例:
159
+
160
+ ```json
161
+ ["风险说明", "intersects", "高风险"]
162
+ ```
163
+
164
+ 数字示例:
165
+
166
+ ```json
167
+ ["汇总分", ">=", 80]
168
+ ```
169
+
170
+ ## 4. 易错点
171
+
172
+ - 不要再写旧对象风格:`{"field_name":...,"operator":...}`。
173
+ - `user` / `group_chat` / `link` 不要写成单个标量。
174
+ - `empty` / `non_empty` 不要硬塞无意义的 value。
175
+ - 日期条件稳定写法用 `ExactDate(...)` 或 `Today` / `Yesterday` / `Tomorrow`。
176
+ - `formula` / `lookup` 的 value 形状不固定;拿不准时先读当前配置或字段定义,或根据错误提示修正类型。
177
+
178
+ ## 5. 参考
179
+ - [lookup-field-guide.md](lookup-field-guide.md)
@@ -19,10 +19,7 @@ lark-cli base +form-questions-create \
19
19
  --base-token <base_token> \
20
20
  --table-id <table_id> \
21
21
  --form-id <form_id> \
22
- --questions '[
23
- {"type":"text","title":"您的姓名是?","required":true},
24
- {"type":"text","title":"您的联系方式是?","required":false}
25
- ]'
22
+ --questions '[{"type":"text","title":"您的姓名是?","required":true},{"type":"text","title":"您的联系方式是?","required":false}]'
26
23
 
27
24
  # 添加单选题(带选项)
28
25
  lark-cli base +form-questions-create \
@@ -50,6 +47,13 @@ lark-cli base +form-questions-create \
50
47
  --table-id <table_id> \
51
48
  --form-id <form_id> \
52
49
  --questions '[{"type":"text","title":"反馈建议","description":"更多详情请查看[帮助文档](https://example.com/help)"}]'
50
+
51
+ # 添加带显隐条件(visible_rule)的问题:当「是否需要发票」选择「是」时才显示「发票抬头」
52
+ lark-cli base +form-questions-create \
53
+ --base-token <base_token> \
54
+ --table-id <table_id> \
55
+ --form-id <form_id> \
56
+ --questions '[{"type":"select","title":"是否需要发票","required":true,"options":[{"name":"是","hue":"Blue"},{"name":"否","hue":"Gray"}]},{"type":"text","title":"发票抬头","visible_rule":{"logic":"and","conditions":[["是否需要发票","==","是"]]}}]'
53
57
  ```
54
58
 
55
59
  ## 参数
@@ -78,6 +82,7 @@ lark-cli base +form-questions-create \
78
82
  | `multiple` | 否 | 是否多选(`select`/`user` 类型有效,bool) |
79
83
  | `options` | 否 | 选项列表(仅 `select` 有效):`[{"name":"选项1","hue":"Blue"}]`,hue 可选:`Red`/`Orange`/`Yellow`/`Green`/`Blue`/`Purple`/`Gray` |
80
84
  | `style` | 否 | 字段样式配置(见下方说明) |
85
+ | `visible_rule` | 否 | 题目显隐条件(见下方「`visible_rule` 显隐条件」) |
81
86
 
82
87
  ### `style` 字段说明
83
88
 
@@ -88,6 +93,30 @@ lark-cli base +form-questions-create \
88
93
  | `number`(评分) | `{"type":"rating","icon":"star","min":1,"max":5}` | icon 可选:`star`/`heart`/`thumbsup`/`fire`/`smile`/`lightning`/`flower`/`number` |
89
94
  | `datetime` | `{"format":"yyyy/MM/dd"}` | format 可选:`yyyy/MM/dd`、`yyyy/MM/dd HH:mm`、`MM-dd`、`MM/dd/yyyy`、`dd/MM/yyyy` |
90
95
 
96
+ ### `visible_rule` 显隐条件
97
+
98
+ > **仅当用户明确要求为题目设置显隐条件(显示/隐藏逻辑)时,才需要读下面的结构说明;否则忽略本节。**
99
+
100
+ `visible_rule` 控制题目在表单中的显示/隐藏:当条件满足时题目显示,不满足时隐藏;不传或 `conditions` 为空数组则题目始终显示。
101
+
102
+ - **结构与视图筛选 `filter` 完全一致**,即 `{logic?, conditions?}`,共用同一套公共协议。
103
+ - 与视图 `filter` 唯一的区别:`conditions` 中的 `field` 引用的是**同一表单内其他题目的题目名称或题目 ID**(推荐用题目 ID 以避免重名歧义),而不是数据表字段。
104
+ - **只能引用前序题目**:条件只能引用排在当前题目之前的题目——创建时按 `questions` 数组顺序判定(可引用同批次更靠前的新题目或表单中已有题目),不支持循环引用。
105
+ - 引用的题目必须真实存在,否则会报错。
106
+ - 列出题目(`+form-questions-list`)会在每个题目对象中**原样返回** `visible_rule`;未设置显隐条件的题目返回 `null` 或 `conditions` 为空数组。
107
+
108
+ ```json
109
+ {
110
+ "logic": "and",
111
+ "conditions": [
112
+ ["是否需要发票", "==", "是"],
113
+ ["报销金额", ">=", 1000]
114
+ ]
115
+ }
116
+ ```
117
+
118
+ 详细的 `visible_rule` 结构(顶层规则、operator 列表、各题目类型的 value 写法)请阅读 [lark-base-filter-condition.md](lark-base-filter-condition.md)。
119
+
91
120
  ## 输出格式
92
121
 
93
122
  返回创建成功的问题列表:
@@ -108,11 +137,15 @@ lark-cli base +form-questions-create \
108
137
  > [!CAUTION]
109
138
  > 这是**写入操作** — 执行前必须向用户确认。
110
139
 
111
- 1. 先用 `+form-questions-list` 查看现有问题
112
- 2. 确认要添加的问题内容
113
- 3. 执行命令并报告新建的问题 ID
140
+ 1. 先确定表单所属的真实 `table_id`,并在整个表单管理工作流中复用它;仅在 ID 缺失或归属不明确时调用 `+table-list`。
141
+ 2. 用 `+form-questions-list` 查看现有问题。问题 `id` 是承载该问题的 `field_id`,不是独立于数据表的临时 ID。
142
+ 3. 除非用户明确要求同名的独立问题,否则目标标题已经存在时用 `+form-questions-update` 更新必填状态、标题或描述;不要创建同名问题后再删除旧问题。
143
+ 4. 创建确实不存在的问题,或用户明确要求的同名独立问题,并报告新建的问题 ID。
144
+
145
+ `+form-questions-delete` 会删除承载问题的数据表字段,不能删除主字段问题。不要通过“新建重复问题再删除旧问题”来替换主字段。
114
146
 
115
147
  ## 参考
116
148
 
117
149
  - [lark-base](../SKILL.md) — 多维表格全部命令
150
+ - [lark-base-filter-condition.md](lark-base-filter-condition.md) — `visible_rule` / `filter` 条件结构公共协议
118
151
  - [lark-shared](../../lark-shared/SKILL.md) — 认证和全局参数
@@ -2,40 +2,60 @@
2
2
 
3
3
  > **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
4
4
 
5
- 批量更新多维表格表单/问卷中的问题(标题、描述、是否必填)。
5
+ 批量更新多维表格表单/问卷中的问题配置(标题、描述、是否必填、显隐条件等)。
6
+
7
+ > [!CAUTION]
8
+ > `+form-questions-update` 是**题目配置全量覆盖**,不是 patch。对每个传入的题目,未携带的属性会回落为默认值,显式传空字符串 / `null` / 空数组会直接写入空或清空;如果要保留现有属性,必须先用 `+form-questions-list` 查出现状,再把要保留的字段一起带回 `--questions`。
6
9
 
7
10
  ## 命令
8
11
 
9
12
  ```bash
10
- # 更新一个问题的标题
13
+ # 先读取现有题目配置,作为 read-modify-write 的基线
14
+ lark-cli base +form-questions-list \
15
+ --base-token <base_token> \
16
+ --table-id <table_id> \
17
+ --form-id <form_id>
18
+
19
+ # 更新一个问题的标题,同时带回要保留的 required / description / visible_rule 等字段
11
20
  lark-cli base +form-questions-update \
12
21
  --base-token <base_token> \
13
22
  --table-id <table_id> \
14
23
  --form-id <form_id> \
15
- --questions '[{"id":"q_001","title":"您的真实姓名是?"}]'
24
+ --questions '[{"id":"q_001","title":"您的真实姓名是?","description":"请填写真实姓名","required":true,"visible_rule":null}]'
16
25
 
17
- # 同时更新多个问题
26
+ # 同时更新多个问题;每个对象都应是该题目的目标完整配置
18
27
  lark-cli base +form-questions-update \
19
28
  --base-token <base_token> \
20
29
  --table-id <table_id> \
21
30
  --form-id <form_id> \
22
- --questions '[
23
- {"id":"q_001","title":"姓名(必填)","required":true},
24
- {"id":"q_002","title":"联系方式","required":false}
25
- ]'
31
+ --questions '[{"id":"q_001","title":"姓名(必填)","required":true},{"id":"q_002","title":"联系方式","required":false}]'
26
32
 
27
- # 更新问题描述(纯文本)
33
+ # 更新问题描述(纯文本),同时带回要保留的 title / required / visible_rule
34
+ lark-cli base +form-questions-update \
35
+ --base-token <base_token> \
36
+ --table-id <table_id> \
37
+ --form-id <form_id> \
38
+ --questions '[{"id":"q_001","title":"您的姓名","description":"请填写您的真实姓名","required":true,"visible_rule":null}]'
39
+ # 更新问题描述(含链接),同时带回要保留的 title / required / visible_rule
28
40
  lark-cli base +form-questions-update \
29
41
  --base-token <base_token> \
30
42
  --table-id <table_id> \
31
43
  --form-id <form_id> \
32
- --questions '[{"id":"q_001","description":"请填写您的真实姓名"}]'
33
- # 更新问题描述(含链接)
44
+ --questions '[{"id":"q_001","title":"反馈建议","description":"更多说明请参考[帮助文档](https://example.com/help)","required":false,"visible_rule":null}]'
45
+
46
+ # 更新题目显隐条件(visible_rule),同时带回要保留的 title / description / required
34
47
  lark-cli base +form-questions-update \
35
48
  --base-token <base_token> \
36
49
  --table-id <table_id> \
37
50
  --form-id <form_id> \
38
- --questions '[{"id":"q_001","description":"更多说明请参考[帮助文档](https://example.com/help)"}]'
51
+ --questions '[{"id":"q_002","title":"发票抬头","description":"","required":false,"visible_rule":{"logic":"and","conditions":[["q_001","==","是"]]}}]'
52
+
53
+ # 清空题目显隐条件(使题目始终显示),同时带回要保留的 title / description / required
54
+ lark-cli base +form-questions-update \
55
+ --base-token <base_token> \
56
+ --table-id <table_id> \
57
+ --form-id <form_id> \
58
+ --questions '[{"id":"q_002","title":"发票抬头","description":"","required":false,"visible_rule":null}]'
39
59
  ```
40
60
 
41
61
  ## 参数
@@ -52,15 +72,46 @@ lark-cli base +form-questions-update \
52
72
 
53
73
  ## `--questions` 格式
54
74
 
55
- 每个问题对象必须包含 `id`,其余字段按需传入:
75
+ 每个问题对象必须包含 `id`。注意:对象不是增量 patch,而是该题目的目标完整配置;未携带字段会按服务端默认值重建。
56
76
 
57
77
  | 字段 | 必填 | 说明 |
58
78
  |------|------|------|
59
79
  | `id` | **是** | 问题 ID(field_id),不可修改 |
60
- | `title` | 否 | 新的问题标题 |
61
- | `description` | 否 | 新的问题描述(纯文本或 Markdown 链接,如 `[文本](https://example.com)`) |
62
- | `required` | 否 | 是否必填 |
63
- | `option_display_mode` | 否 | 选项展示方式(仅 `select` 有效):`0`=下拉,`1`=纵向(默认),`2`=横向 |
80
+ | `title` | 否 | 目标问题标题;省略会回落为字段名,传空字符串会写入空标题(若服务端允许) |
81
+ | `description` | 否 | 目标问题描述(纯文本或 Markdown 链接,如 `[文本](https://example.com)`);省略或传空字符串都会清空描述 |
82
+ | `required` | 否 | 目标是否必填;省略会回落为 `false` |
83
+ | `option_display_mode` | 否 | 目标选项展示方式(仅 `select` 有效):`0`=下拉,`1`=纵向(默认),`2`=横向;省略会回落默认展示方式 |
84
+ | `visible_rule` | 否 | 目标题目显隐条件;传完整 `{logic, conditions}` 对象覆盖,传 `null` 或省略都会清空(见下方说明) |
85
+
86
+ ## 全量覆盖语义
87
+
88
+ - 先执行 `+form-questions-list`,读取被更新题目的当前 `id`、`title`、`description`、`required`、`option_display_mode`、`visible_rule`。
89
+ - 构造 `--questions` 时,只改用户明确要求变化的字段;所有仍要保留的字段必须按当前值一并传回。
90
+ - 不要用“只传要改的字段”的方式更新题目。比如只传 `{"id":"q_002","title":"新标题"}` 会让 `description` 清空、`required` 回落为 `false`、`visible_rule` 清空。
91
+ - 用户明确要求清空时才传空值:`description:""` 清空描述,`visible_rule:null` 清空显隐条件,`conditions:[]` 也表示无条件显示。
92
+
93
+ ### `visible_rule` 显隐条件
94
+
95
+ > **仅当用户明确要求为题目设置或修改显隐条件(显示/隐藏逻辑)时,才需要读下面的结构说明;否则忽略本节。**
96
+
97
+ `visible_rule` 控制题目显示/隐藏,**结构与视图筛选 `filter` 完全一致**(`{logic?, conditions?}`),共用同一套公共协议。
98
+
99
+ - `conditions` 中的 `field` 引用**同一表单内其他题目的题目名称或题目 ID**(推荐用题目 ID)。
100
+ - 更新时按表单中题目的**实际顺序**判定,只能引用排在当前题目之前的题目;不支持循环引用。
101
+ - 更新 `visible_rule` 需传**完整**的 `{logic, conditions}` 对象(整体覆盖);要保留现有显隐条件就必须把当前 `visible_rule` 原样带回;传 `null`、省略 `visible_rule` 或传空 `conditions` 都会使题目始终显示。
102
+ - 列出题目(`+form-questions-list`)会在每个题目对象中**原样返回** `visible_rule`;未设置显隐条件的题目返回 `null` 或 `conditions` 为空数组。
103
+
104
+ ```json
105
+ {
106
+ "logic": "and",
107
+ "conditions": [
108
+ ["q_001", "==", "是"],
109
+ ["q_003", ">=", 1000]
110
+ ]
111
+ }
112
+ ```
113
+
114
+ 详细的 `visible_rule` 结构(顶层规则、operator 列表、各题目类型的 value 写法)请阅读 [lark-base-filter-condition.md](lark-base-filter-condition.md)。
64
115
 
65
116
  ## 输出格式
66
117
 
@@ -82,11 +133,13 @@ lark-cli base +form-questions-update \
82
133
  > [!CAUTION]
83
134
  > 这是**写入操作** — 执行前必须向用户确认。
84
135
 
85
- 1. 先用 `+form-questions-list` 获取现有问题及其 `id`
86
- 2. 构造包含 `id` 的更新数组
87
- 3. 执行命令并报告更新结果
136
+ 1. 先用 `+form-questions-list` 获取现有问题及其 `id` 和完整配置。
137
+ 2. 以现有配置为基线,只修改用户明确要求变化的字段;要保留的字段必须原样带回。
138
+ 3. 构造包含 `id` 和目标完整配置的更新数组。
139
+ 4. 执行命令并报告更新结果。
88
140
 
89
141
  ## 参考
90
142
 
91
143
  - [lark-base](../SKILL.md) — 多维表格全部命令
144
+ - [lark-base-filter-condition.md](lark-base-filter-condition.md) — `visible_rule` / `filter` 条件结构公共协议
92
145
  - [lark-shared](../../lark-shared/SKILL.md) — 认证和全局参数
@@ -4,6 +4,8 @@
4
4
 
5
5
  通过表单分享链接填写并提交多维表格表单。仅支持分享模式(share_token),支持填写普通字段值和上传本地文件作为附件。
6
6
 
7
+ > **⚠️ 高风险写操作(high-risk-write):** 本命令会向表单写入并提交数据,属于高风险写操作,必须额外传递 `--yes` 进行确认,否则会返回 `confirmation_required` 错误并退出。当用户明确要求提交且目标表单无歧义时,直接附加 `--yes`,无需再次询问。
8
+
7
9
  ## 填写前必读:先获取表单详情
8
10
 
9
11
  **在调用 `+form-submit` 之前,必须先使用 `+form-detail` 获取表单详情。** 原因如下:
@@ -21,10 +23,11 @@ lark-cli base +form-detail --share-token <share_token>
21
23
 
22
24
  # 2️⃣ 根据返回的 questions 列表,按 type 格式化值、检查 required、判断 filter 条件
23
25
 
24
- # 3️⃣ 再提交
26
+ # 3️⃣ 再提交(高风险写操作,必须带 --yes)
25
27
  lark-cli base +form-submit \
26
28
  --share-token <share_token> \
27
- --json '{"fields":{...}}'
29
+ --json '{"fields":{...}}' \
30
+ --yes
28
31
  ```
29
32
 
30
33
  `+form-detail` 的返回中要重点读取 `questions[].type`、`questions[].required`、题目 `filter` 和附件场景所需的 `data.base_token`。
@@ -35,7 +38,8 @@ lark-cli base +form-submit \
35
38
  # 基本提交(填写普通字段)
36
39
  lark-cli base +form-submit \
37
40
  --share-token <share_token> \
38
- --json '{"fields":{"服务评分":5,"评价内容":"服务态度好"}}'
41
+ --json '{"fields":{"服务评分":5,"评价内容":"服务态度好"}}' \
42
+ --yes
39
43
 
40
44
  # 带附件提交(需要额外提供 --base-token)
41
45
  lark-cli base +form-submit \
@@ -47,15 +51,17 @@ lark-cli base +form-submit \
47
51
  "附件字段名": ["./report.pdf", "./photo.png"],
48
52
  "另一个附件字段": ["./doc.docx"]
49
53
  }
50
- }'
54
+ }' \
55
+ --yes
51
56
 
52
57
  # 使用应用身份(bot)
53
58
  lark-cli base +form-submit \
54
59
  --share-token <share_token> \
55
60
  --json '{"fields":{...}}' \
56
- --as bot
61
+ --as bot \
62
+ --yes
57
63
 
58
- # 预览 API 调用(不实际执行)
64
+ # 预览 API 调用(不实际执行,dry-run 无需 --yes)
59
65
  lark-cli base +form-submit \
60
66
  --share-token <share_token> \
61
67
  --json '{"fields":{...}}' \
@@ -69,6 +75,7 @@ lark-cli base +form-submit \
69
75
  | `--share-token <token>` | 是 | 表单分享 Token(必填),从表单分享链接中提取 |
70
76
  | `--base-token <token>` | 条件必填 | Base token;**当 `--json` 包含 `attachments` 时必须提供**,用于将附件上传到 Base Drive Media |
71
77
  | `--json <json>` | 是 | JSON 对象,包含 `"fields"`(普通字段值)和 `"attachments"`(附件上传),详见下方说明 |
78
+ | `--yes` | 是 | 确认高风险写操作。本命令为 high-risk-write,不带 `--yes` 会返回 `confirmation_required` |
72
79
  | `--format` | 否 | 输出格式:json(默认)\| pretty \| table \| ndjson \| csv |
73
80
  | `--as` | 否 | 身份:user(默认)\| bot |
74
81
  | `--dry-run` | 否 | 预览 API 调用,不执行 |
@@ -138,7 +145,8 @@ https://www.example.com/share/base/form/shrbcvST8eZy0vk8zjVZ1CAXNye
138
145
  ```bash
139
146
  lark-cli base +form-submit \
140
147
  --share-token shrbcvST8eZy0vk8zjVZ1CAXNye \
141
- --json '{"fields":{...}}'
148
+ --json '{"fields":{...}}' \
149
+ --yes
142
150
  ```
143
151
 
144
152
  ## 输出格式
@@ -158,6 +166,7 @@ lark-cli base +form-submit \
158
166
 
159
167
  ## 提示
160
168
 
169
+ - **本命令为高风险写操作(high-risk-write),必须额外传递 `--yes` 确认**,否则返回 `confirmation_required` 并以非零码退出;`--dry-run` 预览除外
161
170
  - 本命令仅支持通过表单分享链接(share_token)提交,不支持通过 base_token + table_id + view_id 方式提交
162
171
  - **当 `--json` 包含 `attachments` 时,必须额外提供 `--base-token`**,因为附件上传到 Base Drive Media 需要指定目标 Base
163
172
  - 附件字段只需在 `--json.attachments` 中提供本地路径即可,CLI 自动完成校验、并行上传、Token 获取和合并写入
@@ -7,13 +7,13 @@
7
7
  ## 适用场景(重点)
8
8
 
9
9
  - 适合导入 CSV / Excel、外部系统一次性写入新数据。
10
- - 先把输入数据映射到合适的字段类型,再组装 `fields + rows`。
10
+ - 先把每条输入数据映射为独立的字段对象,再组装到 `create_records`。
11
11
 
12
12
  ## 推荐命令
13
13
 
14
14
  ```bash
15
15
  lark-cli base +record-batch-create --base-token <base_token> --table-id <table_id> \
16
- --json '{"fields":["标题","状态"],"rows":[["任务 A","Open"],["任务 B","Done"]]}'
16
+ --json '{"create_records":[{"标题":"任务 A","状态":"Open"},{"标题":"任务 B","状态":"Done"}]}'
17
17
 
18
18
  lark-cli base +record-batch-create --base-token <base_token> --table-id <table_id> --json @batch-create.json
19
19
  ```
@@ -34,23 +34,25 @@ lark-cli base +record-batch-create --base-token <base_token> --table-id <table_i
34
34
 
35
35
  本节只说明 `+record-batch-create` 的外层 JSON 形状;CellValue 统一看 [lark-base-cell-value.md](lark-base-cell-value.md)。
36
36
 
37
- 对象形态:`{"fields":[...],"rows":[...]}`。
37
+ 对象形态:
38
+
39
+ ```json
40
+ {"create_records":[{"标题":"任务 A","状态":"Open"},{"标题":"任务 B","状态":"Done"}]}
41
+ ```
38
42
 
39
43
  | 字段 | 类型 | 必填 | 说明 |
40
44
  |------|------|------|------|
41
- | `fields` | `string[]` | 是 | 字段 ID 或字段名数组 |
42
- | `rows` | `CellValue[][]` | 是 | 二维数组,每一行按 `fields` 同序给 cell;单次最多 200 行 |
45
+ | `create_records` | `Array<Map<FieldNameOrID, CellValue>>` | 是 | 记录字段对象数组;每条记录可以提交不同字段,单次最多 200 条 |
43
46
 
44
47
  ## 返回重点
45
48
 
46
- 返回 `fields`、`field_id_list`、`record_id_list`、`data`,其中 `data` 与 `fields` 列顺序对齐。
49
+ 返回 `record_id_list` 和可选的 `ignored_fields`。
47
50
 
48
51
  ## 坑点
49
52
 
50
- - `fields` 与每行 `rows` 的列顺序必须一一对应。
51
- - 空单元格必须显式用 `null` 填充。
52
- - 单次最多 200 行,超出需分批写入。
53
- - select 写入未知选项时平台可能自动新增选项;如果不是要新增选项,先确认真实选项名。
53
+ - 每个 `create_records` 元素都是独立的记录字段对象,只提交该记录需要写入的字段。
54
+ - 单次最多 200 条,超出需分批写入。
55
+ - `select` 字段只支持写入字段中已有的选项;构造 CellValue 前先用 `+field-list` 或 `+field-search-options` 确认目标选项存在。
54
56
 
55
57
  ## 参考
56
58
 
@@ -2,13 +2,13 @@
2
2
 
3
3
  > **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
4
4
 
5
- 批量更新记录(将同一份 `patch` 批量应用到一批 `record_id_list`)。
5
+ 通过 `update_records` 为每条记录提交字段值。
6
6
 
7
7
  ## 推荐命令
8
8
 
9
9
  ```bash
10
10
  lark-cli base +record-batch-update --base-token <base_token> --table-id <table_id> \
11
- --json '{"record_id_list":["<record_id>"],"patch":{"状态":"完成"}}'
11
+ --json '{"update_records":{"<record_id_a>":{"状态":["完成"]},"<record_id_b>":{"分数":20}}}'
12
12
 
13
13
  lark-cli base +record-batch-update --base-token <base_token> --table-id <table_id> --json @batch-update.json
14
14
  ```
@@ -29,23 +29,25 @@ lark-cli base +record-batch-update --base-token <base_token> --table-id <table_i
29
29
 
30
30
  本节只说明 `+record-batch-update` 的外层 JSON 形状;CellValue 统一看 [lark-base-cell-value.md](lark-base-cell-value.md)。
31
31
 
32
- 对象形态:`{"record_id_list":[...],"patch":{...}}`。
32
+ 对象形态:
33
+
34
+ ```json
35
+ {"update_records":{"recA":{"状态":["完成"]},"recB":{"分数":20}}}
36
+ ```
33
37
 
34
38
  | 字段 | 类型 | 必填 | 说明 |
35
39
  |------|------|------|------|
36
- | `record_id_list` | `string[]` | 是 | 要更新的记录 ID 列表(单次最多 200 条) |
37
- | `patch` | `Map<FieldNameOrID, CellValue>` | 是 | 字段更新对象;key 是字段名或字段 ID,value 是 `CellValue`;同一份 `patch` 会应用到 `record_id_list` 内所有记录 |
40
+ | `update_records` | `Map<RecordID, Map<FieldNameOrID, CellValue>>` | 是 | record ID 到字段更新对象的映射(单次最多 200 条) |
38
41
 
39
42
  ## 返回重点
40
43
 
41
- 返回 `record_id_list`、`update`,可选返回 `ignored_fields`;`update` 可能为空对象。
44
+ 成功响应只包含可选的 `ignored_fields`;没有忽略字段时 `data` 为空对象。请求不会预先校验 record ID 是否存在,因此需要确认实际写入结果时,应再用 `+record-get` 读回目标记录。
42
45
 
43
46
  ## 坑点
44
47
 
45
- - 这是“同值批量更新”:所有 `record_id_list` 都应用同一份 `patch`。
46
- - `record_id_list` 最大 200 条,超过会被接口校验拒绝。
48
+ - 单次最多更新 200 条记录,超过会被接口校验拒绝。
47
49
  - 命令不会自动做字段/行映射转换,传什么就发什么。
48
- - 如果 `patch` 包含只读字段,返回里可能出现 `ignored_fields`;这些字段不会被更新。
50
+ - 如果字段映射包含只读字段,返回里可能出现 `ignored_fields`;这些字段不会被更新。
49
51
 
50
52
  ## 参考
51
53
 
@@ -55,7 +55,7 @@ lark-cli base +record-upsert --base-token <base_token> --table-id <table_id> --r
55
55
  ## 坑点
56
56
 
57
57
  - 有 `--record-id` 就一定更新;不传就一定创建,不会自动查重或按业务键 upsert。
58
- - select 写入未知选项时平台可能自动新增选项;如果不是要新增选项,先用 `+field-list` / `+field-search-options` 确认真实选项名。
58
+ - `select` 字段只支持写入字段中已有的选项;构造 CellValue 前先用 `+field-list` 或 `+field-search-options` 确认目标选项存在。
59
59
  - 这是写入操作,执行前必须确认目标表和字段。
60
60
 
61
61
  ## 参考
@@ -6,6 +6,7 @@ This guide is the entry point for Base advanced permissions and roles. Use it to
6
6
 
7
7
  | Goal | Command | Notes |
8
8
  |------|---------|-------|
9
+ | Check advanced permission status | `+base-get` | Read `data.base.is_advanced`. There is no `+advperm-get` command. |
9
10
  | Enable advanced permissions | `+advperm-enable` | Required before creating or updating roles. Caller must be a Base admin. |
10
11
  | Disable advanced permissions | `+advperm-disable` | High-risk write. Disabling invalidates existing custom roles. |
11
12
  | Locate roles | `+role-list` | Returns role summaries. Use `+role-get` for full config. |
@@ -14,6 +15,16 @@ This guide is the entry point for Base advanced permissions and roles. Use it to
14
15
  | Update a role | `+role-update` | Delta merge. Read current config first, then send only intended changes. |
15
16
  | Delete a role | `+role-delete` | Custom roles only. System roles cannot be deleted. |
16
17
 
18
+ ## Required order
19
+
20
+ At the start of a role workflow, before the first `+role-list`, `+role-get`, `+role-create`, `+role-update`, or `+role-delete` call:
21
+
22
+ 1. Run `lark-cli base +base-get --base-token <base_token>` and inspect `data.base.is_advanced`.
23
+ 2. If `is_advanced` is `false`, run `+advperm-enable` before the role command. If the user did not authorize enabling advanced permissions, stop and explain the required precondition.
24
+ 3. Run the requested role commands only after `is_advanced` is `true` or `+advperm-enable` succeeds. Reuse that confirmed status for later role calls in the same workflow.
25
+
26
+ Do not probe with `+advperm-get`: that command is not supported. Do not use an empty `+role-list` response to infer the advanced permission status; a disabled Base can also return an empty list.
27
+
17
28
  ## Safety boundaries
18
29
 
19
30
  - Role operations require advanced permissions to be enabled and the caller to be a Base admin.