@amaster.ai/pi-lark 0.1.6 → 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.
- package/README.md +5 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/skills/lark-apps/SKILL.md +24 -12
- package/skills/lark-apps/creative-design/agents/assets/vision-probe.png +0 -0
- package/skills/lark-apps/creative-design/agents/fork-verifier-agent.md +71 -0
- package/skills/lark-apps/creative-design/agents/vision-probe-agent.md +41 -0
- package/skills/lark-apps/creative-design/assets/index.html +27 -0
- package/skills/lark-apps/creative-design/creative-design.md +239 -0
- package/skills/lark-apps/creative-design/references/aily.md +39 -0
- package/skills/lark-apps/creative-design/references/animated-video.md +34 -0
- package/skills/lark-apps/creative-design/references/charts.md +165 -0
- package/skills/lark-apps/creative-design/references/claude.md +36 -0
- package/skills/lark-apps/creative-design/references/codex.md +32 -0
- package/skills/lark-apps/creative-design/references/data-report.md +108 -0
- package/skills/lark-apps/creative-design/references/frontend-design.md +71 -0
- package/skills/lark-apps/creative-design/references/hi-fi-design.md +32 -0
- package/skills/lark-apps/creative-design/references/interactive-prototype.md +24 -0
- package/skills/lark-apps/creative-design/references/make-a-deck.md +133 -0
- package/skills/lark-apps/creative-design/references/visual-exposure.md +82 -0
- package/skills/lark-apps/creative-design/references/wireframe.md +14 -0
- package/skills/lark-apps/creative-design/starter-components/android-frame.jsx +188 -0
- package/skills/lark-apps/creative-design/starter-components/animations.jsx +773 -0
- package/skills/lark-apps/creative-design/starter-components/browser-window.jsx +122 -0
- package/skills/lark-apps/creative-design/starter-components/deck-stage.js +2483 -0
- package/skills/lark-apps/creative-design/starter-components/design-canvas.jsx +1432 -0
- package/skills/lark-apps/creative-design/starter-components/ios-frame.jsx +270 -0
- package/skills/lark-apps/creative-design/starter-components/macos-window.jsx +197 -0
- package/skills/lark-apps/creative-design/starter-components/tweaks-panel.jsx +752 -0
- package/skills/lark-apps/references/lark-apps-automation.md +80 -2
- package/skills/lark-apps/references/lark-apps-cache.md +61 -0
- package/skills/lark-apps/references/lark-apps-cloud-dev.md +0 -1
- package/skills/lark-apps/references/lark-apps-create.md +1 -2
- package/skills/lark-apps/references/lark-apps-db.md +1 -1
- package/skills/lark-apps/references/lark-apps-env-pull.md +1 -1
- package/skills/lark-apps/references/lark-apps-file.md +2 -2
- package/skills/lark-apps/references/lark-apps-git-credential.md +1 -1
- package/skills/lark-apps/references/lark-apps-html-publish.md +4 -8
- package/skills/lark-apps/references/lark-apps-init.md +1 -1
- package/skills/lark-apps/references/lark-apps-list.md +1 -1
- package/skills/lark-apps/references/lark-apps-local-dev.md +54 -11
- package/skills/lark-apps/references/lark-apps-openapi-key.md +1 -1
- package/skills/lark-apps/references/lark-apps-release-create.md +2 -2
- package/skills/lark-apps/references/lark-apps-release-get.md +3 -3
- package/skills/lark-base/SKILL.md +20 -13
- package/skills/lark-base/references/lark-base-cell-value.md +3 -3
- package/skills/lark-base/references/lark-base-data-query.md +11 -4
- package/skills/lark-base/references/lark-base-field-create.md +4 -0
- package/skills/lark-base/references/lark-base-field-json.md +4 -4
- package/skills/lark-base/references/lark-base-field-update.md +17 -1
- package/skills/lark-base/references/lark-base-filter-condition.md +179 -0
- package/skills/lark-base/references/lark-base-form-questions-create.md +40 -7
- package/skills/lark-base/references/lark-base-form-questions-update.md +73 -20
- package/skills/lark-base/references/lark-base-form-submit.md +16 -7
- package/skills/lark-base/references/lark-base-record-batch-create.md +12 -10
- package/skills/lark-base/references/lark-base-record-batch-update.md +11 -9
- package/skills/lark-base/references/lark-base-record-upsert.md +1 -1
- package/skills/lark-base/references/lark-base-role-guide.md +11 -0
- package/skills/lark-base/references/lark-base-view-set-filter.md +11 -137
- package/skills/lark-base/references/role-config.md +31 -5
- package/skills/lark-calendar/SKILL.md +14 -8
- package/skills/lark-calendar/references/lark-calendar-create.md +6 -5
- package/skills/lark-calendar/references/lark-calendar-recurring.md +1 -0
- package/skills/lark-calendar/references/lark-calendar-room-find.md +2 -1
- package/skills/lark-calendar/references/lark-calendar-schedule-clear-time.md +1 -0
- package/skills/lark-calendar/references/lark-calendar-suggestion.md +1 -1
- package/skills/lark-calendar/references/lark-calendar-update.md +10 -4
- package/skills/lark-contact/SKILL.md +19 -3
- package/skills/lark-contact/references/lark-contact-search-bot.md +60 -0
- package/skills/lark-doc/references/lark-doc-fetch.md +10 -2
- package/skills/lark-doc/references/lark-doc-whiteboard.md +9 -8
- package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +41 -0
- package/skills/lark-doc/references/lark-doc-xml.md +4 -3
- package/skills/lark-drive/SKILL.md +25 -45
- package/skills/lark-drive/references/lark-drive-add-comment.md +2 -4
- package/skills/lark-drive/references/lark-drive-add-reply.md +47 -0
- package/skills/lark-drive/references/lark-drive-apply-permission.md +2 -2
- package/skills/lark-drive/references/lark-drive-batch-query-comments.md +46 -0
- package/skills/lark-drive/references/lark-drive-comment-content.md +50 -0
- package/skills/lark-drive/references/lark-drive-comment-location.md +9 -15
- package/skills/lark-drive/references/lark-drive-delete-reply.md +48 -0
- package/skills/lark-drive/references/lark-drive-download.md +5 -1
- package/skills/lark-drive/references/lark-drive-list-comments.md +25 -68
- package/skills/lark-drive/references/lark-drive-list-replies.md +54 -0
- package/skills/lark-drive/references/lark-drive-member-add.md +2 -2
- package/skills/lark-drive/references/lark-drive-member-list.md +65 -0
- package/skills/lark-drive/references/lark-drive-permission-get-setting.md +48 -0
- package/skills/lark-drive/references/lark-drive-preview.md +11 -1
- package/skills/lark-drive/references/lark-drive-react-reply.md +51 -0
- package/skills/lark-drive/references/lark-drive-reactions.md +27 -25
- package/skills/lark-drive/references/lark-drive-resolve-comment.md +45 -0
- package/skills/lark-drive/references/lark-drive-restore-comment.md +46 -0
- package/skills/lark-drive/references/lark-drive-search.md +7 -1
- package/skills/lark-drive/references/lark-drive-secure-label.md +1 -1
- package/skills/lark-drive/references/lark-drive-update-reply.md +46 -0
- package/skills/lark-drive/references/lark-drive-upload.md +1 -0
- package/skills/lark-drive/references/lark-drive-workflow-permission-governance-commands.md +38 -8
- package/skills/lark-drive/references/lark-drive-workflow-permission-governance-outputs.md +10 -10
- package/skills/lark-drive/references/lark-drive-workflow-permission-governance.md +22 -20
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-execute.md +273 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-recall.md +202 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-resolve-verify.md +231 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-review-plan.md +248 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-setup.md +174 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector.md +202 -0
- package/skills/lark-drive/references/lark-drive-workflow.md +5 -4
- package/skills/lark-event/SKILL.md +1 -0
- package/skills/lark-event/references/lark-event-application.md +38 -0
- package/skills/lark-im/SKILL.md +1 -1
- package/skills/lark-im/references/card/card-2.0-schema.md +1 -1
- package/skills/lark-im/references/card/lark-im-card-style.md +4 -4
- package/skills/lark-im/references/card/resource/icons.md +14 -0
- package/skills/lark-im/references/lark-im-flag-list.md +8 -7
- package/skills/lark-okr/SKILL.md +71 -26
- package/skills/lark-okr/references/lark-okr-batch-create.md +19 -18
- package/skills/lark-okr/references/lark-okr-create.md +173 -0
- package/skills/lark-okr/references/lark-okr-cycle-list.md +17 -7
- package/skills/lark-okr/references/lark-okr-entities.md +1 -0
- package/skills/lark-okr/references/lark-okr-indicator-update.md +3 -1
- package/skills/lark-okr/references/lark-okr-indicators.md +61 -12
- package/skills/lark-okr/references/lark-okr-progress-list.md +21 -9
- package/skills/lark-slides/SKILL.md +115 -68
- package/skills/lark-slides/references/asset-planning.md +6 -4
- package/skills/lark-slides/references/iconpark.md +2 -2
- package/skills/lark-slides/references/lark-slides-create.md +16 -8
- package/skills/lark-slides/references/lark-slides-history.md +132 -0
- package/skills/lark-slides/references/lark-slides-media-upload.md +2 -3
- package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +7 -11
- package/skills/lark-slides/references/lark-slides-replace-slide.md +0 -3
- package/skills/lark-slides/references/lark-slides-screenshot.md +4 -4
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +219 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +6 -5
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +2 -2
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +2 -3
- package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +65 -30
- package/skills/lark-slides/references/planning-layer.md +11 -10
- package/skills/lark-slides/references/slides_chart_demo.xml +1416 -1
- package/skills/lark-slides/references/slides_xml_schema_definition.xml +492 -76
- package/skills/lark-slides/references/troubleshooting.md +25 -7
- package/skills/lark-slides/references/validation-checklist.md +53 -16
- package/skills/lark-slides/references/visual-planning.md +25 -22
- package/skills/lark-slides/references/xml-schema-quick-ref.md +281 -45
- package/skills/lark-slides/scripts/sxsd_validator.py +908 -0
- package/skills/lark-slides/scripts/xml_text_overlap_lint.py +1650 -165
- package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +3139 -513
- package/skills/lark-task/SKILL.md +7 -0
- package/skills/lark-task/references/lark-task-complete.md +6 -2
- package/skills/lark-task/references/lark-task-create.md +9 -0
- package/skills/lark-task/references/lark-task-update.md +6 -2
- package/skills/lark-whiteboard/SKILL.md +13 -12
- package/skills/lark-whiteboard/elements/layout.md +1 -1
- package/skills/lark-whiteboard/elements/schema.md +2 -2
- package/skills/lark-whiteboard/references/{lark-whiteboard-query.md → lark-whiteboard-export.md} +15 -15
- package/skills/lark-whiteboard/references/lark-whiteboard-update.md +3 -3
- package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +7 -17
- package/skills/lark-whiteboard/routes/dsl.md +3 -3
- package/skills/lark-whiteboard/routes/mermaid.md +2 -2
- package/skills/lark-whiteboard/routes/svg-edit.md +4 -4
- package/skills/lark-whiteboard/routes/svg.md +11 -6
- package/skills/lark-whiteboard/scenes/bar-chart.md +1 -1
- package/skills/lark-whiteboard/scenes/fishbone.md +1 -1
- package/skills/lark-whiteboard/scenes/flywheel.md +1 -1
- package/skills/lark-whiteboard/scenes/line-chart.md +1 -1
- package/skills/lark-whiteboard/scenes/treemap.md +1 -1
- package/skills/lark-wiki/SKILL.md +1 -0
- package/skills/lark-drive/references/lark-drive-comments-guide.md +0 -80
- package/skills/lark-slides/references/examples.md +0 -91
- package/skills/lark-slides/references/lark-slides-whiteboard.md +0 -331
- package/skills/lark-slides/references/lark-slides-xml-get.md +0 -100
- package/skills/lark-slides/references/slide-templates.md +0 -201
- package/skills/lark-slides/references/slides_demo.xml +0 -226
- package/skills/lark-slides/references/xml-format-guide.md +0 -433
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
## 适用场景(重点)
|
|
8
8
|
|
|
9
9
|
- 适合导入 CSV / Excel、外部系统一次性写入新数据。
|
|
10
|
-
-
|
|
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 '{"
|
|
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
|
-
|
|
37
|
+
对象形态:
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{"create_records":[{"标题":"任务 A","状态":"Open"},{"标题":"任务 B","状态":"Done"}]}
|
|
41
|
+
```
|
|
38
42
|
|
|
39
43
|
| 字段 | 类型 | 必填 | 说明 |
|
|
40
44
|
|------|------|------|------|
|
|
41
|
-
| `
|
|
42
|
-
| `rows` | `CellValue[][]` | 是 | 二维数组,每一行按 `fields` 同序给 cell;单次最多 200 行 |
|
|
45
|
+
| `create_records` | `Array<Map<FieldNameOrID, CellValue>>` | 是 | 记录字段对象数组;每条记录可以提交不同字段,单次最多 200 条 |
|
|
43
46
|
|
|
44
47
|
## 返回重点
|
|
45
48
|
|
|
46
|
-
返回 `
|
|
49
|
+
返回 `record_id_list` 和可选的 `ignored_fields`。
|
|
47
50
|
|
|
48
51
|
## 坑点
|
|
49
52
|
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
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
|
-
|
|
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 '{"
|
|
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
|
-
|
|
32
|
+
对象形态:
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{"update_records":{"recA":{"状态":["完成"]},"recB":{"分数":20}}}
|
|
36
|
+
```
|
|
33
37
|
|
|
34
38
|
| 字段 | 类型 | 必填 | 说明 |
|
|
35
39
|
|------|------|------|------|
|
|
36
|
-
| `
|
|
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
|
-
|
|
44
|
+
成功响应只包含可选的 `ignored_fields`;没有忽略字段时 `data` 为空对象。请求不会预先校验 record ID 是否存在,因此需要确认实际写入结果时,应再用 `+record-get` 读回目标记录。
|
|
42
45
|
|
|
43
46
|
## 坑点
|
|
44
47
|
|
|
45
|
-
-
|
|
46
|
-
- `record_id_list` 最大 200 条,超过会被接口校验拒绝。
|
|
48
|
+
- 单次最多更新 200 条记录,超过会被接口校验拒绝。
|
|
47
49
|
- 命令不会自动做字段/行映射转换,传什么就发什么。
|
|
48
|
-
-
|
|
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
|
|
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.
|
|
@@ -4,142 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
更新视图筛选配置。
|
|
6
6
|
|
|
7
|
-
## 1.
|
|
8
|
-
|
|
9
|
-
- `--json` 必须是 JSON 对象。
|
|
10
|
-
- 顶层结构是 `{logic?, conditions?}`。
|
|
11
|
-
- `logic` 默认 `and`;推荐只用 canonical 值 `and` / `or`。
|
|
12
|
-
- `conditions` 默认空数组。
|
|
13
|
-
- 每条条件写成 tuple:`[field, operator, value?]`。
|
|
14
|
-
- `empty` / `non_empty` 可写成 2 项:`[field, "empty"]`、`[field, "non_empty"]`。
|
|
15
|
-
- 支持 `filter` 的视图类型:`grid`、`kanban`、`gallery`、`calendar`、`gantt`。
|
|
16
|
-
|
|
17
|
-
## 2. operator
|
|
18
|
-
|
|
19
|
-
可用 operator:
|
|
20
|
-
- `==`
|
|
21
|
-
- `!=`
|
|
22
|
-
- `>`
|
|
23
|
-
- `>=`
|
|
24
|
-
- `<`
|
|
25
|
-
- `<=`
|
|
26
|
-
- `intersects`
|
|
27
|
-
- `disjoint`
|
|
28
|
-
- `empty`
|
|
29
|
-
- `non_empty`
|
|
30
|
-
|
|
31
|
-
## 3. value 写法
|
|
32
|
-
|
|
33
|
-
### `text`
|
|
34
|
-
|
|
35
|
-
用字符串:
|
|
36
|
-
|
|
37
|
-
```json
|
|
38
|
-
["标题", "intersects", "发布"]
|
|
39
|
-
```
|
|
7
|
+
## 1. filter 结构
|
|
40
8
|
|
|
41
|
-
|
|
9
|
+
`--json` 就是一个 filter 条件对象,结构见公共协议 SSOT [lark-base-filter-condition.md](lark-base-filter-condition.md),即 `{logic?, conditions?}`。此处 `conditions` 中的 `field` 引用**数据表字段名或字段 id**。
|
|
42
10
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
```json
|
|
46
|
-
["位置", "intersects", "深圳"]
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
不推荐写 `["位置", "==", "深圳"]` 这类精确匹配,除非确保筛选值与完整 `full_address` 完全一致。
|
|
50
|
-
|
|
51
|
-
### `number` / `auto_number`
|
|
52
|
-
|
|
53
|
-
用数字:
|
|
54
|
-
|
|
55
|
-
```json
|
|
56
|
-
["工时", ">=", 3.5]
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### `select`
|
|
60
|
-
|
|
61
|
-
用选项名数组:
|
|
62
|
-
|
|
63
|
-
```json
|
|
64
|
-
["状态", "intersects", ["Doing", "Blocked"]]
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### `user` / `created_by` / `updated_by`
|
|
68
|
-
|
|
69
|
-
用对象数组:
|
|
70
|
-
|
|
71
|
-
> **人员筛选:不要猜 ID。** 不知道 `open_id` 时,先用 `lark-contact` 查 id:`lark-cli contact +search-user --query "<姓名/邮箱/手机号>" --as user`。
|
|
72
|
-
|
|
73
|
-
```json
|
|
74
|
-
["负责人", "intersects", [{ "id": "ou_xxx" }]]
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### `group_chat`
|
|
78
|
-
|
|
79
|
-
用对象数组:
|
|
80
|
-
|
|
81
|
-
> **群组筛选:不要猜 ID。** 不知道 `chat_id` 时,先用 `lark-im` 搜群:`lark-cli im +chat-search --query "<群名关键词>" --as user`;取结果里的 `oc_xxx`。
|
|
82
|
-
|
|
83
|
-
```json
|
|
84
|
-
["负责群", "intersects", [{ "id": "oc_xxx" }]]
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
### `link`
|
|
88
|
-
|
|
89
|
-
用记录 id 对象数组:
|
|
90
|
-
|
|
91
|
-
```json
|
|
92
|
-
["关联任务", "intersects", [{ "id": "rec_xxx" }]]
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### `checkbox`
|
|
96
|
-
|
|
97
|
-
用布尔值:
|
|
98
|
-
|
|
99
|
-
```json
|
|
100
|
-
["完成", "==", true]
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### `datetime` / `created_at` / `updated_at`
|
|
104
|
-
|
|
105
|
-
用相对时间关键字或 `ExactDate(...)`:
|
|
106
|
-
|
|
107
|
-
```json
|
|
108
|
-
["截止时间", "==", "ExactDate(2026-01-01)"]
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
```json
|
|
112
|
-
["截止时间", "==", "ExactDate(2026-01-01 11:30)"]
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
```json
|
|
116
|
-
["截止时间", "==", "Today"]
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
可用关键字:
|
|
120
|
-
- `Today`
|
|
121
|
-
- `Yesterday`
|
|
122
|
-
- `Tomorrow`
|
|
123
|
-
|
|
124
|
-
### `formula` / `lookup`
|
|
125
|
-
|
|
126
|
-
- 筛选值类型由字段计算结果类型动态决定。
|
|
127
|
-
- 拿不准时,先把 `value` 当作单个字符串填入做一次尝试。
|
|
128
|
-
- 如果报错,再按错误提示把 `value` 改成对应类型。
|
|
129
|
-
|
|
130
|
-
字符串示例:
|
|
131
|
-
|
|
132
|
-
```json
|
|
133
|
-
["风险说明", "intersects", "高风险"]
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
数字示例:
|
|
137
|
-
|
|
138
|
-
```json
|
|
139
|
-
["汇总分", ">=", 80]
|
|
140
|
-
```
|
|
11
|
+
- 支持 `filter` 的视图类型:`grid`、`kanban`、`gallery`、`calendar`、`gantt`。
|
|
141
12
|
|
|
142
|
-
##
|
|
13
|
+
## 2. 推荐命令
|
|
143
14
|
|
|
144
15
|
```bash
|
|
145
16
|
lark-cli base +view-set-filter \
|
|
@@ -149,7 +20,7 @@ lark-cli base +view-set-filter \
|
|
|
149
20
|
--json '{"logic":"and","conditions":[["状态","intersects",["Doing"]],["负责人","intersects",[{"id":"ou_xxx"}]],["截止时间","empty"]]}'
|
|
150
21
|
```
|
|
151
22
|
|
|
152
|
-
##
|
|
23
|
+
## 3. JSON 写法
|
|
153
24
|
|
|
154
25
|
```json
|
|
155
26
|
{
|
|
@@ -170,14 +41,16 @@ lark-cli base +view-set-filter \
|
|
|
170
41
|
}
|
|
171
42
|
```
|
|
172
43
|
|
|
173
|
-
|
|
44
|
+
完整的 operator 列表与各字段类型的 value 写法(`text` / `number` / `select` / `user` / `datetime` / `formula` / `lookup` 等),见 [lark-base-filter-condition.md](lark-base-filter-condition.md)。
|
|
45
|
+
|
|
46
|
+
## 4. 使用建议
|
|
174
47
|
|
|
175
48
|
- 先读取当前筛选配置,理解现有 `logic` 和 `conditions` 的组合关系;只替换用户要求变更的条件,未提到的条件默认保留。
|
|
176
49
|
- 优先传字段 id,不要依赖字段名。
|
|
177
50
|
- 拿不准字段 type 或真实取值时,先用 `+field-list` / `+record-list` 确认,再按对应字段类型的 value 写法构造条件;别按字段名猜 type、凭印象猜枚举取值。
|
|
178
51
|
- 需要清空全部筛选时,直接传 `{"conditions":[]}`。
|
|
179
52
|
|
|
180
|
-
##
|
|
53
|
+
## 5. 易错点
|
|
181
54
|
|
|
182
55
|
- 本 tuple DSL 由 `+view-set-filter` 与 `+record-list` / `+record-search` 的 `--filter-json` 共用;不要写成 `+data-query` 的对象风格 `{"field_name":...,"operator":...}`(会报校验失败)。
|
|
183
56
|
- 标量类字段(`text` / `number` / `datetime` 等)的 value 用标量、别包成数组(各类型详见 value 写法一节)。
|
|
@@ -186,6 +59,7 @@ lark-cli base +view-set-filter \
|
|
|
186
59
|
- 日期条件稳定写法用 `ExactDate(...)` 或 `Today` / `Yesterday` / `Tomorrow`。
|
|
187
60
|
- `formula` / `lookup` 的 value 形状不固定;拿不准时先读当前 filter 或字段定义,或根据错误提示修正类型。
|
|
188
61
|
|
|
189
|
-
##
|
|
62
|
+
## 6. 参考
|
|
190
63
|
|
|
64
|
+
- [lark-base-filter-condition.md](lark-base-filter-condition.md):filter/visible_rule 条件结构公共协议 SSOT
|
|
191
65
|
- [lookup-field-guide.md](lookup-field-guide.md)
|
|
@@ -154,12 +154,34 @@
|
|
|
154
154
|
"table_rule_map": {
|
|
155
155
|
"订单表": {
|
|
156
156
|
"perm": "edit",
|
|
157
|
-
"view_rule": {
|
|
158
|
-
|
|
159
|
-
|
|
157
|
+
"view_rule": {
|
|
158
|
+
"allow_edit": true,
|
|
159
|
+
"visibility": { "all_visible": true }
|
|
160
|
+
},
|
|
161
|
+
"record_rule": {
|
|
162
|
+
"record_operations": ["add", "delete"],
|
|
163
|
+
"other_record_all_read": true
|
|
164
|
+
},
|
|
165
|
+
"field_rule": {
|
|
166
|
+
"field_perm_mode": "all_edit"
|
|
167
|
+
}
|
|
160
168
|
},
|
|
161
169
|
"用户表": {
|
|
162
|
-
"perm": "read_only"
|
|
170
|
+
"perm": "read_only",
|
|
171
|
+
"view_rule": {
|
|
172
|
+
"allow_edit": false,
|
|
173
|
+
"visibility": { "all_visible": true }
|
|
174
|
+
},
|
|
175
|
+
"record_rule": {
|
|
176
|
+
"record_operations": [],
|
|
177
|
+
"other_record_all_read": true
|
|
178
|
+
},
|
|
179
|
+
"field_rule": {
|
|
180
|
+
"field_perm_mode": "all_read"
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
"内部表": {
|
|
184
|
+
"perm": "no_perm"
|
|
163
185
|
}
|
|
164
186
|
}
|
|
165
187
|
}
|
|
@@ -172,7 +194,11 @@
|
|
|
172
194
|
| `record_rule` | RecordRule | 记录权限配置 |
|
|
173
195
|
| `field_rule` | FieldRule | 字段权限配置 |
|
|
174
196
|
|
|
175
|
-
|
|
197
|
+
**`+role-create` 硬约束**:
|
|
198
|
+
|
|
199
|
+
- 当 `perm` 为 `no_perm` 时,不要设置 `view_rule`、`record_rule`、`field_rule`。
|
|
200
|
+
- 当 `perm` 为其他值时,必须同时提供完整的 `view_rule`、`record_rule`、`field_rule`,缺少任意一项都会导致创建失败。
|
|
201
|
+
- `+role-update` 是 delta merge,只提交要修改的字段;不要为局部更新补造未变更配置。
|
|
176
202
|
|
|
177
203
|
---
|
|
178
204
|
|
|
@@ -16,14 +16,16 @@ metadata:
|
|
|
16
16
|
|
|
17
17
|
## 身份
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
按**日程归属**选身份:
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
lark-cli calendar +agenda --as bot
|
|
21
|
+
- 查看/管理登录用户本人的日程 → `--as user`(默认,绝大多数场景)。
|
|
22
|
+
- 查看/管理 bot 自己创建/拥有的日程 → `--as bot`
|
|
24
23
|
|
|
25
|
-
|
|
24
|
+
```bash
|
|
25
|
+
# 用户本人日程 → user
|
|
26
26
|
lark-cli calendar +agenda --as user
|
|
27
|
+
# bot 自建或参与的日程 → bot
|
|
28
|
+
lark-cli calendar +agenda --as bot
|
|
27
29
|
```
|
|
28
30
|
|
|
29
31
|
## Shortcuts
|
|
@@ -48,6 +50,8 @@ lark-cli calendar +agenda --as user
|
|
|
48
50
|
lark-cli calendar +get --calendar-id <calendar_id> --event-id <event_id>
|
|
49
51
|
```
|
|
50
52
|
|
|
53
|
+
日程描述统一使用 `description` 一个字段,按 **Markdown** 富文本处理。读取日程时 `description` 返回 Markdown 富文本(仅有纯文本描述时返回该纯文本);创建/更新日程时也通过 `--description` 传入 Markdown。
|
|
54
|
+
|
|
51
55
|
### `+search-event` — 按关键词、时间范围和参会人搜索日程
|
|
52
56
|
|
|
53
57
|
仅返回基础字段(`event_id`/`summary`/`start`/`end` 等),需要详情请走 `+get`。
|
|
@@ -92,12 +96,12 @@ lark-cli calendar +freebusy --start 2026-03-11 --end 2026-03-12 --user-id ou_xxx
|
|
|
92
96
|
|
|
93
97
|
## 前置条件路由
|
|
94
98
|
|
|
99
|
+
> **先判断是否重复性日程**:若操作对象是重复性日程,必须先读 [重复性日程操作规范](references/lark-calendar-recurring.md),并在用户未明确范围时先确认「仅此次/全部/此次及后续」(不要默认仅此次),再按下表进入具体操作流程。
|
|
100
|
+
|
|
95
101
|
| 场景 | 前置要求 |
|
|
96
102
|
|------|----------|
|
|
97
103
|
| 预约日程/会议、调整时间、查会议室 | 先读 [lark-calendar-schedule-meeting.md](references/lark-calendar-schedule-meeting.md) |
|
|
98
104
|
| 仅编辑字段(标题/描述)或增删参会人 | 先定位 `event_id`,再读 [lark-calendar-update.md](references/lark-calendar-update.md) |
|
|
99
|
-
| 编辑已有日程(涉及时间或会议室) | 先定位目标日程 `event_id`;若是重复性日程,必须定位到具体实例的 `event_id`(禁止使用原重复日程 ID) |
|
|
100
|
-
| 编辑/删除重复性日程 | 先读 [重复性日程操作规范](references/lark-calendar-recurring.md),按操作范围(仅此次/全部/此次及后续)执行 |
|
|
101
105
|
| 调用任何 Shortcut | 先读其对应 reference 文档 |
|
|
102
106
|
|
|
103
107
|
## 写操作反馈
|
|
@@ -186,6 +190,8 @@ lark-cli contact +search-user --query <query> --as user
|
|
|
186
190
|
lark-cli im +chat-search --query <query> --as user
|
|
187
191
|
```
|
|
188
192
|
|
|
193
|
+
> 搜索用户接口不支持 bot 身份,必须用 `--as user`;搜到的 `ou_` open_id 用于日程参与人操作(如添加日程参与人)。
|
|
194
|
+
|
|
189
195
|
## 不在本 skill 范围
|
|
190
196
|
|
|
191
197
|
- 查询过去的视频会议记录 → [lark-vc](../lark-vc/SKILL.md)
|
|
@@ -195,4 +201,4 @@ lark-cli im +chat-search --query <query> --as user
|
|
|
195
201
|
- 会议室物理设施管理 → 管理员后台
|
|
196
202
|
|
|
197
203
|
**注意(强制性):**
|
|
198
|
-
-
|
|
204
|
+
- 涉及日期(时间)字符串与时间戳的相互转换时,务必调用系统命令或脚本代码等外部工具进行处理,以确保转换的绝对准确;换算**禁止依赖容器默认时区**(常为 UTC,会导致 8 小时偏移),必须显式指定目标时区。违者将导致严重的逻辑错误!
|
|
@@ -30,15 +30,16 @@ lark-cli calendar +create --summary "..." --start "..." --end "..." \
|
|
|
30
30
|
| 参数 | 必填 | 说明 |
|
|
31
31
|
|------|------|------|
|
|
32
32
|
| `--summary <text>` | 否 | 日程标题。注意:标题中不应该出现时间、地点、人物信息 |
|
|
33
|
-
| `--start <time>` | 是 | 开始时间(ISO 8601
|
|
34
|
-
| `--end <time>` | 是 | 结束时间(ISO 8601
|
|
35
|
-
| `--description <
|
|
36
|
-
| `--attendee-ids <id_list>` | 否 | 参与人 ID 列表(逗号分隔)。支持用户(`ou_`)、群组(`oc_`)和会议室(`omm_`)。AI
|
|
33
|
+
| `--start <time>` | 是 | 开始时间(ISO 8601,**必须带时区偏移**,如 `2026-03-12T14:00+08:00`;不带偏移会按进程时区解析致偏移) |
|
|
34
|
+
| `--end <time>` | 是 | 结束时间(ISO 8601,**必须带时区偏移**) |
|
|
35
|
+
| `--description <markdown>` | 否 | 日程描述,统一使用此字段,格式为 **Markdown**。提供会议议程、活动内容、注意事项或链接等。支持加粗、斜体、下划线(`<u>...</u>`)、删除线、链接 `[文本](url)`、标题(`# ` 到 `### `,最多三级)、引用(`> `)、有序/无序列表、GFM 表格(`\| 列1 \| 列2 \|` + 分隔行 `\| --- \| --- \|`)、以及图片 ``(标准 Markdown 图片语法:远程 URL 原样使用;**本地图片路径**(相对路径、且位于当前工作目录内)会自动上传到云盘并在端上内联渲染——绝对路径或工作目录之外的路径会报错;端上已有图片读回为 Markdown 图片)。飞书文档 URL(直接粘贴裸链接,或写成 `[文本](url)`)会自动解析为内联文档,端上展示文档标题而非裸链接。支持 `@文件路径` 或 `-`(stdin)读取。**禁止**用 `***文本***` 同时表示加粗+斜体(端上会残留 `*`);应嵌套书写,如 `**<u>*~~文本~~*</u>**` 或 `*<u>**~~文本~~**</u>*`。|
|
|
36
|
+
| `--attendee-ids <id_list>` | 否 | 参与人 ID 列表(逗号分隔)。支持用户(`ou_`)、群组(`oc_`)和会议室(`omm_`)。AI 提取时请务必保留对应前缀。bot 可作为合法参会人,无需剔除 |
|
|
37
37
|
| `--calendar-id <id>` | 否 | 日历 ID(省略则使用主日历) |
|
|
38
38
|
| `--rrule <rrule>` | 否 | 重复日程的重复性规则,规则设置方式参考rfc5545。示例值:"FREQ=DAILY;INTERVAL=1;UNTIL=<具体日期>" |
|
|
39
39
|
| `--dry-run` | 否 | 预览 API 调用,不执行 |
|
|
40
40
|
|
|
41
41
|
> 当用户表达'每周 X'、'每周重复'、'连续 N 周'时,必须使用 rrule 创建重复性日程,而非创建多个独立日程
|
|
42
|
+
> `--description` 行内同时加粗和斜体时,**禁止**写 `***文本***`(端上会残留 `*`);必须让 `**` 与 `*` 各自成对嵌套,例如 `**<u>*~~文本~~*</u>**` 或 `*<u>**~~文本~~**</u>*`。
|
|
42
43
|
> 自动设置 `attendee_ability: "can_modify_event"`,参会人可查看彼此并编辑日程。
|
|
43
44
|
> 自动设置 `free_busy_status: "busy"`,默认日程忙闲状态为忙碌。
|
|
44
45
|
> 自动设置 `reminders: [{"minutes": 5}]`,默认日程开始前 5 分钟提醒。
|
|
@@ -60,7 +61,7 @@ lark-cli calendar event.attendees create \
|
|
|
60
61
|
--data '{"attendees": [{"type": "resource", "room_id": "omm_xxx", "approval_reason": "申请原因"}]}'
|
|
61
62
|
|
|
62
63
|
完整 API 命令的关键差异:
|
|
63
|
-
- 时间参数是 **Unix 秒字符串**(非 ISO 8601
|
|
64
|
+
- 时间参数是 **Unix 秒字符串**(非 ISO 8601)。换算时**禁止依赖容器默认时区**(常为 UTC,会导致 8 小时偏移),必须显式指定目标时区。
|
|
64
65
|
- 全天日程的开始日期和结束日期必须分别是日程开始的第一天和结束的最后一天;单日全天日程两者相同。
|
|
65
66
|
- 手动拆成“创建日程 + 添加参会人”两步时,若第二步失败,建议删除刚创建的空日程,避免遗留无参会人的日程。
|
|
66
67
|
- 设置会议 owner:`+create` 不支持,需用完整 API 命令在 `vchat.meeting_settings.owner_id` 中设置,且必须同时设置 `vchat.vc_type` 为 `vc`(代表该日程为 VC 视频会议)。仅当以应用(bot)身份在应用日历上操作时生效;owner 必须为用户身份(`ou_` open_id),不能为非用户或外部租户用户。
|
|
@@ -50,12 +50,13 @@ lark-cli calendar +room-find \
|
|
|
50
50
|
| `--room-name <text>` | 否 | 会议室名称约束,支持以**英文逗号**分隔传入多个名称。仅当用户明确提到会议室专名、会议室号或编号区间时使用。 |
|
|
51
51
|
| `--min-capacity <n>` | 否 | 会议室最小容纳人数。当用户明确参会人数或提出“至少容纳N人”等要求时,提取数字放入此参数,必须为正整数。 |
|
|
52
52
|
| `--max-capacity <n>` | 否 | 会议室最大容纳人数。用于过滤过大空间,必须为正整数。 |
|
|
53
|
-
| `--attendee-ids <id_list>` | 否 | 参会对象 ID 列表。支持用户 ID(`ou_` 前缀)和群组 ID(`oc_` 前缀),多个 ID
|
|
53
|
+
| `--attendee-ids <id_list>` | 否 | 参会对象 ID 列表。支持用户 ID(`ou_` 前缀)和群组 ID(`oc_` 前缀),多个 ID 以逗号分隔。**不要传入 bot 的 open_id**:bot 是虚拟身份,不占会议室席位、无会议室偏好,传入只会干扰推荐结果。 |
|
|
54
54
|
| `--event-rrule <rrule>` | 否 | 重复日程的重复性规则,规则设置方式参考rfc5545。**【⚠️注意:系统绝对不支持 COUNT,如需限制重复次数,必须转为 UNTIL】**。示例值:"FREQ=DAILY;INTERVAL=1" |
|
|
55
55
|
| `--timezone <tz>` | 否 | 对话中明确提及的预约日程所使用的时区(默认取用户设备时区,例如 `Asia/Shanghai`) |
|
|
56
56
|
|
|
57
57
|
## 规则
|
|
58
58
|
|
|
59
|
+
- 构造 `--attendee-ids` 前,先剔除 bot 参会人:bot 不占席位、无偏好,不应参与会议室推荐。
|
|
59
60
|
- 多个 `--slot` 会由 CLI 内部并发调用单时间块接口,再聚合成一次输出
|
|
60
61
|
- `+room-find` 的时间输入必须是**确定时间块**,不是时间区间搜索。
|
|
61
62
|
- 如果是重复性日程,必须校验返回中的 `reserve_until_time`(该会议室最晚可预约时间)是否覆盖 `event-rrule` 对应的重复范围。
|
|
@@ -39,6 +39,7 @@ lark-cli calendar +freebusy --start "<start>" --end "<end>"
|
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
规则:
|
|
42
|
+
- 参与人含 **bot**:无需为 bot 查询忙闲。bot 是虚拟身份,可并行多个会议、无忙闲语义,检查它没有意义。
|
|
42
43
|
- 参与人过多(超过 5 人):仅查询**当前用户**及少数核心人员忙闲即可
|
|
43
44
|
- 参与人含**群组**:无需展开群组成员查询忙闲
|
|
44
45
|
- 如果用户是从 `+suggestion` 确认了时间块后进入本分支的,**无需再调用 `+freebusy`**
|
|
@@ -45,7 +45,7 @@ lark-cli calendar +suggestion \
|
|
|
45
45
|
| ------------------------------- | ----- | ------------------------------------------------------------------- |
|
|
46
46
|
| `--start <time>` | 否 | 搜索区间开始时间(支持日期/ISO 8601等格式,默认**当前时间**) |
|
|
47
47
|
| `--end <time>` | 否 | 搜索区间结束时间(默认与 `--start` 属于同一天,自动取当天结束时间) |
|
|
48
|
-
| `--attendee-ids <id_list>` | 否 | 目标参与人 ID 列表。提取对应实体的 ID。支持用户(`ou_` 前缀)和群组(`oc_` 前缀)。多个 ID
|
|
48
|
+
| `--attendee-ids <id_list>` | 否 | 目标参与人 ID 列表。提取对应实体的 ID。支持用户(`ou_` 前缀)和群组(`oc_` 前缀)。多个 ID 使用英文逗号分隔。**不要传入 bot 的 open_id**:bot 是虚拟身份,可并行多个会议、无忙闲语义,传入会干扰推荐时段的忙闲计算。 |
|
|
49
49
|
| `--event-rrule <rrule>` | 否 | 重复日程的重复性规则,规则设置方式参考rfc5545。**【⚠️注意:系统绝对不支持 COUNT,如需限制重复次数,必须转为 UNTIL】**。示例值:"FREQ=DAILY;INTERVAL=1" |
|
|
50
50
|
| `--duration-minutes <min>` | 否 | 会议时长(分钟)。优先使用用户显式指定的值,若未指定则尝试根据上下文推断,推断失败则不传 |
|
|
51
51
|
| `--timezone <tz>` | 否 | 对话中明确提及的预约日程所使用的时区(默认取用户设备时区,例如 `Asia/Shanghai`) |
|
|
@@ -43,9 +43,9 @@ lark-cli calendar +update \
|
|
|
43
43
|
| `--event-id <id>` | 是 | 要更新的日程 ID。重复性日程请根据操作范围选择 ID,详见 [重复性日程操作规范](lark-calendar-recurring.md) |
|
|
44
44
|
| `--calendar-id <id>` | 否 | 日历 ID(省略则使用 `primary`) |
|
|
45
45
|
| `--summary <text>` | 否 | 新日程标题。仅在显式传入 `--summary` 时更新;若传空字符串,会把标题清空 |
|
|
46
|
-
| `--description <
|
|
47
|
-
| `--start <time>` | 否 | 新开始时间(ISO 8601
|
|
48
|
-
| `--end <time>` | 否 | 新结束时间(ISO 8601
|
|
46
|
+
| `--description <markdown>` | 否 | 新日程描述,统一使用此字段,格式为 **Markdown**(加粗、斜体、下划线 `<u>...</u>`、删除线、链接 `[文本](url)`、标题 `# `~`### `(最多三级)、引用 `> `、有序/无序列表、GFM 表格 `\| 列1 \| 列2 \|` + 分隔行 `\| --- \| --- \|`、以及图片 ``(标准 Markdown 图片语法:远程 URL 原样使用;**本地图片路径**(相对路径、且位于当前工作目录内)会自动上传到云盘并在端上内联渲染——绝对路径或工作目录之外的路径会报错;端上已有图片读回为 Markdown 图片)。飞书文档 URL(裸链接或 `[文本](url)`)会自动解析为内联文档,端上展示文档标题。支持 `@文件路径` 或 `-`(stdin)读取。仅在显式传入时更新;传空字符串 `""` 会清空描述。**禁止**用 `***文本***` 同时表示加粗+斜体(端上会残留 `*`);应嵌套书写,如 `**<u>*~~文本~~*</u>**` 或 `*<u>**~~文本~~**</u>*`。 |
|
|
47
|
+
| `--start <time>` | 否 | 新开始时间(ISO 8601,**必须带时区偏移**,如 `2026-03-12T14:00+08:00`;不带偏移会按进程时区解析致偏移)。更新日程时间时必须同时传 `--end` |
|
|
48
|
+
| `--end <time>` | 否 | 新结束时间(ISO 8601,**必须带时区偏移**)。更新日程时间时必须同时传 `--start` |
|
|
49
49
|
| `--rrule <rrule>` | 否 | 新重复规则(RFC5545)。**不要使用 COUNT;如需限制次数,推算后转为 UNTIL** |
|
|
50
50
|
| `--add-attendee-ids <id_list>` | 否 | 增量添加参会人/会议室,逗号分隔。支持用户 `ou_`、群组 `oc_`、会议室 `omm_` |
|
|
51
51
|
| `--remove-attendee-ids <id_list>` | 否 | 增量移除参会人/会议室,逗号分隔。支持用户 `ou_`、群组 `oc_`、会议室 `omm_` |
|
|
@@ -58,13 +58,19 @@ lark-cli calendar +update \
|
|
|
58
58
|
|
|
59
59
|
- `--add-attendee-ids` 是**增量添加**,不是替换最终参与人列表。不要用它表达“只保留这些人”。
|
|
60
60
|
- 对 `--summary`、`--description`,CLI 以“是否显式传入该 flag”判断是否更新,而不是以“值是否为空”判断;如果显式传入空字符串,会把对应字段清空。
|
|
61
|
+
- 日程描述统一走 `--description`(按 Markdown 富文本处理)。
|
|
62
|
+
- 行内同时加粗和斜体时,**禁止**写 `***文本***`(端上会残留 `*`);必须让 `**` 与 `*` 各自成对嵌套,例如 `**<u>*~~文本~~*</u>**` 或 `*<u>**~~文本~~**</u>*`。
|
|
61
63
|
- 只想增删参会人或会议室时,不需要同时传 `--summary`、`--start`、`--end` 等日程字段。
|
|
62
64
|
- 只想修改标题、描述、时间或重复规则时,不需要同时传 `--add-attendee-ids` 或 `--remove-attendee-ids`。
|
|
63
65
|
- 如需替换某个参与人、群组或会议室,使用 `--remove-attendee-ids <旧ID>` + `--add-attendee-ids <新ID>`。
|
|
66
|
+
- bot 可作为合法参会人添加,无需剔除。
|
|
64
67
|
- 会议室是 resource attendee,必须使用 `omm_` ID 添加到参会人列表,不能脱离日程单独预定。
|
|
65
68
|
- 更新重复性日程时,必须先确定操作范围(仅此次/全部/此次及后续),然后按 [重复性日程操作规范](lark-calendar-recurring.md) 执行。
|
|
66
69
|
- 当同一次命令组合多个动作时,执行顺序为“日程字段 -> 移除参会人 -> 添加参会人”。若中途失败,不会自动回滚已成功步骤;错误信息会说明已完成的步骤。
|
|
67
70
|
**⚠️ 高风险操作**: 修改时间时必须先读取原日程时长并计算新 end。如果 end 计算错误,会导致日程时长变化,用户会直接感知,禁止擅自改变原日程的时长。
|
|
71
|
+
**不得擅自附加 `--skip-room-check` 重试**:将错误信息(含会议室 ID 与原因)原样透传给用户,说明本次更新会导致会议室预定失败,明确询问是否仍要继续;用户确认后再带 `--skip-room-check` 重新执行。
|
|
72
|
+
|
|
73
|
+
预检失败(如接口 404 或返回错误)会降级放行:向 stderr 打一条 warning 后继续执行,避免因新接口不稳定阻塞正常更新。
|
|
68
74
|
|
|
69
75
|
## 高级用法(完整 API 命令)
|
|
70
76
|
|
|
@@ -72,7 +78,7 @@ lark-cli calendar +update \
|
|
|
72
78
|
|
|
73
79
|
如需更新 `location`(地理位置,不含会议室位置)、`visibility`(日程公开范围)、自定义 `reminders`(提醒设置)、自定义 `attendee_ability`(参与人权限)、自定义 `free_busy_status`(日程忙闲状态)、`color`(颜色)、附件、视频会议信息、全天日程,或在新增参会人时配置可选参加状态 等高级参数,请改用完整的 API 命令。建议先通过 `lark-cli schema calendar.events.patch`、`lark-cli schema calendar.event.attendees.create`、`lark-cli schema calendar.event.attendees.batch_delete` 查看完整参数定义。
|
|
74
80
|
|
|
75
|
-
> 完整 API 命令的时间参数是 **Unix 秒字符串**(非 ISO 8601
|
|
81
|
+
> 完整 API 命令的时间参数是 **Unix 秒字符串**(非 ISO 8601)。换算时**禁止依赖容器默认时区**(常为 UTC,会导致 8 小时偏移),必须显式指定目标时区。
|
|
76
82
|
|
|
77
83
|
## 预约/改约会议室场景
|
|
78
84
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lark-contact
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
description: "飞书 / Lark 通讯录:按姓名 / 邮箱解析成 open_id,或按 open_id 反查姓名 / 部门 / 邮箱 / 联系方式 / 个人状态 /
|
|
4
|
+
description: "飞书 / Lark 通讯录:按姓名 / 邮箱解析成 open_id,或按 open_id 反查姓名 / 部门 / 邮箱 / 联系方式 / 个人状态 / 签名,以及按关键词搜索当前用户可见的机器人 / 智能体(agent)。当用户提到一个名字要下一步发消息 / 排日程,或拿到 open_id 想查具体信息时使用。不负责部门树遍历、按部门列员工、组织架构图,这类需求走原生 OpenAPI。"
|
|
5
5
|
metadata:
|
|
6
6
|
requires:
|
|
7
7
|
bins: ["lark-cli"]
|
|
@@ -15,12 +15,19 @@ metadata:
|
|
|
15
15
|
| 想做什么 | user 身份 | bot 身份 |
|
|
16
16
|
|---|---|---|
|
|
17
17
|
| 按姓名 / 邮箱搜员工拿 open_id | [`+search-user`](references/lark-contact-search-user.md) | 不支持 |
|
|
18
|
+
| 按关键词搜索当前用户可见的机器人 / 智能体 | [`+search-bot`](references/lark-contact-search-bot.md) | 不支持 |
|
|
18
19
|
| 已知 open_id 取他人资料 | `+search-user --user-ids <id>` | [`+get-user --user-id <id>`](references/lark-contact-get-user.md) |
|
|
19
20
|
| 查看自己 | `+get-user` 或 `+search-user --user-ids me` | 不支持 |
|
|
20
21
|
| 查同事的个人状态 / 签名 | `user_profiles batch_query` | 不支持 |
|
|
21
22
|
|
|
22
23
|
已知 open_id 只是想发消息 / 排日程,不必经过 contact —— 直接 [`lark-im`](../lark-im/SKILL.md) / [`lark-calendar`](../lark-calendar/SKILL.md)。
|
|
23
24
|
|
|
25
|
+
### 名字没说清是人还是机器人 / 智能体
|
|
26
|
+
|
|
27
|
+
用户给的名字常常不表明类型。例如「和 reviewDuck 约个会」里的 reviewDuck 可能是同事昵称,也可能是机器人。
|
|
28
|
+
- 名字含 bot / agent / AI / 助手 / 机器人 / 智能体 / assistant 等明显特征时,反过来先搜机器人更快
|
|
29
|
+
- 不确定的话两边都搜一下
|
|
30
|
+
|
|
24
31
|
## 典型场景
|
|
25
32
|
|
|
26
33
|
找张三给他发消息:先搜,确认 open_id,再发:
|
|
@@ -42,11 +49,20 @@ lark-cli contact user_profiles batch_query \
|
|
|
42
49
|
|
|
43
50
|
搜索命中多条且后续操作有副作用(发消息、邀请会议等),把候选列给用户挑;不要擅自选第一条。
|
|
44
51
|
|
|
52
|
+
## 搜索机器人 / 智能体
|
|
53
|
+
|
|
54
|
+
`+search-bot` 使用 user 身份按关键词搜索当前用户可见的机器人,返回 `ou_` 开头的机器人 open_id。参数细节等见 [`lark-contact-search-bot.md`](references/lark-contact-search-bot.md)。
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
lark-cli contact +search-bot --query '会议助手' --as user
|
|
58
|
+
lark-cli contact +search-bot --queries '会议助手,日报助手,审批助手' --as user
|
|
59
|
+
```
|
|
60
|
+
|
|
45
61
|
## 注意事项
|
|
46
62
|
|
|
47
|
-
- **41050 / Permission denied** 受当前身份的可见范围限制(
|
|
63
|
+
- **41050 / Permission denied** 受当前身份的可见范围限制(三条命令都可能遇到)。细节见 [`lark-shared`](../lark-shared/SKILL.md)。
|
|
48
64
|
- **跨租户用户**(`is_cross_tenant=true`)多数业务字段为空字符串,这是飞书可见性规则,下游做空值兜底。
|
|
49
|
-
- **ID
|
|
65
|
+
- **ID 类型**:`+get-user` 可通过 `--user-id-type` 使用 `open_id`、`union_id` 或 `user_id`;`+search-user` 使用用户 open_id;`+search-bot` 不支持按 ID 查询,它按关键词搜索并返回机器人 open_id。
|
|
50
66
|
|
|
51
67
|
## 不在本 skill 范围
|
|
52
68
|
|