Skip to content

Commit 824aa9e

Browse files
authored
docs: add lark-drive permission governance workflow (#1292)
Change-Id: Ib62bd439669fec3e9d5589d1fbe266d3aef964a8
1 parent 9d4ae94 commit 824aa9e

5 files changed

Lines changed: 930 additions & 0 deletions

skills/lark-drive/SKILL.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ metadata:
1818
1919
## 快速决策
2020

21+
- 用户要**检查 / 治理文档权限、公开范围、链接分享、外部访问、复制下载权限、密级标签、owner 转移**,或要“权限风险报告、收紧权限、申请查看 / 编辑权限、转移 / 批量转移 owner”,必须先阅读 [`references/lark-drive-workflow.md`](references/lark-drive-workflow.md),再按其中 `Workflow Registry` 进入 [`permission_governance`](references/lark-drive-workflow-permission-governance.md) workflow。
2122
- 用户要**整理云盘 / 文件夹 / 文档库 / 知识库 / 个人文档库**,或要“盘点目录结构、找出未归档/临时/重复/空目录、生成整理方案”,必须先阅读 [`references/lark-drive-workflow-knowledge-organize.md`](references/lark-drive-workflow-knowledge-organize.md)。默认只生成方案;创建目录、移动资源、申请权限都必须单独确认。
2223
- 用户要**搜文档 / Wiki / 电子表格 / 多维表格 / 云空间(云盘/云存储)对象**,优先使用 `lark-cli drive +search`。自然语言里"最近我编辑过的"、"我创建的"(→ `--created-by-me`,原始创建者语义)、"我负责/owner 的"(→ `--mine`,owner 语义)、"最近一周我打开过的 xxx"、"某人 owner 的 docx" 等直接映射到扁平 flag,避免手写嵌套 JSON。
2324
- 用户要**根据文档评论定位正文位置**,例如 根据评论 review 文档、根据评论内容回看文档、区分多处相同引用文本时,对于 docx 类型(`file_type=docx`)的文档支持通过 `need_relation=true` 返回评论位置,其他类型暂不支持,具体用法需要先阅读 [`references/lark-drive-comment-location.md`](references/lark-drive-comment-location.md) 了解。
Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
# 权限治理 Command Patterns
2+
3+
本文只提供 `permission_governance` workflow 的具体 `lark-cli` 命令样例。只有进入对应 state 且需要拼装命令时才读取本文;命令可用范围仍以 [`lark-drive-workflow-permission-governance.md`](lark-drive-workflow-permission-governance.md)`Command Map` 为准。
4+
5+
## 目录
6+
7+
- `目标解析`
8+
- `目标发现`
9+
- `事实读取`
10+
- `写前确认与执行`
11+
12+
## 目标解析
13+
14+
```bash
15+
lark-cli drive +inspect --url '<url>' --as user --format json
16+
```
17+
18+
`/wiki/space/<space_id>` URL 是 Wiki space 范围,不要用 `drive +inspect` 当作单文档解析;直接提取 `space_id` 后进入 `DISCOVER_TARGETS`
19+
20+
## 目标发现
21+
22+
发现 Wiki space / node 下目标:
23+
24+
```bash
25+
lark-cli wiki +node-list \
26+
--space-id '<space_id>' --page-size 50 \
27+
--page-all --page-limit 0 \
28+
--as user --format json
29+
30+
lark-cli wiki +node-list \
31+
--space-id '<space_id>' --parent-node-token '<node_token>' --page-size 50 \
32+
--page-all --page-limit 0 \
33+
--as user --format json
34+
35+
lark-cli wiki +node-list \
36+
--space-id '<space_id>' --page-token '<PAGE_TOKEN>' --page-size 50 \
37+
--as user --format json
38+
```
39+
40+
解析返回时使用 `data.nodes`,不要读取顶层 `items``--page-limit 0` 表示当前层分页不设页数上限;`--page-all` 只覆盖当前 `space-id` / `parent-node-token` 范围内的分页,不会递归子节点。节点 `has_child=true` 时,必须继续以该节点的 `node_token` 作为 `--parent-node-token` 递归读取。
41+
42+
发现 Drive folder 下目标:
43+
44+
```bash
45+
lark-cli drive files list \
46+
--params '{"folder_token":"<folder_token>","page_size":200}' \
47+
--as user --format json
48+
49+
lark-cli drive files list \
50+
--params '{"folder_token":"<folder_token>","page_size":200,"page_token":"<PAGE_TOKEN>"}' \
51+
--as user --format json
52+
```
53+
54+
## 事实读取
55+
56+
读取 metadata:
57+
58+
```bash
59+
lark-cli drive metas batch_query \
60+
--data '{"request_docs":[{"doc_token":"<token>","doc_type":"<type>"}],"with_url":true}' \
61+
--as user --format json
62+
```
63+
64+
读取 public permission:
65+
66+
```bash
67+
lark-cli drive permission.public get \
68+
--params '{"token":"<token>","type":"<type>"}' \
69+
--as user --format json
70+
```
71+
72+
按需读取访问统计:
73+
74+
```bash
75+
lark-cli drive file.statistics get \
76+
--params '{"file_token":"<token>","file_type":"<type>"}' \
77+
--as user --format json
78+
```
79+
80+
按需读取最近访问记录:
81+
82+
```bash
83+
lark-cli drive file.view_records list \
84+
--params '{"file_token":"<token>","file_type":"<type>","page_size":50}' \
85+
--as user --format json
86+
```
87+
88+
## 写前确认与执行
89+
90+
patch 前检查 manage-public permission:
91+
92+
```bash
93+
lark-cli drive permission.members auth \
94+
--params '{"token":"<token>","type":"<type>","action":"manage_public"}' \
95+
--as user --format json
96+
```
97+
98+
patch 前读取当前 schema:
99+
100+
```bash
101+
lark-cli schema drive.permission.public.patch --format json
102+
```
103+
104+
只 patch 当前 schema 支持的字段;对 Wiki 目标,必须省略 schema 明确标注为 Wiki 不支持的字段。
105+
106+
显式确认后 patch public permission:
107+
108+
```bash
109+
lark-cli drive permission.public patch \
110+
--params '{"token":"<token>","type":"<type>"}' \
111+
--data '{"link_share_entity":"closed","external_access":false}' \
112+
--as user --yes --format json
113+
```
114+
115+
显式确认后申请访问权限:
116+
117+
```bash
118+
lark-cli drive +apply-permission \
119+
--token '<url>' \
120+
--perm view --remark '<reason>' --as user --format json
121+
122+
lark-cli drive +apply-permission \
123+
--token '<bare-token>' --type '<type>' \
124+
--perm view --remark '<reason>' --as user --format json
125+
```
126+
127+
owner 转移前读取当前 schema:
128+
129+
```bash
130+
lark-cli schema drive.permission.members.transfer_owner --format json
131+
```
132+
133+
显式确认后转移 owner:
134+
135+
```bash
136+
lark-cli drive permission.members transfer_owner \
137+
--params '{"token":"<token>","type":"<type>","need_notification":true,"remove_old_owner":false,"old_owner_perm":"full_access","stay_put":true}' \
138+
--data '{"member_id":"<new_owner_open_id>","member_type":"openid"}' \
139+
--as user --yes --format json
140+
```
141+
142+
`member_type` 只能使用当前 schema 支持的值:`email``openid``userid``appid`。如果用户只给姓名,必须先解析为明确身份或要求用户补充;不要猜测 `member_id`。批量 owner 转移必须逐个目标顺序执行。
143+
144+
secure label 写前枚举可用标签:
145+
146+
```bash
147+
lark-cli drive +secure-label-list \
148+
--page-size 10 --lang zh \
149+
--as user --format json
150+
151+
lark-cli drive +secure-label-list \
152+
--page-size 10 --page-token '<PAGE_TOKEN>' --lang zh \
153+
--as user --format json
154+
```
155+
156+
当用户给出的是标签名称、密级文案或不确定的 label ID 时,必须先枚举并解析为 `label-id`;写入确认里展示目标标签名称和 ID。找不到唯一标签时,停止并让用户选择,不要猜测。
157+
158+
显式确认后更新 secure label:
159+
160+
```bash
161+
lark-cli drive +secure-label-update \
162+
--token '<url>' \
163+
--label-id '<label-id>' --as user --format json
164+
165+
lark-cli drive +secure-label-update \
166+
--token '<bare-token>' --type '<type>' \
167+
--label-id '<label-id>' --as user --format json
168+
```

0 commit comments

Comments
 (0)