@amaster.ai/pi-lark 0.1.2-beta.44 → 0.1.2-beta.45
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/package.json +2 -2
- package/skills/lark-apps/SKILL.md +23 -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-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 +1 -1
- 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 +1 -2
- package/skills/lark-base/references/lark-base-cell-value.md +3 -3
- 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-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-calendar/references/lark-calendar-create.md +1 -0
- package/skills/lark-calendar/references/lark-calendar-update.md +3 -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 +3 -2
- package/skills/lark-drive/SKILL.md +4 -1
- package/skills/lark-drive/references/lark-drive-comment-location.md +2 -2
- package/skills/lark-drive/references/lark-drive-upload.md +1 -0
- 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/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 +103 -46
- 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 +2 -3
- package/skills/lark-slides/references/lark-slides-history.md +132 -0
- package/skills/lark-slides/references/lark-slides-media-upload.md +1 -2
- 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 +1 -1
- 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 +1 -45
- package/skills/lark-slides/references/troubleshooting.md +25 -7
- package/skills/lark-slides/references/validation-checklist.md +33 -13
- package/skills/lark-slides/references/visual-planning.md +25 -22
- package/skills/lark-slides/references/xml-schema-quick-ref.md +225 -46
- package/skills/lark-slides/scripts/xml_text_overlap_lint.py +223 -22
- package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +183 -124
- 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-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
|
@@ -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
|
## 参考
|
|
@@ -44,6 +44,7 @@ lark-cli calendar +create --summary "..." --start "..." --end "..." \
|
|
|
44
44
|
> 自动设置 `reminders: [{"minutes": 5}]`,默认日程开始前 5 分钟提醒。
|
|
45
45
|
> 自动设置 `vchat: {"vc_type": "vc"}`,默认日程包含飞书视频会议。如需其他视频会议类型或不含视频会议,请使用完整 API 命令。
|
|
46
46
|
> 失败保护:若添加参会人失败(如 open_id 错误),CLI 会自动删除刚创建的空日程(回滚,不通知参会人)。
|
|
47
|
+
> 搜索用户接口不支持 bot 身份,需用 `--as user` 进行搜索。
|
|
47
48
|
> 审批会议室:`+create` 不暴露低频字段 `attendees[].approval_reason`。如果会议室要求审批,请使用用户身份先创建日程,再用完整 API `calendar event.attendees create --as user` 添加会议室并传 `approval_reason`。
|
|
48
49
|
|
|
49
50
|
## 高级用法(完整 API 命令)
|
|
@@ -65,6 +65,9 @@ lark-cli calendar +update \
|
|
|
65
65
|
- 更新重复性日程时,必须先确定操作范围(仅此次/全部/此次及后续),然后按 [重复性日程操作规范](lark-calendar-recurring.md) 执行。
|
|
66
66
|
- 当同一次命令组合多个动作时,执行顺序为“日程字段 -> 移除参会人 -> 添加参会人”。若中途失败,不会自动回滚已成功步骤;错误信息会说明已完成的步骤。
|
|
67
67
|
**⚠️ 高风险操作**: 修改时间时必须先读取原日程时长并计算新 end。如果 end 计算错误,会导致日程时长变化,用户会直接感知,禁止擅自改变原日程的时长。
|
|
68
|
+
**不得擅自附加 `--skip-room-check` 重试**:将错误信息(含会议室 ID 与原因)原样透传给用户,说明本次更新会导致会议室预定失败,明确询问是否仍要继续;用户确认后再带 `--skip-room-check` 重新执行。
|
|
69
|
+
|
|
70
|
+
预检失败(如接口 404 或返回错误)会降级放行:向 stderr 打一条 warning 后继续执行,避免因新接口不稳定阻塞正常更新。
|
|
68
71
|
|
|
69
72
|
## 高级用法(完整 API 命令)
|
|
70
73
|
|
|
@@ -87,13 +87,21 @@ lark-cli docs +fetch --doc Z1Fj...tnAc \
|
|
|
87
87
|
"document": {
|
|
88
88
|
"document_id": "doxcnXXXX",
|
|
89
89
|
"revision_id": 12,
|
|
90
|
-
"content": "<title>标题</title><p>文档内容...</p>"
|
|
90
|
+
"content": "<title>标题</title><p>文档内容...</p>",
|
|
91
|
+
"reference_map": {
|
|
92
|
+
"<block_type>": {
|
|
93
|
+
"<ref>": {
|
|
94
|
+
"<real-attr-key>": "<real-attr-value>"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"tips": "<safe replay or degradation guidance>"
|
|
91
99
|
}
|
|
92
100
|
}
|
|
93
101
|
}
|
|
94
102
|
```
|
|
95
103
|
|
|
96
|
-
`content` 的格式由 `--doc-format`
|
|
104
|
+
`content` 的格式由 `--doc-format` 决定。`reference_map` 是正文引用数据的结构化 sidecar:一级键 `block_type` 表示引用所在的块类型,二级键 `ref` 对应正文中的临时引用;每个引用的值是由 `real-attr-key` 和 `real-attr-value` 组成的真实属性映射,具体属性由块类型决定。没有提取数据时,`reference_map` 可能为空。`content` 和 `reference_map` 属于同一份响应,保留或回放内容时应配套处理。`tips` 给出安全回放或降级提示。`im-markdown` 仅用于获取内容后在 `lark-im` 场景下使用。设置 `--scope` 时会被 `<fragment>` 包裹,详见上文"局部读取的输出结构"。
|
|
97
105
|
|
|
98
106
|
## 参数
|
|
99
107
|
|
|
@@ -98,8 +98,8 @@ Sub Agent 需要携带以下的最小上下文,以及后续的 [SVG 设计 Wor
|
|
|
98
98
|
|
|
99
99
|
###### 画板怎么处理 SVG
|
|
100
100
|
|
|
101
|
-
画板的 svg-parser 把可识别元素转成可编辑节点, 其余降级为内嵌图片(渲染没问题, 虽然不可编辑, 但是可以正常显示)
|
|
102
|
-
`<
|
|
101
|
+
画板的 svg-parser 把可识别元素转成可编辑节点, 其余降级为内嵌图片(渲染没问题, 虽然不可编辑, 但是可以正常显示);但非阴影用途的
|
|
102
|
+
`<filter>` / `<pattern>` / `<clipPath>` / `<mask>` 等装饰特性画板不支持(见下方⚠️)
|
|
103
103
|
**不需要所有元素都可编辑, 但必须避免使用不支持的装饰特性, 且要兼顾可编辑和美观漂亮**
|
|
104
104
|
|
|
105
105
|
**可识别的元素**
|
|
@@ -109,12 +109,14 @@ Sub Agent 需要携带以下的最小上下文,以及后续的 [SVG 设计 Wor
|
|
|
109
109
|
- 文本:`<text>` / `<tspan>` 画板硬编码 Noto Sans SC **文字必须用 `<text>`**
|
|
110
110
|
- 分组:`<g>` / `<a>` / `<use>` 引用 `<symbol>`
|
|
111
111
|
- 变换:`translate` / `rotate` / `scale` 正常;`skewX` / `skewY` / `matrix(...)` 降级
|
|
112
|
+
- 阴影:`<filter>` 里放 `<feDropShadow>` 或标准 drop/inner primitive 链 (`<feGaussianBlur in="SourceAlpha">` + `<feOffset>` + `<feFlood>` + `<feComposite>` + `<feMerge>`), 会被识别成节点阴影, drop 至多 1 个, inner 至多 1 个; 其余 filter 效果不识别
|
|
113
|
+
- 渐变:`<linearGradient>` / `<radialGradient>` 在 `<defs>` 中定义, 通过 `fill="url(#id)"` 引用 (载体限 `<rect>` / `<circle>` / `<ellipse>` / `<polygon>` / `<path>`), 需要至少 2 个 `<stop>`, `gradientUnits` 只支持默认的 `objectBoundingBox` (不写即可)
|
|
112
114
|
|
|
113
115
|
> [!IMPORTANT]
|
|
114
|
-
> ⚠️
|
|
116
|
+
> ⚠️ **不支持的装饰特性**
|
|
115
117
|
|
|
116
|
-
- `<
|
|
117
|
-
|
|
118
|
+
- `<pattern>` / `<clipPath>` / `<mask>` / 非阴影用途的 `<filter>` (blur / hue-rotate / 复合合成 / `flood-color=url(...)` / 多个 `<feDropShadow>` 等) → 画板不支持,**请避免使用,否则会导致画板渲染问题**
|
|
119
|
+
- 渐变边界:`gradientUnits="userSpaceOnUse"` / `spreadMethod="reflect|repeat"` / stops 少于 2 个 / 复杂 `gradientTransform` 会变成不可编辑图片, 视觉正确但失去可编辑性, 若无必要请沿用默认 `objectBoundingBox`
|
|
118
120
|
|
|
119
121
|
###### 3.插入后审查
|
|
120
122
|
|
|
@@ -123,9 +125,9 @@ Sub Agent 需要携带以下的最小上下文,以及后续的 [SVG 设计 Wor
|
|
|
123
125
|
`../../lark-whiteboard/SKILL.md`](../../lark-whiteboard/SKILL.md) 编辑。
|
|
124
126
|
|
|
125
127
|
```bash
|
|
126
|
-
lark-cli whiteboard +
|
|
128
|
+
lark-cli whiteboard +export \
|
|
127
129
|
--whiteboard-token "wbcnxxxxxxxx" \
|
|
128
|
-
--
|
|
130
|
+
--output-type preview \
|
|
129
131
|
--output ./preview.png
|
|
130
132
|
```
|
|
131
133
|
|
|
@@ -150,7 +152,6 @@ lark-cli whiteboard +query \
|
|
|
150
152
|
|
|
151
153
|
---
|
|
152
154
|
|
|
153
|
-
|
|
154
155
|
---
|
|
155
156
|
|
|
156
157
|
## 关联参考
|
|
@@ -2,6 +2,47 @@
|
|
|
2
2
|
|
|
3
3
|
本文件用于补充说明 block XML 扩展能力。常用标签和通用规则见 [`lark-doc-xml.md`](lark-doc-xml.md);后续新增其他 block 说明时可继续追加到本文件。
|
|
4
4
|
|
|
5
|
+
## HTML5 block
|
|
6
|
+
|
|
7
|
+
1. 写入 HTML 内容块时,把完整单文件 HTML 存为本地 `.html` 文件,XML 写 `<html5-block path="@widget.html"></html5-block>`;已有 `data-ref` 时配合 `--reference-map @reference-map.json`。读取时 `<html5-block data-ref="html5_1"></html5-block>` 只是占位,必须从 `document.reference_map["html5-block"]["html5_1"].data` 读取 HTML;若 entry 是 `path`,读取对应 `@doc-fetch-resources/...html` 文件。
|
|
8
|
+
2. 格式如下:
|
|
9
|
+
|
|
10
|
+
```html
|
|
11
|
+
<!doctype html>
|
|
12
|
+
<html lang="zh-CN">
|
|
13
|
+
<head>
|
|
14
|
+
<meta charset="utf-8">
|
|
15
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
16
|
+
<meta name="use-iframe" content="true">
|
|
17
|
+
<meta name="html-box-height-mode" content="auto">
|
|
18
|
+
<meta name="description" content="内容摘要,会导出为 html5-block 的 alt 属性,帮助模型理解该 HTML 块的用途">
|
|
19
|
+
<title></title>
|
|
20
|
+
</head>
|
|
21
|
+
<body>
|
|
22
|
+
...
|
|
23
|
+
</body>
|
|
24
|
+
</html>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 布局与高度
|
|
28
|
+
|
|
29
|
+
- `lark-cli` 会读取 `.html` 文件并原样写入 `reference_map`,不会解析或校验 `html-box-height-mode`;创建或更新文档前在 `<head>` 中显式声明 `auto` 或 `viewport`。
|
|
30
|
+
- 生成时只使用 `auto` 或 `viewport`,不要臆造 `fixed`、`initial` 或像素值等其他 mode。
|
|
31
|
+
- 文档常见可用宽度约 `820px`;根容器使用 `width: 100%`、`max-width: 100%`、`box-sizing: border-box`。
|
|
32
|
+
|
|
33
|
+
四种策略:
|
|
34
|
+
|
|
35
|
+
1. 内容自然撑开:`auto` + 普通文档流;根容器不设固定高度或 `overflow: hidden`。
|
|
36
|
+
2. 仅按初始内容定高:`auto` + 首次渲染后不再追加或展开内容。
|
|
37
|
+
3. 固定像素操作区:`auto` + 业务容器按场景设置固定的 CSS `height` 和 `overflow: auto`;高度数值不写进 meta。
|
|
38
|
+
4. 单屏应用:`viewport` + `100vh` + 内部滚动、切页或缩放;适用于游戏、幻灯片、Dashboard、canvas 编辑器。
|
|
39
|
+
|
|
40
|
+
正文需要在飞书文档中完整展开时选 `auto`;内容应在 HTML Block 内滚动时选 `viewport`。`lark-cli` 不参与页面加载后的高度刷新,不要臆造相关 CLI flag。
|
|
41
|
+
|
|
42
|
+
### 内容限制
|
|
43
|
+
|
|
44
|
+
- HTML 总长度上限为 500KB。不要内联大图片、Base64、字体、长 JSON/CSV 或大量 mock 数据。
|
|
45
|
+
|
|
5
46
|
## OKR block
|
|
6
47
|
|
|
7
48
|
OKR block 可用 XML 格式完整表达。创建前先参考 [`lark-okr`](../../lark-okr/SKILL.md) 确认可用周期;创建时只写 root-only `<okr cycle-id="..."/>` 挂载已有 OKR,不构造 Objective/KR/Progress 子树。
|
|
@@ -23,7 +23,7 @@ p, h1-h9, ul, ol, li, table, thead, tbody, tr, th, td, blockquote, pre, code, hr
|
|
|
23
23
|
## 行内组件
|
|
24
24
|
| 标签 | 说明 | 关键属性 |
|
|
25
25
|
|-|-|-|
|
|
26
|
-
| `<cite type="user">` | @人 |
|
|
26
|
+
| `<cite type="user">` | @人 | XML 导入时必须显式传入 `user-id`:`<cite type="user" user-id="userID"></cite>` |
|
|
27
27
|
| `<cite type="doc">` | @文档 | `<cite type="doc" doc-id="docx_token"></cite>` |
|
|
28
28
|
| `<latex>` | 行内公式 | `<latex>E = mc^2</latex>` |
|
|
29
29
|
| `<img>` | 图片(可独立成块或内联) | `<img width="800" height="600" caption="说明" name="图.png" href="http 或 https"/>` |
|
|
@@ -46,8 +46,8 @@ p, h1-h9, ul, ol, li, table, thead, tbody, tr, th, td, blockquote, pre, code, hr
|
|
|
46
46
|
- `<task>` — `<task task-id="GUID"></task>`,必传 task-id(任务 guid)
|
|
47
47
|
- `<chat_card>` — `<chat_card chat-id="CHAT_ID"></chat_card>`,必传 chat-id
|
|
48
48
|
- `<sub-page-list>` — `<sub-page-list></sub-page-list>` 子页面列表块;仅 wiki 文档可插入
|
|
49
|
+
- `<html5-block>`、`<okr>` — 前者在飞书文档「HTML 块」iframe 中加载单文件 HTML,内容可用 HTML 渲染时直接使用;后者创建时仅支持 root-only `<okr cycle-id="..."/>` 挂载已有 OKR。完整语法与字段规则见 [`lark-doc-xml-extended-blocks.md`](lark-doc-xml-extended-blocks.md)。
|
|
49
50
|
- bitable、base_ref、synced_reference、synced_source — 不可创建,仅支持移动
|
|
50
|
-
- `<okr>` — 创建时仅支持 root-only `<okr cycle-id="..."/>` 挂载已有 OKR;完整结构与字段规则见 [`lark-doc-xml-extended-blocks.md`](lark-doc-xml-extended-blocks.md#okr-block)
|
|
51
51
|
|
|
52
52
|
# 四、块级复制与移动
|
|
53
53
|
|
|
@@ -85,6 +85,7 @@ p, h1-h9, ul, ol, li, table, thead, tbody, tr, th, td, blockquote, pre, code, hr
|
|
|
85
85
|
|
|
86
86
|
## 用户名写入规则
|
|
87
87
|
|
|
88
|
+
- 任何包含 `<cite type="user">` 的 XML 在导入、新建或编辑回写时,都必须显式传入 `user-id`;其值为用户的 `open_id`,不得省略。
|
|
88
89
|
- 当从 IM 消息、日历、审批、任务等来源获取到用户的 `open_id` 时,写入文档**必须**使用 `<cite type="user" user-id="open_id">` 标签,而非纯文本名字。这样文档中会渲染为可点击的 @人。
|
|
89
90
|
- 典型场景:IM 消息的 `sender`、`mentions`、reactions 的 `operator`、卡片消息中引用的用户、系统消息中的用户名、合并转发中的用户名。
|
|
90
91
|
- 当只有纯文本名字而没有 `open_id` 时(如系统消息、合并转发内容),先通过 `lark-cli contact +search-user --query "名字" --as user` 反查 `open_id`,再写入 cite 标签。
|
|
@@ -26,7 +26,10 @@ metadata:
|
|
|
26
26
|
- 高风险写操作(删除、公开权限修改、owner 转移、版本删除/回滚、批量移动/覆盖/同步)必须同时满足三个条件才执行:目标已解析为该操作可直接使用的执行对象,执行细节已明确到可直接调用命令(例如删除的 file-token/type、公开权限修改的共享范围、owner 转移的目标 owner、版本删除/回滚的 version id、移动/覆盖/同步的目标位置和冲突策略),且用户在本轮明确确认执行这些具体目标和执行细节。用户只说“删除没用的文件”“开放/共享给大家”“改成开放”“覆盖/移动这些”只表示目标状态;先只读发现并列出候选、权限档位或执行方案,停止等待用户确认。
|
|
27
27
|
- 用户要**检查 / 治理文档权限、公开范围、链接分享、外部访问、复制下载权限、密级标签、owner 转移**,或要”权限风险报告、收紧权限、申请查看 / 编辑权限、转移 / 批量转移 owner”,必须先阅读 [`references/lark-drive-workflow.md`](references/lark-drive-workflow.md),再按其中 `Workflow Registry` 进入 [`permission_governance`](references/lark-drive-workflow-permission-governance.md) workflow。
|
|
28
28
|
- 用户要为指定飞书文档**设置 / 修改密级标签(secure label)**,或查询当前用户可用的密级标签,直接读取 [`references/lark-drive-secure-label.md`](references/lark-drive-secure-label.md);这是 Drive 文件治理能力。
|
|
29
|
+
- 用户要**检查 / 治理文档权限、公开范围、链接分享、外部访问、复制下载权限、密级标签、owner 转移**,或要“权限风险报告、收紧权限、申请查看 / 编辑权限、转移 / 批量转移 owner”,必须先阅读 [`references/lark-drive-workflow.md`](references/lark-drive-workflow.md),再按其中 `Workflow Registry` 进入 [`permission_governance`](references/lark-drive-workflow-permission-governance.md) workflow。
|
|
30
|
+
- 用户要**按特定主题、关键词或内容线索跨容器查找资料,并统一收集到 Drive 文件夹或 Wiki 节点**,必须先阅读 [`references/lark-drive-workflow.md`](references/lark-drive-workflow.md),再按其中 `Workflow Registry` 进入 [`topic_move_collector`](references/lark-drive-workflow-topic-move-collector.md) workflow。该 workflow 负责搜索召回、内容验证、相关性分类、移动计划、写前确认和结果验证;禁止直接从 `drive +search` 或 `drive +move` 开始。
|
|
29
31
|
- 用户要**整理云盘 / 文件夹 / 文档库 / 知识库 / 个人文档库**,或要“盘点目录结构、找出未归档/临时/重复/空目录、生成整理方案”,必须先阅读 [`references/lark-drive-workflow.md`](references/lark-drive-workflow.md),再按其中 `Workflow Registry` 进入 [`knowledge_organize`](references/lark-drive-workflow-knowledge-organize.md) workflow。默认只生成方案;创建目录、移动资源、申请权限都必须单独确认。
|
|
32
|
+
- 按主题跨范围查找并集中归档,进入 `topic_move_collector`;对已知文件夹、文档库或知识库做目录盘点和结构重组,进入 `knowledge_organize`;只移动一个已明确资源时仍使用原子移动命令。
|
|
30
33
|
- 用户要**搜文档 / Wiki / 电子表格 / 多维表格 / 云空间(云盘/云存储)对象**,优先使用 `lark-cli drive +search`。自然语言里"最近我编辑过的"、"我创建的"(→ `--created-by-me`,原始创建者语义)、"我负责/owner 的"(→ `--mine`,owner 语义)、"最近一周我打开过的 xxx"、"某人 owner 的 docx" 等直接映射到扁平 flag,避免手写嵌套 JSON。
|
|
31
34
|
- 用户要**获取文档评论列表**时,优先使用 `lark-cli drive +list-comments --url '<url>'`,不要优先手写 `drive file.comments list`;支持妙搭 apps 的 `/page/<token>` URL;具体使用方式先阅读 [`references/lark-drive-list-comments.md`](references/lark-drive-list-comments.md)。
|
|
32
35
|
- 妙搭 apps 评论场景:除新增全文/局部评论不支持外,评论列表、批量查询、解决/恢复、回复创建/读取/更新/删除、reaction 添加/删除等评论管理能力已支持;使用原生命令时文档类型传 `apps`(`file_type=apps`),裸 token 调 shortcut 时传 `--type apps`。
|
|
@@ -135,7 +138,7 @@ Shortcut 是对常用操作的高级封装(`lark-cli drive +<verb> [flags]`)
|
|
|
135
138
|
| Shortcut | 说明 |
|
|
136
139
|
|----------|----------|
|
|
137
140
|
| [`+search`](references/lark-drive-search.md) | 搜索文档、Wiki、表格、文件夹等云空间对象;支持 `--edited-since`、`--created-by-me`、`--mine`、`--doc-types` 等扁平 flag;区分 original creator 与 owner 语义。 |
|
|
138
|
-
| [`+upload`](references/lark-drive-upload.md) | 上传本地文件到 Drive 文件夹或 wiki
|
|
141
|
+
| [`+upload`](references/lark-drive-upload.md) | 上传本地文件到 Drive 文件夹或 wiki 节点;修改/重写/更新已有文件时优先覆盖上传,而不是直接上传一个新文件。 |
|
|
139
142
|
| [`+create-folder`](references/lark-drive-create-folder.md) | 新建 Drive 文件夹,支持父文件夹与 bot 创建后自动授权。 |
|
|
140
143
|
| [`+download`](references/lark-drive-download.md) | 下载 Drive 文件到本地。 |
|
|
141
144
|
| [`+preview`](references/lark-drive-preview.md) | 查看或下载文件的 PDF / HTML / 文本 / 图片等预览产物。 |
|
|
@@ -190,9 +190,9 @@ lark-cli base +record-list --base-token '<base_token>' --table-id '<table_id>' -
|
|
|
190
190
|
- 若要定位画板内部节点,切到 `lark-whiteboard` 读取 raw 节点结构:
|
|
191
191
|
|
|
192
192
|
```bash
|
|
193
|
-
lark-cli whiteboard +
|
|
193
|
+
lark-cli whiteboard +export \
|
|
194
194
|
--whiteboard-token '<whiteboard_token>' \
|
|
195
|
-
--
|
|
195
|
+
--output-type raw
|
|
196
196
|
```
|
|
197
197
|
|
|
198
198
|
- 如果 raw 节点中存在唯一匹配 `quote` 的文本节点,可定位到该节点;如果有多个相同文本节点,仍然是弱匹配,需要结合位置、样式、用户描述或人工确认。
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
# 主题资料收集工作流:执行
|
|
2
|
+
|
|
3
|
+
由状态 `CONFIRM_EXECUTION`、`EXECUTE`、`VERIFY`、`RESTORE` 加载。
|
|
4
|
+
|
|
5
|
+
本文档负责最终写操作确认、目标创建、资源移动、验证、恢复行为、`RollbackSnapshotItem` 和执行日志。不得修改搜索、召回、分类规则或计划 schema。
|
|
6
|
+
|
|
7
|
+
本文档只服务 `topic_move_collector`。进入本文档时,`workflow_id` 必须是 `topic_move_collector`;不得把当前任务改路由到其他 workflow。
|
|
8
|
+
|
|
9
|
+
## 必读上下文
|
|
10
|
+
|
|
11
|
+
执行本文档规则前:
|
|
12
|
+
|
|
13
|
+
1. 按 [`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 处理写操作确认、高风险操作、身份、认证和权限。
|
|
14
|
+
2. 按 [`lark-drive-create-folder.md`](lark-drive-create-folder.md) 创建 Drive 文件夹。
|
|
15
|
+
3. 按 [`lark-drive-move.md`](lark-drive-move.md) 执行 Drive 移动。
|
|
16
|
+
4. 按 [`../../lark-wiki/references/lark-wiki-node-create.md`](../../lark-wiki/references/lark-wiki-node-create.md) 创建 Wiki 节点。
|
|
17
|
+
5. 按 [`../../lark-wiki/references/lark-wiki-move.md`](../../lark-wiki/references/lark-wiki-move.md) 执行 Wiki 移动和 Drive 文档移动到 Wiki。
|
|
18
|
+
6. 按 [`../../lark-wiki/references/lark-wiki-move-to-drive.md`](../../lark-wiki/references/lark-wiki-move-to-drive.md) 将 Wiki 节点移出到 Drive 文件夹。
|
|
19
|
+
7. 按 [`lark-drive-delete.md`](lark-drive-delete.md) 删除本次 workflow 新建的 Drive 文件夹。
|
|
20
|
+
8. 按 [`../../lark-wiki/references/lark-wiki-node-delete.md`](../../lark-wiki/references/lark-wiki-node-delete.md) 删除本次 workflow 新建的 Wiki 节点。
|
|
21
|
+
9. 需要轮询异步任务时,按 [`lark-drive-task-result.md`](lark-drive-task-result.md) 执行。
|
|
22
|
+
10. `MovePlanItem` schema 由 [`lark-drive-workflow-topic-move-collector-review-plan.md`](lark-drive-workflow-topic-move-collector-review-plan.md) 定义,本文件只消费已确认计划。
|
|
23
|
+
|
|
24
|
+
## 状态:`CONFIRM_EXECUTION`
|
|
25
|
+
|
|
26
|
+
进入条件:移动计划已准备,且用户要求执行。
|
|
27
|
+
|
|
28
|
+
必须:
|
|
29
|
+
|
|
30
|
+
1. 执行前展示所有写操作类别。
|
|
31
|
+
2. 将目标创建和资源移动分开展示。
|
|
32
|
+
3. 展示默认纳入的高相关资源。
|
|
33
|
+
4. 如有用户选择的中相关资源,也要展示。
|
|
34
|
+
5. 展示跳过分组和原因。
|
|
35
|
+
6. 明确展示跨容器移动。
|
|
36
|
+
7. 展示无移动权限和移动权限未知的资源数量。
|
|
37
|
+
8. 请求用户明确确认。
|
|
38
|
+
9. 确认前校验每个 `move_resource` 项都包含完整 `command_family`、`command_args`、权限快照和 `rollback_input`;缺失时必须返回 `PLAN_MOVE` 重新生成计划,不得在执行阶段补猜。
|
|
39
|
+
10. 只有 `move_permission_state=movable` 且 `target_write_state=confirmed` 的计划项可以列入“将移动”。
|
|
40
|
+
11. 对每个 `rollback_supported=false` 的计划项逐项展示标题、当前位置、目标位置、不可恢复原因和影响,不得只展示数量。
|
|
41
|
+
|
|
42
|
+
### 确认 UI
|
|
43
|
+
|
|
44
|
+
```text
|
|
45
|
+
请确认是否执行以下写操作:
|
|
46
|
+
|
|
47
|
+
本次搜索范围:<当前用户 owner / 负责的资源 | 所有当前身份可见资源>
|
|
48
|
+
|
|
49
|
+
将创建:
|
|
50
|
+
- 目标名称|父级位置|目标类型
|
|
51
|
+
|
|
52
|
+
将移动:
|
|
53
|
+
- 标题|类型|当前位置|目标位置|原因
|
|
54
|
+
|
|
55
|
+
不会移动:
|
|
56
|
+
- 中相关未选择:N 项
|
|
57
|
+
- 低相关:N 项
|
|
58
|
+
- 无权限:N 项
|
|
59
|
+
- 无移动权限:N 项
|
|
60
|
+
- 移动权限未知:N 项
|
|
61
|
+
- 无法验证:N 项
|
|
62
|
+
- 不支持移动:N 项
|
|
63
|
+
|
|
64
|
+
风险提示:
|
|
65
|
+
- 不可自动恢复:N 项
|
|
66
|
+
- 标题|当前位置|目标位置|不可恢复原因|影响:移动成功后 workflow 无法自动搬回原位置,需要手动处理
|
|
67
|
+
- 如果搜索范围是所有当前身份可见资源,移动权限未知项不会移动。
|
|
68
|
+
|
|
69
|
+
确认后才会创建目标和移动资源。
|
|
70
|
+
|
|
71
|
+
如果不存在不可自动恢复项,请回复“确认执行”开始写操作。
|
|
72
|
+
如果存在不可自动恢复项,请回复“确认执行,包括不可自动恢复项”;普通“确认执行”不满足本次风险确认。
|
|
73
|
+
也可以回复“调整计划”返回选择资源,或回复“取消”结束流程。
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
如果用户修改选择或相关性分组,废弃当前 `move_plan_items` 并返回 `PLAN_MOVE` 重新生成计划;不得在 `CONFIRM_EXECUTION` 直接局部改写计划。
|
|
77
|
+
|
|
78
|
+
## 状态:`EXECUTE`
|
|
79
|
+
|
|
80
|
+
进入条件:用户明确确认写操作;存在 `rollback_supported=false` 的计划项时,用户已明确确认包括不可自动恢复项。
|
|
81
|
+
|
|
82
|
+
必须:
|
|
83
|
+
|
|
84
|
+
1. 只执行已确认 `MovePlanItem.command_family` 和 `command_args`;不得回查 `ResourceItem` 补齐或改写命令参数。
|
|
85
|
+
2. 当存在 `action_type=create_target` 的 `MovePlanItem` 时,先创建目标。
|
|
86
|
+
3. 目标创建后记录返回 token;只允许把 `created_by_plan:<create_target plan_id>` 引用解析为该 token,并把解析后的实际参数写入 `execution_journal`。不得重新搜索或猜测目标。
|
|
87
|
+
4. 目标 token 引用解析成功后再移动依赖该目标的资源;解析失败时停止依赖该创建目标的移动并记录 blocker,不得替换为其他目标。
|
|
88
|
+
5. 执行任何写操作前,基于每个已确认计划项的 `rollback_input` 生成 `rollback_snapshot`。`rollback_supported=false` 且已有明确 `rollback_blocker` 的快照视为完整风险快照,不阻塞其他项。
|
|
89
|
+
6. 执行任何写操作前,初始化 `execution_journal`。
|
|
90
|
+
7. 每次写操作尝试后记录 `execution_journal`。
|
|
91
|
+
8. 单项失败后可继续执行相互独立的移动;目标创建失败时必须停止。
|
|
92
|
+
9. 不得移动 `permission_denied`、`no_move_permission`、`move_permission_unknown`、`unverifiable`、`low` 或 `unsupported_move_target` 项。
|
|
93
|
+
10. 不得移动 `move_permission_state!=movable` 或 `target_write_state!=confirmed` 的资源。
|
|
94
|
+
11. 如果移动命令返回权限错误,记录失败原因,不自动申请权限,不自动重试同一移动。
|
|
95
|
+
12. 如果 `rollback_supported=true` 但 `rollback_input` 缺少恢复所需字段,将该计划项标记为 `failed` / `plan_snapshot_incomplete` 并跳过;不得在未重新确认风险的情况下把它静默降级为不可恢复项,也不得阻塞其他独立项。
|
|
96
|
+
|
|
97
|
+
### 移动方式选择
|
|
98
|
+
|
|
99
|
+
| 来源 -> 目标 | 移动方式 |
|
|
100
|
+
|------------------|-------------|
|
|
101
|
+
| Drive resource -> Drive folder | `drive +move` |
|
|
102
|
+
| Drive document-like resource -> Wiki target | `wiki +move` 的 docs-to-wiki 模式;默认不可自动恢复 |
|
|
103
|
+
| Wiki node -> Wiki target | `wiki +move --node-token` |
|
|
104
|
+
| Wiki node -> Drive folder | `wiki +move-to-drive` |
|
|
105
|
+
|
|
106
|
+
### 执行顺序
|
|
107
|
+
|
|
108
|
+
1. 如有 `create_target` 项,先执行。
|
|
109
|
+
2. 按确认计划顺序执行 `move_resource` 项。
|
|
110
|
+
3. 如果命令返回 task ID,执行异步任务轮询。
|
|
111
|
+
4. 输出写操作执行摘要。
|
|
112
|
+
|
|
113
|
+
### 进度 UI
|
|
114
|
+
|
|
115
|
+
批量较大时,按计数汇报进度:
|
|
116
|
+
|
|
117
|
+
```text
|
|
118
|
+
执行进度:已完成 <done_count>/<total_count>,成功 <success_count>,失败 <failed_count>。
|
|
119
|
+
当前操作:<title>
|
|
120
|
+
继续执行中,不需要你操作;如遇到需要确认的失败会单独提示。
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## 状态:`VERIFY`
|
|
124
|
+
|
|
125
|
+
进入条件:执行完成。
|
|
126
|
+
|
|
127
|
+
必须:
|
|
128
|
+
|
|
129
|
+
1. 如果创建了目标,验证目标存在。
|
|
130
|
+
2. 能力支持时,验证已移动资源在目标位置可见。
|
|
131
|
+
3. 对比实际位置和 `move_plan_items`。
|
|
132
|
+
4. 为每一项标记验证状态。
|
|
133
|
+
5. 只有当已有移动成功且存在严重不一致或失败时,才提供恢复选项。
|
|
134
|
+
6. 输出验证结果时,必须说明用户下一步可以结束流程、查看失败项,或在可恢复时选择恢复。
|
|
135
|
+
7. 如果出现 `async_pending`,先使用 `drive +task_result` 轮询确认;超过轮询限制后再报告 pending blocker。
|
|
136
|
+
|
|
137
|
+
### 验证结果
|
|
138
|
+
|
|
139
|
+
| 状态值 | 说明 |
|
|
140
|
+
|--------|------|
|
|
141
|
+
| `verified` | 资源已在目标位置可见。 |
|
|
142
|
+
| `not_found` | 目标位置未找到资源。 |
|
|
143
|
+
| `permission_unknown` | 当前身份无法确认结果。 |
|
|
144
|
+
| `async_pending` | 异步任务尚未完成,需要继续轮询。 |
|
|
145
|
+
| `failed` | 移动命令失败或结果不符合计划。 |
|
|
146
|
+
|
|
147
|
+
## 状态:`RESTORE`
|
|
148
|
+
|
|
149
|
+
进入条件:失败、不一致或用户明确要求恢复。
|
|
150
|
+
|
|
151
|
+
必须:
|
|
152
|
+
|
|
153
|
+
1. 只基于 `rollback_snapshot` 和 `execution_journal` 生成恢复计划。
|
|
154
|
+
2. 展示可恢复项和不可恢复项。
|
|
155
|
+
3. 执行恢复写操作前请求明确确认;确认内容必须包含反向移动和删除本次 workflow 新建目标。
|
|
156
|
+
4. 只恢复本次 workflow 移动过的资源。
|
|
157
|
+
5. 只恢复 `rollback_supported=true` 且 `rollback_eligible=true` 的移动项。
|
|
158
|
+
6. Drive / Wiki 跨容器移动、原父级 token 缺失等 `rollback_supported=false` 的项不得反向移动,也不得删除迁入后的文档。
|
|
159
|
+
7. 本次 workflow 成功创建的目标文件夹或 Wiki 节点必须纳入清理计划。
|
|
160
|
+
8. 删除 workflow 新建的 Wiki 目标节点时,必须使用 `wiki +node-delete --include-children=false --yes`,让已迁入的直接子文档保留到该节点父级层级。
|
|
161
|
+
9. 删除 workflow 新建的 Drive 文件夹前,必须先恢复或移出其中由本次 workflow 放入的资源;如果无法确认文件夹已安全可删,报告清理阻塞,不得用删除文件夹来删除用户资源。
|
|
162
|
+
|
|
163
|
+
### 恢复顺序
|
|
164
|
+
|
|
165
|
+
1. 先恢复 `rollback_supported=true` 且 `rollback_eligible=true` 的移动项。
|
|
166
|
+
2. 对全部 `rollback_supported=false` 的项,只记录“保留在当前目标位置,不回迁、不删除”和对应 blocker。
|
|
167
|
+
3. 再清理 `created_by_workflow=true` 的目标容器。
|
|
168
|
+
4. Wiki 新建目标清理使用 `--include-children=false`;Drive 新建目标清理只在不会删除用户资源时执行。
|
|
169
|
+
|
|
170
|
+
### 恢复 UI
|
|
171
|
+
|
|
172
|
+
```text
|
|
173
|
+
可以尝试恢复本次已移动的资源:
|
|
174
|
+
|
|
175
|
+
可恢复:
|
|
176
|
+
- 标题|当前位置|原位置
|
|
177
|
+
|
|
178
|
+
不可自动恢复:
|
|
179
|
+
- 标题|当前位置|原位置|原因|影响:需要手动恢复
|
|
180
|
+
|
|
181
|
+
将清理本次新建目标:
|
|
182
|
+
- 名称|类型|清理方式
|
|
183
|
+
|
|
184
|
+
将保留在当前目标位置的跨容器迁入文档:
|
|
185
|
+
- 标题|当前位置|保留结果
|
|
186
|
+
|
|
187
|
+
是否执行恢复?
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## RollbackSnapshotItem
|
|
191
|
+
|
|
192
|
+
```json
|
|
193
|
+
{
|
|
194
|
+
"snapshot_id": "稳定快照行 ID",
|
|
195
|
+
"plan_id": "对应 MovePlanItem.plan_id",
|
|
196
|
+
"resource_id": "对应 MovePlanItem.resource_id",
|
|
197
|
+
"source_kind": "drive|wiki",
|
|
198
|
+
"title": "资源标题",
|
|
199
|
+
"resource_type": "Drive 恢复命令需要的资源类型",
|
|
200
|
+
"original_token": "原始 Drive token",
|
|
201
|
+
"original_node_token": "原始 Wiki node token",
|
|
202
|
+
"original_parent_kind": "drive_folder|drive_root|wiki_node|wiki_space_root|unknown",
|
|
203
|
+
"original_parent_token": "原始父级 token",
|
|
204
|
+
"original_space_id": "原始 Wiki space_id",
|
|
205
|
+
"original_path": "执行前路径",
|
|
206
|
+
"planned_target_parent_token": "计划目标父级 token",
|
|
207
|
+
"rollback_supported": "是否支持自动恢复",
|
|
208
|
+
"rollback_blocker": "不可自动恢复原因"
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
| 字段 | 说明 |
|
|
213
|
+
|-------|------|
|
|
214
|
+
| `snapshot_id` | 稳定快照行 ID。 |
|
|
215
|
+
| `plan_id` | 对应 `MovePlanItem.plan_id`,用于连接计划、快照和执行日志。 |
|
|
216
|
+
| `resource_id` | 对应稳定资源 ID,用于审计计划来源。 |
|
|
217
|
+
| `resource_type` | `drive +move` 恢复时必须传入的 `--type`;非 Drive 恢复也保留原始资源类型。 |
|
|
218
|
+
| `original_token` / `original_node_token` | 执行前源资源身份。 |
|
|
219
|
+
| `original_parent_kind` / `original_parent_token` | 执行前父级位置。 |
|
|
220
|
+
| `rollback_supported` | 是否支持自动恢复。 |
|
|
221
|
+
| `rollback_blocker` | 不可自动恢复原因。 |
|
|
222
|
+
|
|
223
|
+
## 执行日志
|
|
224
|
+
|
|
225
|
+
每次写操作尝试都必须追加一条内部日志:
|
|
226
|
+
|
|
227
|
+
```json
|
|
228
|
+
{
|
|
229
|
+
"journal_id": "稳定日志行 ID",
|
|
230
|
+
"plan_id": "对应 MovePlanItem 的 plan_id",
|
|
231
|
+
"time": "ISO-8601",
|
|
232
|
+
"action_type": "create_target|move_resource|restore_resource|cleanup_target",
|
|
233
|
+
"operation": "create_folder|create_node|move_drive|move_wiki_node|move_wiki_to_drive|restore_drive|restore_wiki_node|delete_folder|delete_wiki_node",
|
|
234
|
+
"command_family": "drive +move|wiki +move|wiki +move-to-drive|drive +create-folder|wiki +node-create|drive +delete|wiki +node-delete",
|
|
235
|
+
"resolved_command_args": {"<arg>": "实际发送的参数"},
|
|
236
|
+
"title": "资源或目标名称",
|
|
237
|
+
"resource_type": "资源类型",
|
|
238
|
+
"input_token": "命令输入 token",
|
|
239
|
+
"input_node_token": "命令输入 Wiki node token",
|
|
240
|
+
"input_parent_token": "已知源父级 token",
|
|
241
|
+
"target_parent_token": "目标父级 token",
|
|
242
|
+
"returned_token": "命令返回 token",
|
|
243
|
+
"returned_node_token": "命令返回 Wiki node token",
|
|
244
|
+
"returned_parent_token": "返回父级 token",
|
|
245
|
+
"task_id": "异步任务 ID",
|
|
246
|
+
"next_command": "异步继续命令",
|
|
247
|
+
"created_by_workflow": "是否由本次 workflow 创建",
|
|
248
|
+
"rollback_eligible": "是否可进入自动恢复计划",
|
|
249
|
+
"status": "success|failed|pending",
|
|
250
|
+
"error": "失败原因"
|
|
251
|
+
}
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
字段说明:
|
|
255
|
+
|
|
256
|
+
| 字段 | 说明 |
|
|
257
|
+
|------|------|
|
|
258
|
+
| `journal_id` | 稳定日志行 ID。 |
|
|
259
|
+
| `plan_id` | 对应 `MovePlanItem`,用于把日志项匹配回原计划。 |
|
|
260
|
+
| `operation` | 细分操作类型,用于区分创建、移动和恢复。 |
|
|
261
|
+
| `resolved_command_args` | 从确认计划解析出的实际发送参数;用于审计 `created_by_plan:<plan_id>` 的唯一运行时替换。 |
|
|
262
|
+
| `resource_type` | 实际移动 / 恢复使用的资源类型。 |
|
|
263
|
+
| `input_token` / `input_node_token` | 命令实际输入的资源 token。 |
|
|
264
|
+
| `input_parent_token` | 执行前已知源父级 token。 |
|
|
265
|
+
| `target_parent_token` | 命令输入的目标父级 token。 |
|
|
266
|
+
| `returned_token` / `returned_node_token` | 命令返回的资源 token,恢复时作为当前源。 |
|
|
267
|
+
| `returned_parent_token` | 命令返回的当前父级 token。 |
|
|
268
|
+
| `task_id` / `next_command` | 异步任务跟踪信息。 |
|
|
269
|
+
| `created_by_workflow` | 是否由本次 workflow 创建,用于后续清理判断。 |
|
|
270
|
+
| `rollback_eligible` | 是否可进入自动恢复计划。 |
|
|
271
|
+
| `status` | 写操作状态,异步未完成时为 `pending`。 |
|
|
272
|
+
|
|
273
|
+
除非用户要求查看技术调试细节,否则不要展示完整原始命令输出。
|