mirror of
https://github.com/kuaifan/dootask.git
synced 2026-08-01 02:45:58 +00:00
56 lines
2.0 KiB
Markdown
56 lines
2.0 KiB
Markdown
---
|
||
id: messenger.unread.concept
|
||
title: 未读数和标记未读
|
||
type: concept
|
||
feature: messenger
|
||
scope: end-user
|
||
locale: zh
|
||
aliases:
|
||
- 未读数
|
||
- 红点是什么
|
||
- 怎么显示未读数
|
||
- 标记未读
|
||
- 把消息标记为未读
|
||
- 群里多少条没看
|
||
related_tools: [get_message_list]
|
||
related_pages: [messenger, dialog_chat]
|
||
prerequisites: []
|
||
negative:
|
||
- 红点(dot)和未读数(unread)是两个独立机制:dot 是轻提示,unread 按消息粒度统计
|
||
- 未读数总上限受展示限制(一般 99+ 截断),实际 DB 仍精确
|
||
- 标记未读(mark_unread)只对自己有效,且打开会话会自动清除
|
||
last_verified: v1.7.90
|
||
---
|
||
|
||
# 未读数和标记未读
|
||
|
||
「未读数」(unread count)是每个用户在每个会话里未读消息的条数,按 dialog_msg_reads.read_at=null 实时计算。「标记未读」(mark_unread)是用户主动把已读会话再次置成未读,用于稍后处理。
|
||
|
||
## 定义
|
||
|
||
- unread:会话当前未读消息条数
|
||
- unread_one:是否仅有 1 条(用于「N 条新消息」气泡显示)
|
||
- mention:未读 + 被 @ 的消息条数
|
||
- mention_ids:被 @ 的消息 ID 列表
|
||
- mark_unread:用户主动标记未读(1=已标)
|
||
- dot:服务端轻量推送红点,刷新即清
|
||
|
||
## 关键属性
|
||
|
||
- 进入会话并向上滚动经过该消息 → 自动标已读
|
||
- 主动「标记已读 / 一键已读」→ chunkById 批量写 read_at
|
||
- 主动「标记未读」→ mark_unread=1,列表上显示红点;打开会话自动清除
|
||
- 免打扰开启 / 关闭都不影响未读计数
|
||
|
||
## 与会话列表显示的关系
|
||
|
||
- 未读 > 0 显示「N」徽标
|
||
- mention > 0 显示「@N」徽标,优先级高于普通未读
|
||
- mark_unread=1 显示红点但不显数字
|
||
|
||
## 不支持
|
||
|
||
- 不支持「将整个会话彻底清零未读但不打开」(必须打开或调用一键已读)
|
||
- 不支持按消息类型筛选未读(如只看图片未读)
|
||
- 不支持把未读数同步到其他客户端的"动态"提示
|