diff --git a/skills/lark-drive/references/lark-drive-comments-guide.md b/skills/lark-drive/references/lark-drive-comments-guide.md index 71c4cb396..da88d0ffb 100644 --- a/skills/lark-drive/references/lark-drive-comments-guide.md +++ b/skills/lark-drive/references/lark-drive-comments-guide.md @@ -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` 拉全后,再做全量回复数或总互动数统计。