@amaster.ai/pi-lark 0.1.2-beta.60 → 0.1.2-beta.62
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.
- package/README.md +1 -3
- package/package.json +2 -2
- package/skills/lark-approval/SKILL.md +2 -2
- package/skills/lark-approval/references/lark-approval-instances-initiated.md +5 -0
- package/skills/lark-approval/references/lark-approval-tasks-add-sign.md +68 -20
- package/skills/lark-approval/references/lark-approval-tasks-query.md +5 -0
- package/skills/lark-apps/SKILL.md +1 -1
- package/skills/lark-apps/references/lark-apps-cache.md +38 -5
- package/skills/lark-base/SKILL.md +131 -11
- package/skills/lark-base/references/lark-base-app.md +18 -0
- package/skills/lark-base/references/lark-base-dashboard-block-config.md +28 -1
- package/skills/lark-base/references/lark-base-dashboard.md +29 -11
- package/skills/lark-base/references/lark-base-data-query.md +2 -6
- package/skills/lark-base/references/lark-base-field-extension.md +170 -0
- package/skills/lark-base/references/lark-base-field-lookup.md +1 -1
- package/skills/lark-base/references/lark-base-field-schema.md +10 -1
- package/skills/lark-base/references/lark-base-filter-condition.md +32 -5
- package/skills/lark-base/references/lark-base-form-detail.md +1 -1
- package/skills/lark-base/references/lark-base-form-questions-create.md +36 -5
- package/skills/lark-base/references/lark-base-form-submit.md +2 -2
- package/skills/lark-base/references/lark-base-record-history-list.md +1 -1
- package/skills/lark-base/references/lark-base-record-query-and-analysis-sop.md +95 -205
- package/skills/lark-base/references/lark-base-template-center.md +199 -0
- package/skills/lark-calendar/SKILL.md +14 -5
- package/skills/lark-calendar/references/lark-calendar-join-event.md +43 -0
- package/skills/lark-calendar/references/lark-calendar-transfer.md +89 -0
- package/skills/lark-doc/references/lark-doc-fetch.md +1 -1
- package/skills/lark-drive/references/lark-drive-add-comment.md +2 -2
- package/skills/lark-drive/references/lark-drive-member-remove.md +2 -1
- package/skills/lark-im/SKILL.md +15 -3
- package/skills/lark-im/references/lark-im-message-read-status.md +96 -0
- package/skills/lark-mail/references/lark-mail-draft-create.md +12 -12
- package/skills/lark-mail/references/lark-mail-forward.md +17 -17
- package/skills/lark-mail/references/lark-mail-reply-all.md +8 -8
- package/skills/lark-mail/references/lark-mail-reply.md +6 -6
- package/skills/lark-mail/references/lark-mail-send.md +20 -20
- package/skills/lark-mail/references/lark-mail-template-create.md +7 -6
- package/skills/lark-mail/references/lark-mail-template-update.md +7 -6
- package/skills/lark-markdown/SKILL.md +1 -1
- package/skills/lark-meeting/SKILL.md +150 -0
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-apply-permission.md +2 -5
- package/skills/lark-meeting/references/lark-minutes-detail.md +52 -0
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-download.md +3 -5
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-search.md +4 -34
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-speaker-replace.md +3 -4
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-summary.md +3 -5
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-todo.md +44 -16
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-update.md +2 -3
- package/skills/lark-meeting/references/lark-minutes-upload.md +71 -0
- package/skills/lark-meeting/references/lark-note-detail.md +15 -0
- package/skills/lark-meeting/references/lark-note-transcript.md +19 -0
- package/skills/lark-meeting/references/lark-vc-agent-meeting-end.md +26 -0
- package/skills/lark-meeting/references/lark-vc-agent-meeting-invite.md +32 -0
- package/skills/{lark-vc-agent → lark-meeting}/references/lark-vc-agent-meeting-join.md +11 -56
- package/skills/{lark-vc-agent → lark-meeting}/references/lark-vc-agent-meeting-leave.md +2 -41
- package/skills/lark-meeting/references/lark-vc-detail.md +31 -0
- package/skills/lark-meeting/references/lark-vc-meeting-countdown.md +103 -0
- package/skills/{lark-vc → lark-meeting}/references/lark-vc-meeting-events.md +9 -98
- package/skills/{lark-vc → lark-meeting}/references/lark-vc-meeting-list-active.md +4 -29
- package/skills/{lark-vc → lark-meeting}/references/lark-vc-meeting-message-send.md +3 -5
- package/skills/lark-meeting/references/lark-vc-meeting-screenshot.md +34 -0
- package/skills/{lark-vc → lark-meeting}/references/lark-vc-recording.md +3 -64
- package/skills/{lark-vc → lark-meeting}/references/lark-vc-search.md +9 -28
- package/skills/lark-meeting/scenes/create-and-edit-minutes.md +147 -0
- package/skills/lark-meeting/scenes/live-meeting-attend.md +164 -0
- package/skills/lark-meeting/scenes/live-meeting-interact.md +101 -0
- package/skills/lark-meeting/scenes/query-meeting-and-artifacts.md +90 -0
- package/skills/lark-meeting/scenes/query-minutes-and-artifacts.md +70 -0
- package/skills/lark-meeting/scenes/query-note-and-artifacts.md +127 -0
- package/skills/lark-minutes/SKILL.md +5 -203
- package/skills/lark-note/SKILL.md +5 -88
- package/skills/lark-sheets/SKILL.md +76 -60
- package/skills/lark-sheets/references/lark-sheets-batch-update.md +82 -13
- package/skills/lark-sheets/references/lark-sheets-chart.md +296 -159
- package/skills/lark-sheets/references/lark-sheets-conditional-format.md +5 -3
- package/skills/lark-sheets/references/lark-sheets-filter.md +1 -1
- package/skills/lark-sheets/references/lark-sheets-formula-translation.md +78 -65
- package/skills/lark-sheets/references/lark-sheets-formula-verify.md +21 -17
- package/skills/lark-sheets/references/lark-sheets-pivot-table.md +2 -1
- package/skills/lark-sheets/references/lark-sheets-range-operations.md +1 -1
- package/skills/lark-sheets/references/lark-sheets-read-data.md +7 -4
- package/skills/lark-sheets/references/lark-sheets-search-replace.md +4 -4
- package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +2 -2
- package/skills/lark-sheets/references/lark-sheets-sparkline.md +1 -0
- package/skills/lark-sheets/references/lark-sheets-styles-put.md +3 -3
- package/skills/lark-sheets/references/lark-sheets-visual-standards.md +6 -4
- package/skills/lark-sheets/references/lark-sheets-workbook.md +3 -1
- package/skills/lark-sheets/references/lark-sheets-write-cells.md +49 -47
- package/skills/lark-sheets/scripts/lark_chart_layout_check.py +472 -0
- package/skills/lark-slides/SKILL.md +2 -0
- package/skills/lark-slides/references/cli/lark-slides-add-slide.md +6 -6
- package/skills/lark-slides/references/cli/lark-slides-delete-slide.md +3 -3
- package/skills/lark-slides/references/cli/lark-slides-replace-slide.md +11 -11
- package/skills/lark-slides/references/cli/lark-slides-xml-presentation-slide-get.md +1 -1
- package/skills/lark-slides/references/cli/lark-slides-xml-presentation-slide-replace.md +2 -2
- package/skills/lark-slides/references/workflow/slides-editing.md +11 -11
- package/skills/lark-slides/references/xml/slides_xml_schema_definition.xml +103 -14
- package/skills/lark-task/SKILL.md +1 -1
- package/skills/lark-vc/SKILL.md +5 -205
- package/skills/lark-vc-agent/SKILL.md +5 -206
- package/skills/lark-workflow-meeting-summary/SKILL.md +10 -14
- package/skills/lark-base/references/lark-base-cell-value.md +0 -165
- package/skills/lark-base/references/lark-base-data-analysis-pandas.md +0 -93
- package/skills/lark-base/references/lark-base-data-analysis-python-stdlib.md +0 -120
- package/skills/lark-base/references/lark-base-record-batch-create.md +0 -63
- package/skills/lark-base/references/lark-base-record-batch-update.md +0 -57
- package/skills/lark-base/references/lark-base-record-query-and-analysis-cloud-sop.md +0 -145
- package/skills/lark-minutes/references/lark-minutes-detail.md +0 -63
- package/skills/lark-minutes/references/lark-minutes-upload.md +0 -104
- package/skills/lark-note/references/lark-note-detail.md +0 -29
- package/skills/lark-note/references/lark-note-transcript.md +0 -25
- package/skills/lark-vc/references/lark-vc-detail.md +0 -49
- package/skills/lark-vc/references/vc-domain-boundaries.md +0 -203
|
@@ -211,7 +211,7 @@ user / created_by / updated_by: is, isNot, isEmpty, isNotEmpty
|
|
|
211
211
|
- `group_by[].sort.type` 为 `group` 或 `view` 且缺少 `order` 时,自动补 `order:"asc"`;`value` 排序不会自动补方向
|
|
212
212
|
- 本地校验(可通过 `--no-validate` 跳过)
|
|
213
213
|
- `+dashboard-block-create` 默认对 `data_config` 做轻量校验;失败会聚合错误并给出修复建议
|
|
214
|
-
- `+dashboard-block-update`
|
|
214
|
+
- `+dashboard-block-update` 不带 `--type`,所以不做按组件类型的强校验,字段由后端验证;但 `number_format` 子字段与 create 一样本地拦截(见下方 number_format 小节)
|
|
215
215
|
- 仅需传入合法 JSON;CLI 不会擅自改写你的业务含义
|
|
216
216
|
|
|
217
217
|
## 可复制模板
|
|
@@ -372,6 +372,33 @@ user / created_by / updated_by: is, isNot, isEmpty, isNotEmpty
|
|
|
372
372
|
}
|
|
373
373
|
```
|
|
374
374
|
|
|
375
|
+
### statistics 指标卡数值格式 number_format(可选)
|
|
376
|
+
|
|
377
|
+
仅 `type: statistics` 支持在 `data_config` 里加可选 `number_format`,控制数值展示格式与精度;不传时服务端会补 `{"formatName":"digital"}`,`precision` 保持省略。其它组件类型不支持该字段:create 会被 CLI 直接拒绝(显式 `--no-validate` 可跳过),避免把后端严格 schema 错误延迟到请求阶段;update 不带 `--type`,由服务端结合组件现有类型裁决。
|
|
378
|
+
|
|
379
|
+
- `formatName`(string,可选):必须精确匹配下表 5 个枚举之一,**区分大小写**(不同于 `series[].rollup` 会被自动转成大写,这里不做规范化,`DIGITAL` 会被拒绝)。
|
|
380
|
+
- `precision`(integer,可选):小数位数,`0` 到 `9` 的整数;`2.5` 这类非整数会被本地拒绝。
|
|
381
|
+
|
|
382
|
+
| formatName | 含义 | 示例(precision=2) |
|
|
383
|
+
|------------|------|--------------------|
|
|
384
|
+
| `digital` | 千分位数字(不传 `number_format` 时的服务端默认值) | `1,234.56` |
|
|
385
|
+
| `digital_without_separator` | 无千分位数字 | `1234.56` |
|
|
386
|
+
| `percentage_rounded` | 百分比 | `1,234.56%` |
|
|
387
|
+
| `cyn_rounded` | 人民币金额 | `¥1,234.56` |
|
|
388
|
+
| `dollar_rounded` | 美元金额 | `$1,234.56` |
|
|
389
|
+
|
|
390
|
+
指标卡(金额,保留 2 位小数):
|
|
391
|
+
|
|
392
|
+
```json
|
|
393
|
+
{
|
|
394
|
+
"table_name": "订单表",
|
|
395
|
+
"series": [{ "field_name": "金额", "rollup": "SUM" }],
|
|
396
|
+
"number_format": { "formatName": "dollar_rounded", "precision": 2 }
|
|
397
|
+
}
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
> **更新时 `number_format` 按子字段合并**:例如现有 `{"formatName":"digital","precision":2}` 时只传 `{"number_format":{"precision":0}}`,服务端会保留 `formatName:"digital"` 并把精度改为 `0`。其它顶层 key 的更新策略见 [lark-base-dashboard.md](lark-base-dashboard.md)。
|
|
401
|
+
|
|
375
402
|
文本组件(Markdown 富文本):
|
|
376
403
|
|
|
377
404
|
```json
|
|
@@ -17,10 +17,26 @@ Dashboard 是 Base 中的数据可视化看板,可以把表格数据变成**
|
|
|
17
17
|
| 创建/删除/改名称 | `+dashboard-create/delete/update` | 本页下方「仪表盘管理」 |
|
|
18
18
|
| 在仪表盘里添加组件 | `+dashboard-block-create` | 先定位 dashboard、表和字段,再读 [Dashboard Block 配置](lark-base-dashboard-block-config.md) 构造 `data_config` |
|
|
19
19
|
| 修改组件 | `+dashboard-block-update` | 先读 block 现状,再读 [Dashboard Block 配置](lark-base-dashboard-block-config.md) 决定替换哪些顶层 key |
|
|
20
|
+
| 创建/更新时指定组件精确位置大小 | `+dashboard-block-create/update --position` | 本页下方「精确布局 --position vs +dashboard-arrange」 |
|
|
20
21
|
| 查看仪表盘有哪些组件 | `+dashboard-get` 或 `+dashboard-block-list` | 本页下方「查看仪表盘」 |
|
|
21
22
|
| 读取图表计算结果 | `+dashboard-block-get-data` | 返回图表最终数据协议;需要 block 元数据先用 `+dashboard-block-get` |
|
|
22
23
|
| 智能重排组件布局 | `+dashboard-arrange` | 用户明确要求重排,或本次会话新建仪表盘的收尾整理;无法指定 `x/y/w/h`、精确位置或尺寸 |
|
|
23
24
|
|
|
25
|
+
## 精确布局 --position vs +dashboard-arrange
|
|
26
|
+
|
|
27
|
+
create/update 可选 `--position`,用 12 列栅格坐标精确指定单个组件的落点与大小:`{"x","y","w","h"}`,`x`/`y` 为左上角坐标(>=0),`w` 为宽度(1..12,且 `x+w<=12`),`h` 为高度(>=1)。它与 `name`/`type`/`data_config` 平级挂在请求体顶层。
|
|
28
|
+
|
|
29
|
+
> [!IMPORTANT]
|
|
30
|
+
> - **四个 key 必须齐全且都是数字**:`position` 按整体提交、不做逐字段合并,所以只传 `{"x":6}` 表达的不是"只挪位置不改大小",而是一个缺了三项的位置。本地会拒绝残缺对象(含显式 `null`)。
|
|
31
|
+
> - 坐标**取值不做本地校验**:越界、负值或重叠坐标会原样发给服务端,由服务端自动重排。调用方仍应优先规划 12 列范围内且不重叠的坐标,避免自动重排改变预期落点。
|
|
32
|
+
> - 不传 `--position`:create 由服务端自动装箱,update 保持当前布局不变。
|
|
33
|
+
> - 只有用户明确给出 `x/y/w/h`、具体行列/顺序、每个组件宽高或可直接换算的尺寸比例时才用 `--position`。"调整布局""美化""撑满""铺满"本身不算精确约束,没有组件级坐标或尺寸时优先用 `+dashboard-arrange` 整盘编排。
|
|
34
|
+
> - 命令成功即视为写入成功,一般无需仅为读回位置再调用 `+dashboard-block-get` / `+dashboard-block-list`;成功响应不代表最终渲染位置已经过读回验证。
|
|
35
|
+
|
|
36
|
+
## statistics 指标卡数值格式
|
|
37
|
+
|
|
38
|
+
`statistics` 组件可在 create/update 的 `data_config.number_format` 中设置 `formatName` 和 `precision`。create 会校验组件类型和子字段;update 不接收 `--type`,只校验 `number_format` 子字段,再由服务端结合现有 block 类型裁决。枚举、精度范围、更新语义和可复制模板读取 [Dashboard Block 配置](lark-base-dashboard-block-config.md)。
|
|
39
|
+
|
|
24
40
|
## 典型场景工作流
|
|
25
41
|
|
|
26
42
|
### 场景 1:从 0 到 1 创建仪表盘
|
|
@@ -30,7 +46,7 @@ Dashboard 是 Base 中的数据可视化看板,可以把表格数据变成**
|
|
|
30
46
|
- 聚合方式:创建指标卡或分布图时优先把聚合写进 `data_config`,只有 Top N、字段取值探索、复杂筛选校验或 helper 汇总表场景才先用 `+data-query`。
|
|
31
47
|
- Dry-run 边界:已按模板构造的简单指标卡、分布图、趋势图不需要逐个 `--dry-run` 后再真实创建;只有在调试 JSON、检查请求体、复杂自造 `data_config` 或处理 API validation 错误时才 dry-run。
|
|
32
48
|
- 验证方式:创建接口成功返回即表示写入成功。只有结果不确定时才用一次 `+dashboard-get` 或 `+dashboard-block-list` 确认仪表盘和组件存在;不要仅为确认创建而逐组件调用 `+dashboard-block-get-data`。
|
|
33
|
-
-
|
|
49
|
+
- 布局方式:用户没有给出组件级坐标或尺寸时,创建完成后用一次 `+dashboard-arrange` 整盘编排即可;只有用户明确给出可执行的精确布局约束时才在 create 中带 `--position`,此时通常不再需要 arrange。
|
|
34
50
|
|
|
35
51
|
示例:搭建一个销售数据分析仪表盘
|
|
36
52
|
|
|
@@ -68,9 +84,10 @@ lark-cli base +dashboard-block-create \
|
|
|
68
84
|
|
|
69
85
|
# 继续创建其他组件...
|
|
70
86
|
|
|
71
|
-
# 第 5
|
|
87
|
+
# 第 5 步:组件创建完成后,可按需使用 arrange 智能重排(未使用 --position 时可选)
|
|
72
88
|
# 默认布局可能不够美观,arrange 会根据组件数量和类型自动优化布局
|
|
73
|
-
#
|
|
89
|
+
# 若任一组件使用了显式 --position,跳过此步骤;除非用户明确同意放弃精确布局
|
|
90
|
+
# 若用户没有要求美化/重排,也可跳过;这不影响仪表盘和组件是否已创建成功
|
|
74
91
|
lark-cli base +dashboard-arrange \
|
|
75
92
|
--base-token xxx \
|
|
76
93
|
--dashboard-id blk_xxx
|
|
@@ -105,7 +122,7 @@ lark-cli base +dashboard-block-create \
|
|
|
105
122
|
### 场景 3:编辑已有组件
|
|
106
123
|
|
|
107
124
|
> [!IMPORTANT]
|
|
108
|
-
> `+dashboard-block-update` **不能修改组件的 `type`**(图表类型),只能更新 `name`
|
|
125
|
+
> `+dashboard-block-update` **不能修改组件的 `type`**(图表类型),只能更新 `name`、`data_config` 和可选的 `position`。
|
|
109
126
|
> 如需更换组件类型,必须先删除再重新创建。
|
|
110
127
|
|
|
111
128
|
```bash
|
|
@@ -132,20 +149,21 @@ lark-cli base +dashboard-block-update \
|
|
|
132
149
|
--base-token xxx \
|
|
133
150
|
--dashboard-id blk_xxx \
|
|
134
151
|
--block-id chtxxxxxxxx \
|
|
135
|
-
--data-config '{...}'
|
|
152
|
+
--data-config '{...}' \
|
|
153
|
+
--position '{...}' # 可选,只在需要调整布局时传
|
|
136
154
|
|
|
137
155
|
```
|
|
138
156
|
|
|
139
157
|
### 场景 4:重排仪表盘布局
|
|
140
158
|
|
|
141
|
-
|
|
159
|
+
当用户要求调整布局、重排、美化、撑满或铺满,但没有给出组件级坐标或尺寸时使用。定位仪表盘后用一次 `+dashboard-arrange` 整盘编排即可(对本次会话从零新建的仪表盘,在建完组件后编排一次)。
|
|
142
160
|
|
|
143
161
|
> [!CAUTION]
|
|
144
162
|
> - 排列结果是**服务端智能推荐**,不一定完全符合用户预期
|
|
145
|
-
> -
|
|
163
|
+
> - `+dashboard-arrange` 无法指定 `x/y/w/h`、精确位置或尺寸,排列逻辑是**自适应**的;只有用户明确给出可执行的组件级坐标、行列或尺寸约束时才改用 `--position`
|
|
146
164
|
> - **不建议**在已有仪表盘上自动调用,除非用户明确要求
|
|
147
|
-
> -
|
|
148
|
-
> -
|
|
165
|
+
> - 用户只要求一般性重排、美化、撑满或铺满时,用 `+dashboard-arrange` 整盘编排
|
|
166
|
+
> - 编排结果不理想时,可结合用户反馈再调整;不要为了凑效果去探测 raw `lark-cli api`、源码或未公开布局参数
|
|
149
167
|
|
|
150
168
|
```bash
|
|
151
169
|
# 第 1 步:列出仪表盘,定位到目标仪表盘
|
|
@@ -232,7 +250,7 @@ A: 常见原因:
|
|
|
232
250
|
A: 不可以,必须串行执行。等上一个 `+dashboard-block-create` 完成后再执行下一个。
|
|
233
251
|
|
|
234
252
|
**Q: 组件的 `type` 创建后能改吗?**
|
|
235
|
-
A: 不能。`+dashboard-block-update` 只能修改 `name` 和 `
|
|
253
|
+
A: 不能。`+dashboard-block-update` 只能修改 `name`、`data_config` 和 `position`,不能修改 `type`。
|
|
236
254
|
|
|
237
255
|
**Q: 更新组件的命令和 data_config 怎么写?**
|
|
238
256
|
A:
|
|
@@ -242,7 +260,7 @@ A:
|
|
|
242
260
|
**data_config 更新策略(顶层 key merge)**:
|
|
243
261
|
- 只传入需要修改的顶层字段(如 `series`、`filter`)
|
|
244
262
|
- 未传的顶层字段(如 `group_by`)自动保留原值
|
|
245
|
-
-
|
|
263
|
+
- 但每个传入的字段内部通常是**全量替换**(如传新 `filter` 会完整覆盖旧 `filter`);`number_format` 例外,按子字段合并,见 [Dashboard Block 配置](lark-base-dashboard-block-config.md) 的 number_format 小节
|
|
246
264
|
|
|
247
265
|
**Q: 查看已有组件有什么用?**
|
|
248
266
|
A: 在「添加新组件」或「编辑组件」前查看已有组件可以:
|
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
|
|
4
4
|
> **前置路由**: [Record 查询与分析 SOP](lark-base-record-query-and-analysis-sop.md) | **认证或授权问题**: [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md)
|
|
5
5
|
|
|
6
|
-
本文档合并常用 fewshot 与完整 DSL 协议。只有 [Record 查询与分析 SOP](lark-base-record-query-and-analysis-sop.md) 的 Cloud 路径选定 `+data-query` 后才读取,并优先定位与当前查询有关的示例、字段或错误协议。
|
|
7
|
-
|
|
8
6
|
## 限制
|
|
9
7
|
|
|
10
8
|
- **权限要求**(按文档类型分流):
|
|
@@ -75,7 +73,7 @@ lark-cli base +data-query \
|
|
|
75
73
|
| 参数 | 必填 | 说明 |
|
|
76
74
|
|------------------------|------|------|
|
|
77
75
|
| `--base-token <token>` | 是 | Base Token(base_token) |
|
|
78
|
-
| `--dsl <json>` | 是 | LiteQuery Protocol JSON DSL
|
|
76
|
+
| `--dsl <json>` | 是 | LiteQuery Protocol JSON DSL 查询语句。注意,本工具 schema 与 record/view 查询的 schema 不同,需要充分阅读本文档后,编写正确的 DSL,避免与其他场景的 DSL 混淆。 |
|
|
79
77
|
|
|
80
78
|
## 如何从链接中解析参数
|
|
81
79
|
|
|
@@ -435,7 +433,7 @@ CLI 输出标准信封 `{ok, identity, data}`(失败时为 `{ok:false, identit
|
|
|
435
433
|
5. 若候选记录包含 link 字段,提取关联 `record_id` 后到关联表用 `+record-get` 批量读取展示字段。
|
|
436
434
|
6. 最终回答展示真实业务字段;内部 `record_id` 用于连接或定位。
|
|
437
435
|
|
|
438
|
-
不要把 `data-query pagination.limit` 理解为分页扫描;它只限制 Base 云端查询服务返回的聚合结果行数,不支持 offset。需要逐条原始记录时按
|
|
436
|
+
不要把 `data-query pagination.limit` 理解为分页扫描;它只限制 Base 云端查询服务返回的聚合结果行数,不支持 offset。需要逐条原始记录时按 [Record 查询与分析 SOP](lark-base-record-query-and-analysis-sop.md) 的完整读取或回查路径处理。
|
|
439
437
|
|
|
440
438
|
## 坑点
|
|
441
439
|
|
|
@@ -453,6 +451,4 @@ CLI 输出标准信封 `{ok, identity, data}`(失败时为 `{ok:false, identit
|
|
|
453
451
|
|
|
454
452
|
- [lark-base](../SKILL.md) — 多维表格全部命令
|
|
455
453
|
- [lark-shared](../../lark-shared/SKILL.md) — 认证和全局参数
|
|
456
|
-
- [Cloud SOP](lark-base-record-query-and-analysis-cloud-sop.md) — Cloud 路径的查询范围、下推、分页、`+record-list` / `+record-search` 回查和关系查询
|
|
457
|
-
- [lark-base-cell-value.md](lark-base-cell-value.md) — CellValue 格式规范
|
|
458
454
|
- [Field Schema](lark-base-field-schema.md) — 字段类型与 JSON 结构
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# base field-extension
|
|
2
|
+
|
|
3
|
+
字段插件用于扩展基础字段能力,当同行其他单元格更新时,触发 LLM 推理生成新单元格。当前公开支持的插件 ID 只有 `builtin_llm_completion`,已确认可用于文本、单选、数字字段,让目标字段基于 prompt 和字段引用生成内容,并可手动触发该字段的单元格异步更新任务。
|
|
4
|
+
|
|
5
|
+
三个命令:
|
|
6
|
+
|
|
7
|
+
- `+field-extension-get`:读取目标字段当前可识别的插件配置。
|
|
8
|
+
- `+field-extension-update`:安装、更新或清空目标字段插件配置。
|
|
9
|
+
- `+field-extension-update-cells`:对已配置字段插件的目标字段发起手动更新任务。
|
|
10
|
+
|
|
11
|
+
## 何时使用字段插件
|
|
12
|
+
|
|
13
|
+
用户明确要让某个已有字段根据其他字段自动生成内容、总结、分类、翻译、提取信息,且目标能力可以用 prompt 表达时,使用字段插件。当前已确认的目标字段类型是文本、单选、数字。
|
|
14
|
+
|
|
15
|
+
字段插件只能建立在已有字段上,不能创建列 schema。新建字段仍使用 `+field-create`;修改字段类型、选项、名称等 schema 属性仍使用 `+field-update`。
|
|
16
|
+
|
|
17
|
+
## 推荐命令
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# 读取当前插件配置
|
|
21
|
+
lark-cli base +field-extension-get \
|
|
22
|
+
--base-token <base_token> \
|
|
23
|
+
--table-id <table_id> \
|
|
24
|
+
--field-id <target_field_id> \
|
|
25
|
+
--as user
|
|
26
|
+
|
|
27
|
+
# 安装或更新 LLM Completion 插件
|
|
28
|
+
lark-cli base +field-extension-update \
|
|
29
|
+
--base-token <base_token> \
|
|
30
|
+
--table-id <table_id> \
|
|
31
|
+
--field-id <target_field_id> \
|
|
32
|
+
--json '{"extension_id":"builtin_llm_completion","inputs":{"prompt":[{"type":"text","text":"请根据 "},{"type":"field_ref","field":"需求描述"},{"type":"text","text":" 输出一句简洁结论。"}]}}' \
|
|
33
|
+
--as user \
|
|
34
|
+
--yes
|
|
35
|
+
|
|
36
|
+
# 清空字段插件配置
|
|
37
|
+
lark-cli base +field-extension-update \
|
|
38
|
+
--base-token <base_token> \
|
|
39
|
+
--table-id <table_id> \
|
|
40
|
+
--field-id <target_field_id> \
|
|
41
|
+
--json '{}' \
|
|
42
|
+
--as user \
|
|
43
|
+
--yes
|
|
44
|
+
|
|
45
|
+
# 按视图范围触发整列更新
|
|
46
|
+
lark-cli base +field-extension-update-cells \
|
|
47
|
+
--base-token <base_token> \
|
|
48
|
+
--table-id <table_id> \
|
|
49
|
+
--field-id <target_field_id> \
|
|
50
|
+
--type column \
|
|
51
|
+
--view-id <view_id> \
|
|
52
|
+
--as user \
|
|
53
|
+
--yes
|
|
54
|
+
|
|
55
|
+
# 只更新指定记录
|
|
56
|
+
lark-cli base +field-extension-update-cells \
|
|
57
|
+
--base-token <base_token> \
|
|
58
|
+
--table-id <table_id> \
|
|
59
|
+
--field-id <target_field_id> \
|
|
60
|
+
--type row \
|
|
61
|
+
--record-id <record_id_1> \
|
|
62
|
+
--record-id <record_id_2> \
|
|
63
|
+
--as user \
|
|
64
|
+
--yes
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## 工作流
|
|
68
|
+
|
|
69
|
+
1. 定位 Base、Table 和目标 Field。目标 Field 是承载插件输出的已有字段,不是 prompt 中被引用的输入字段。
|
|
70
|
+
2. 用 `+field-extension-get` 读取当前配置。返回 `current_extension=null` 表示未配置、无法识别或存量配置无法转换。
|
|
71
|
+
3. 构造 `+field-extension-update --json`。安装或更新时传 `extension_id=builtin_llm_completion` 和 `inputs.prompt`;清空时传 `{}`。
|
|
72
|
+
4. 配置成功后,只有用户明确要立即生成或刷新已有单元格时,才调用 `+field-extension-update-cells` 发起异步生成任务。
|
|
73
|
+
5. 需要验收结果时,等待任务完成或稍后用记录读取命令抽样查看目标字段单元格;`update_cells` 只返回任务 ID,不直接返回生成结果。
|
|
74
|
+
|
|
75
|
+
## JSON 结构
|
|
76
|
+
|
|
77
|
+
### 通用结构
|
|
78
|
+
|
|
79
|
+
`+field-extension-update --json` 的顶层结构是字段插件配置 envelope。不同 `extension_id` 对应不同的 `inputs` 结构;不要把某个插件的 `inputs` 当成所有字段插件的固定结构。
|
|
80
|
+
|
|
81
|
+
| 字段 | 类型 | 说明 |
|
|
82
|
+
|---|---|---|
|
|
83
|
+
| `extension_id` | string | 插件 ID。当前公开只支持 `builtin_llm_completion` |
|
|
84
|
+
| `inputs` | object | 插件配置对象,结构由 `extension_id` 决定 |
|
|
85
|
+
|
|
86
|
+
清空字段插件配置时传空对象:
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### `builtin_llm_completion`
|
|
93
|
+
|
|
94
|
+
当前 `builtin_llm_completion` 用于让已有字段根据 prompt 生成内容。它的 `inputs` 结构如下:
|
|
95
|
+
|
|
96
|
+
| 字段 | 类型 | 说明 |
|
|
97
|
+
|---|---|---|
|
|
98
|
+
| `inputs.prompt` | PromptSegment[] | 有序 prompt 片段数组 |
|
|
99
|
+
| `prompt[].type` | string | `text` 或 `field_ref` |
|
|
100
|
+
| `prompt[].text` | string | `type=text` 时必填 |
|
|
101
|
+
| `prompt[].field` | string | `type=field_ref` 时必填,可传当前表的字段 ID 或字段名 |
|
|
102
|
+
|
|
103
|
+
安装或更新示例:
|
|
104
|
+
|
|
105
|
+
```json
|
|
106
|
+
{
|
|
107
|
+
"extension_id": "builtin_llm_completion",
|
|
108
|
+
"inputs": {
|
|
109
|
+
"prompt": [
|
|
110
|
+
{
|
|
111
|
+
"type": "text",
|
|
112
|
+
"text": "请根据 "
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"type": "field_ref",
|
|
116
|
+
"field": "需求描述"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"type": "text",
|
|
120
|
+
"text": " 输出一句简洁的中文结论。"
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
`field_ref` 只能引用当前表中的其他字段,不能引用目标字段自身;附件字段和其他不支持字段不要作为引用字段。
|
|
128
|
+
|
|
129
|
+
## 更新单元格
|
|
130
|
+
|
|
131
|
+
`+field-extension-update-cells` 有两种范围:
|
|
132
|
+
|
|
133
|
+
这是异步生成任务,响应只表示任务已创建。单元格越多,生成和写回通常耗时越久;整列更新尤其需要控制范围。
|
|
134
|
+
|
|
135
|
+
| 范围 | 参数 | 语义 |
|
|
136
|
+
|---|---|---|
|
|
137
|
+
| `--type column` | 可选 `--view-id` | 更新目标字段在该视图范围内的单元格;不传 `--view-id` 时后端使用目标表首视图 |
|
|
138
|
+
| `--type row` | 必填一个或多个 `--record-id` | 只更新这些记录上的目标字段单元格 |
|
|
139
|
+
|
|
140
|
+
`--type row` 不要传 `--view-id`;`--type column` 不要传 `--record-id`。
|
|
141
|
+
|
|
142
|
+
响应只返回:
|
|
143
|
+
|
|
144
|
+
```json
|
|
145
|
+
{
|
|
146
|
+
"task_id": "<task_id>"
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## 返回重点
|
|
151
|
+
|
|
152
|
+
读取和写配置都返回 `current_extension`:
|
|
153
|
+
|
|
154
|
+
- 已配置并可识别时,`current_extension.extension_id` 表示插件 ID,`current_extension.inputs` 是该插件对应的配置对象。
|
|
155
|
+
- 未配置或当前无法识别时,`current_extension` 为 `null`。
|
|
156
|
+
|
|
157
|
+
## 权限和风险
|
|
158
|
+
|
|
159
|
+
- `+field-extension-get` 是只读命令,权限 `base:field:read`。
|
|
160
|
+
- `+field-extension-update` 是高风险写命令,权限 `base:field:update`,会改变目标字段的自动生成配置,执行时必须带 `--yes`。
|
|
161
|
+
- `+field-extension-update-cells` 是高风险写命令,权限 `base:record:update`,会触发目标字段单元格异步写回,执行时必须带 `--yes`。
|
|
162
|
+
- 用户需要具备管理目标表或目标字段插件的权限才能触发更新任务;如果接口返回权限不足,先按 Base 权限或高级权限角色确认用户权限。
|
|
163
|
+
|
|
164
|
+
## 注意事项
|
|
165
|
+
|
|
166
|
+
- 目标字段必须是当前字段插件已支持的字段类型;当前已确认支持文本、单选、数字字段。不要把字段插件当成任意字段类型都可用的通用能力。
|
|
167
|
+
- 写入插件配置后,自动更新会强制开启;当前不提供关闭自动更新的参数。
|
|
168
|
+
- 读取接口中的 `field_ref.field` 通常返回字段名称;字段名称不可用时可能返回字段 ID。
|
|
169
|
+
- `+field-extension-update` 不返回 `input_schemas`。
|
|
170
|
+
- `+field-extension-update-cells --type column` 可能触发大量 AI 生成任务,单元格越多耗时通常越久;除非用户明确要求整列刷新,否则优先按 `--type row` 精确更新目标记录。
|
|
@@ -157,7 +157,7 @@ The `value` inside `{ "type": "constant", "value": ... }` varies by field type:
|
|
|
157
157
|
| `number` | Number | `100`, `0.8` |
|
|
158
158
|
| `datetime` / `created_at` / `updated_at` | String | `"ExactDate(2025-01-01)"`, `"ExactDate(2025-01-01 09:30)"`, `"Today"`, `"Yesterday"`, `"Tomorrow"` |
|
|
159
159
|
| `select` (`multiple=false/true`) | Option name array | `["Todo"]`, `["Todo", "Done"]` |
|
|
160
|
-
| `link` | Record reference array | `[{ "id": "
|
|
160
|
+
| `link` | Record reference array | `[{ "id": "recxxx" }]`, `[{ "id": "recxxx" }, { "id": "recyyy" }]` |
|
|
161
161
|
| `user` / `created_by` / `updated_by` | User reference array | `[{ "id": "ou_xxx" }]`, `[{ "id": "ou_xxx" }, { "id": "ou_yyy" }]` |
|
|
162
162
|
| `checkbox` | Boolean | `true`, `false` |
|
|
163
163
|
| `attachment` / `location` | Only `empty` / `non_empty` | value must be `null` or omitted |
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
| `lookup` | `type` `name` `from` `select` `where` | `aggregate` |
|
|
42
42
|
| `auto_number` | `type` `name` | `style.rules` |
|
|
43
43
|
| `attachment` / `location` / `checkbox` | `type` `name` | 无 |
|
|
44
|
+
| `button` | `type` `name` `button_config.title` | 无 |
|
|
44
45
|
|
|
45
46
|
所有类型都可额外传 `description`;上表的“常见补充字段”只列类型特有配置。
|
|
46
47
|
|
|
@@ -427,6 +428,14 @@ Location 读取为 `{lng,lat,full_address}`;写入只使用数字 `{lng,lat}`
|
|
|
427
428
|
{ "type": "checkbox", "name": "完成" }
|
|
428
429
|
```
|
|
429
430
|
|
|
431
|
+
### 3.13 button
|
|
432
|
+
|
|
433
|
+
```json
|
|
434
|
+
{ "type": "button", "name": "按钮", "button_config": { "title": "点击按钮" } }
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
绑定 Workflow 时,使用 `+button-rule-bind`;读取绑定关系时,使用 `+button-rule-get`;解除绑定用 `+button-rule-unbind`。
|
|
438
|
+
|
|
430
439
|
## 4. 创建与更新
|
|
431
440
|
|
|
432
441
|
- `+field-create`:按目标字段配置直接构造 `--json`。
|
|
@@ -434,7 +443,7 @@ Location 读取为 `{lng,lat,full_address}`;写入只使用数字 `{lng,lat}`
|
|
|
434
443
|
|
|
435
444
|
## 5. 暂不支持字段
|
|
436
445
|
|
|
437
|
-
Object(对象字段)、
|
|
446
|
+
Object(对象字段)、Stage(流程字段)暂时没有被 CLI 支持。这些字段会展示为 `not_support` 字段并被保护:不允许修改,不允许读取内容。
|
|
438
447
|
|
|
439
448
|
## 6. 易错点
|
|
440
449
|
|
|
@@ -40,7 +40,34 @@ Filter 是一组「字段/操作符/值」条件的组合,用 `logic`(`and`
|
|
|
40
40
|
}
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
## 2.
|
|
43
|
+
## 2. 单表谓词下推常用 example
|
|
44
|
+
|
|
45
|
+
`+record-list` / `+record-search` 的 `--filter-json '<filter-json>'` 也支持使用与视图相同的 tuple condition。以下示例用注释说明各条件的含义;实际传参时删除注释并使用标准 JSON:
|
|
46
|
+
|
|
47
|
+
```jsonc
|
|
48
|
+
{
|
|
49
|
+
"logic": "and", // 所有 conditions 同时成立;任意一个成立时使用 "or"
|
|
50
|
+
"conditions": [
|
|
51
|
+
["标题", "==", "Launch plan"], // 文本全等
|
|
52
|
+
["标题", "!=", "Archived plan"], // 文本不全等
|
|
53
|
+
["标题", "intersects", "urgent"], // 文本包含目标片段
|
|
54
|
+
["标题", "disjoint", "internal"], // 文本不包含目标片段
|
|
55
|
+
["金额", ">=", 100], // 数字比较;支持 ==、!=、>、>=、<、<=
|
|
56
|
+
["状态", "intersects", ["进行中", "暂停"]], // Select 集合相交:包含“进行中”或“暂停”任意一个选项
|
|
57
|
+
["状态", "disjoint", ["已终止"]], // Select 集合无交集
|
|
58
|
+
["已完成", "==", true], // Checkbox
|
|
59
|
+
["负责人", "intersects", [{ "id": "ou_xxx" }]], // 负责人包含某个人;intersects 表示包含数组中任意一个人员
|
|
60
|
+
["负责人", "disjoint", [{ "id": "ou_yyy" }]], // 负责人不包含指定人员中的任何一个
|
|
61
|
+
["关联项目", "intersects", [{ "id": "recxxx" }]], // 关联项目包含某个 record_id;intersects 表示包含数组中任意一条关联
|
|
62
|
+
["备注", "non_empty"], // 格子非空;判断格子为空改用 ["备注", "empty"]
|
|
63
|
+
["业务日期", "==", "ExactDate(2026-08-07)"], // 具体一天:按 Base 时区匹配 2026-08-07 当天
|
|
64
|
+
["发生时间", ">", "ExactDate(2024-01-31 23:59:59.999)"], // 日期不支持 >=;用 > 前一天最后一毫秒表达含当天的下界
|
|
65
|
+
["发生时间", "<", "ExactDate(2024-03-01 00:00:00)"] // 2024 年 2 月范围上界:小于 3 月 1 日零点
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## 3. operator
|
|
44
71
|
|
|
45
72
|
可用 operator:
|
|
46
73
|
- `==`
|
|
@@ -54,7 +81,7 @@ Filter 是一组「字段/操作符/值」条件的组合,用 `logic`(`and`
|
|
|
54
81
|
- `empty`
|
|
55
82
|
- `non_empty`
|
|
56
83
|
|
|
57
|
-
##
|
|
84
|
+
## 4. value 写法
|
|
58
85
|
|
|
59
86
|
value 类型取决于条件引用对象(字段 / 题目)的类型。
|
|
60
87
|
|
|
@@ -119,7 +146,7 @@ location 筛选只按 `full_address` 字符串匹配,不能直接按经纬度
|
|
|
119
146
|
用记录 id 对象数组:
|
|
120
147
|
|
|
121
148
|
```json
|
|
122
|
-
["关联任务", "intersects", [{ "id": "
|
|
149
|
+
["关联任务", "intersects", [{ "id": "recxxx" }]]
|
|
123
150
|
```
|
|
124
151
|
|
|
125
152
|
### `checkbox`
|
|
@@ -155,7 +182,7 @@ location 筛选只按 `full_address` 字符串匹配,不能直接按经纬度
|
|
|
155
182
|
|
|
156
183
|
value schema 随计算结果类型变化;拿不准时先读取字段定义,或根据错误提示修正 value 和 operator。
|
|
157
184
|
|
|
158
|
-
##
|
|
185
|
+
## 5. 易错点
|
|
159
186
|
|
|
160
187
|
- 不要再写旧对象风格:`{"field_name":...,"operator":...}`。
|
|
161
188
|
- `user` / `group_chat` / `link` 不要写成单个标量。
|
|
@@ -163,5 +190,5 @@ value schema 随计算结果类型变化;拿不准时先读取字段定义,
|
|
|
163
190
|
- 日期条件稳定写法用 `ExactDate(...)` 或 `Today` / `Yesterday` / `Tomorrow`。
|
|
164
191
|
- `formula` / `lookup` 的 value schema 是动态的;拿不准 value 类型时先读字段定义,或根据错误提示修正类型。
|
|
165
192
|
|
|
166
|
-
##
|
|
193
|
+
## 6. 参考
|
|
167
194
|
- [Lookup Field](lark-base-field-lookup.md)
|
|
@@ -21,7 +21,7 @@ lark-cli base +form-detail --share-token <share_token> --format pretty
|
|
|
21
21
|
| `base_token` | 表单所属 Base;提交附件时必须传给 `+form-submit --base-token` |
|
|
22
22
|
| `questions[].id` | 题目标识,通常对应字段 ID |
|
|
23
23
|
| `questions[].title` | 提交时使用的字段名/题目名,以真实返回为准 |
|
|
24
|
-
| `questions[].type` |
|
|
24
|
+
| `questions[].type` | 决定值格式;提交结构见 [form-submit](lark-base-form-submit.md) |
|
|
25
25
|
| `questions[].required` | 判断必填项 |
|
|
26
26
|
| `questions[].filter` | 判断题目是否对当前提交可见;被隐藏的问题不要填写 |
|
|
27
27
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
向多维表格表单/问卷中批量添加问题。可以新建字段并作为题目,也可以把已有字段加到表单中作为题目而不新建字段。
|
|
6
6
|
|
|
7
7
|
## 命令
|
|
8
8
|
|
|
@@ -54,6 +54,13 @@ lark-cli base +form-questions-create \
|
|
|
54
54
|
--table-id <table_id> \
|
|
55
55
|
--form-id <form_id> \
|
|
56
56
|
--questions '[{"type":"select","title":"是否需要发票","required":true,"options":[{"name":"是","hue":"Blue"},{"name":"否","hue":"Gray"}]},{"type":"text","title":"发票抬头","visible_rule":{"logic":"and","conditions":[["是否需要发票","==","是"]]}}]'
|
|
57
|
+
|
|
58
|
+
# 把已有字段作为题目加到表单中,不新建字段
|
|
59
|
+
lark-cli base +form-questions-create \
|
|
60
|
+
--base-token <base_token> \
|
|
61
|
+
--table-id <table_id> \
|
|
62
|
+
--form-id <form_id> \
|
|
63
|
+
--questions '[{"use_existing_field":true,"field_id":"fldEmail","title":"你的邮箱","description":"用于接收回执","required":true}]'
|
|
57
64
|
```
|
|
58
65
|
|
|
59
66
|
## 参数
|
|
@@ -70,7 +77,14 @@ lark-cli base +form-questions-create \
|
|
|
70
77
|
|
|
71
78
|
## `--questions` 格式
|
|
72
79
|
|
|
73
|
-
|
|
80
|
+
`--questions` 是 1~10 个问题对象的数组。每个对象二选一:
|
|
81
|
+
|
|
82
|
+
- 新建字段题目:创建一个新字段,并把该字段作为表单题目。
|
|
83
|
+
- 已有字段题目:把一个已存在字段加入表单,只改变该字段在表单中的可见性,不创建字段。
|
|
84
|
+
|
|
85
|
+
### 形态 A:新建字段题目
|
|
86
|
+
|
|
87
|
+
新建字段题目会在数据表中创建新字段,返回的 question `id` 就是新字段的 `field_id`。CLI 当前要求每个新建字段题目显式传 `title` 和 `type`。
|
|
74
88
|
|
|
75
89
|
| 字段 | 必填 | 说明 |
|
|
76
90
|
|-----------------------|------|------|
|
|
@@ -84,6 +98,22 @@ lark-cli base +form-questions-create \
|
|
|
84
98
|
| `style` | 否 | 字段样式配置(见下方说明) |
|
|
85
99
|
| `visible_rule` | 否 | 题目显隐条件(见下方「`visible_rule` 显隐条件」) |
|
|
86
100
|
|
|
101
|
+
### 形态 B:已有字段题目
|
|
102
|
+
|
|
103
|
+
已有字段题目只把一个已存在字段加入表单,不新建字段,也不改变已有记录数据。适合把之前用 `+form-questions-delete --keep-field` 移出表单的题目重新加回,或把表里已有字段补充为表单题目。
|
|
104
|
+
|
|
105
|
+
| 字段 | 必填 | 说明 |
|
|
106
|
+
|-----------------------|------|------|
|
|
107
|
+
| `use_existing_field` | **是** | 固定传 `true`,表示使用已有字段 |
|
|
108
|
+
| `field_id` | **是** | 已有字段的 ID 或字段名;推荐字段 ID,避免同名字段歧义。引用长度 1~100,较长字段名请改用字段 ID |
|
|
109
|
+
| `title` | 否 | 题目标题;省略时使用字段名 |
|
|
110
|
+
| `description` | 否 | 问题描述(纯文本或 Markdown 链接,如 `[文本](https://example.com)`) |
|
|
111
|
+
| `required` | 否 | 是否必填(true/false),默认 false |
|
|
112
|
+
| `option_display_mode` | 否 | 选项展示方式(仅已有字段为 `select` 时有效):`0`=下拉,`1`=纵向(默认),`2`=横向 |
|
|
113
|
+
| `visible_rule` | 否 | 题目显隐条件(见下方「`visible_rule` 显隐条件」) |
|
|
114
|
+
|
|
115
|
+
已有字段题目不要携带字段定义属性,例如 `type`、`style`、`options`、`multiple`、`name`。服务端使用 strict schema,误传不属于该形态的字段会被拒绝。
|
|
116
|
+
|
|
87
117
|
### `style` 字段说明
|
|
88
118
|
|
|
89
119
|
| 类型 | style 结构 | 说明 |
|
|
@@ -139,10 +169,11 @@ lark-cli base +form-questions-create \
|
|
|
139
169
|
|
|
140
170
|
1. 先确定表单所属的真实 `table_id`,并在整个表单管理工作流中复用它;仅在 ID 缺失或归属不明确时调用 `+table-list`。
|
|
141
171
|
2. 用 `+form-questions-list` 查看现有问题。问题 `id` 是承载该问题的 `field_id`,不是独立于数据表的临时 ID。
|
|
142
|
-
3.
|
|
143
|
-
4.
|
|
172
|
+
3. 需要把表里已有字段加进表单时,先用 `+field-list` 确认真实字段 ID 和字段类型,再用 `use_existing_field:true` + `field_id`;字段已经是可见题目时不要重复创建,改用 `+form-questions-update`。
|
|
173
|
+
4. 除非用户明确要求同名的独立问题,否则目标标题已经存在时用 `+form-questions-update` 更新必填状态、标题或描述;不要创建同名问题后再删除旧问题。
|
|
174
|
+
5. 创建确实不存在的问题,或用户明确要求的同名独立问题,并报告新建的问题 ID。
|
|
144
175
|
|
|
145
|
-
`+form-questions-delete`
|
|
176
|
+
`+form-questions-delete` 默认会删除承载问题的数据表字段及记录数据;如果只是想把题目移出表单并保留字段,必须用 `+form-questions-delete --keep-field`。移出后可用本文的已有字段题目形态加回。
|
|
146
177
|
|
|
147
178
|
## 参考
|
|
148
179
|
|
|
@@ -86,7 +86,7 @@ lark-cli base +form-submit \
|
|
|
86
86
|
|
|
87
87
|
#### fields(普通字段)
|
|
88
88
|
|
|
89
|
-
`fields`
|
|
89
|
+
`fields` 中的常见单元格值按下方示例构造(与主 skill 一致):
|
|
90
90
|
|
|
91
91
|
```json
|
|
92
92
|
{
|
|
@@ -126,7 +126,7 @@ CLI 收到路径后会自动完成以下流程:
|
|
|
126
126
|
2. 并行上传到 Base Drive Media(并发上限 5,跨字段重复路径自动去重)
|
|
127
127
|
3. 获取 `file_token` 后合并到最终表单提交内容中
|
|
128
128
|
|
|
129
|
-
>
|
|
129
|
+
> Record 写入时附件走独立的 `+record-upload-attachment` 命令;`+form-submit` 则在 `attachments` 中传本地路径,由 CLI 自动上传。
|
|
130
130
|
|
|
131
131
|
### 从分享链接提取 share-token
|
|
132
132
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
用 `+record-list` 展示候选时,可重复传入 `--field-id` 做最小投影。字段名包含空格时,需要给完整值加引号,例如 `--field-id "Project Owner"`。
|
|
12
12
|
|
|
13
|
-
用户明确指定某个视图的第 N 行时,先用同一 `view_id` 调用 `+record-list`,并将 `--offset` 设为 N-1、`--limit` 设为 1
|
|
13
|
+
用户明确指定某个视图的第 N 行时,先用同一 `view_id` 调用 `+record-list`,并将 `--offset` 设为 N-1、`--limit` 设为 1,再从唯一结果中取得 `record_id`。视图或排序上下文不明确时仍需先确认。
|
|
14
14
|
|
|
15
15
|
## 推荐命令
|
|
16
16
|
|