Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions skills/lark-drive/references/lark-drive-comments-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,29 @@ lark-cli drive file.comments list --params '{"file_token":"xxx","file_type":"doc
lark-cli drive file.comments list --params '{"file_token":"xxx","file_type":"docx"}'
```

### 活跃评论口径(与 UI 侧栏对齐)

`is_solved:false` 只排除了已解决评论,**还不等于用户在文档 UI 侧栏看到的评论**。当评论引用的正文被删除或改写后,评论会变成“孤立锚”:UI 侧栏自动隐藏它,但 API 仍会返回。判断依据是 `need_relation=true` 返回的 `relation.content_deleted`(字段详解见 [`lark-drive-comment-location.md`](lark-drive-comment-location.md))。

因此,要拿到“用户当前实际可见的活跃评论”,必须按两个维度过滤:

> 活跃评论 = `is_solved=false`(未解决)**且** `relation.content_deleted != true`(锚未删)

```bash
# 活跃评论:未解决 + 锚未删,等于 UI 侧栏可见
lark-cli drive file.comments list \
--params '{"file_token":"xxx","file_type":"docx","is_solved":false,"need_relation":true,"page_size":100}' \
-q '[.data.items[] | select(.relation.content_deleted != true)]'
```

例如某 docx 共 45 条评论 = 8 条已解决 + 16 条孤立锚(`content_deleted=true`)+ 21 条活跃;只有最后 21 条会出现在 UI 侧栏。如果不区分这三类,很容易把 45 误当成活跃评论数。

## 评论卡片与统计

- `drive file.comments list` 返回的 `items` 是评论卡片列表,每个 `item` 对应用户界面中的一张评论卡片,不是平铺的互动消息列表。
- 创建第一条评论时会同时创建该卡片里的第一条 reply;真正承载正文的是 `item.reply_list.replies`,其中第一条 reply 在用户视角下就是这张卡片里的“评论本身”。
- 统计“评论数”或“评论卡片数”:统计 `items` 长度;全量统计时对所有分页返回的 `items` 长度累加。
- 统计“活跃评论数”(用户 UI 侧栏可见)时,先按上文“活跃评论口径”排除 `is_solved=true` 和 `relation.content_deleted=true`,否则会把已解决评论和孤立锚评论计入,导致数值虚高。
- 统计“回复数”:统计所有 `item.reply_list.replies` 长度之和,再减去 `items` 长度。
- 统计“总互动数”:统计所有 `item.reply_list.replies` 长度之和,包含每张评论卡片里的首条评论。
- 如果 `item.has_more=true`,说明该评论卡片下还有更多回复未包含在当前返回中;需要继续调用 `drive file.comment.replys list` 拉全后,再做全量回复数或总互动数统计。
Expand Down
Loading