From 324be57c7a1058e61bf0104fb6cd17b2f0a99110 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Mon, 5 Oct 2026 22:21:48 +0800 Subject: [PATCH] =?UTF-8?q?docs(02):=20=E5=AE=A2=E6=88=B7=E7=AB=AF?= =?UTF-8?q?=E7=99=BB=E8=AE=B0=E2=80=94=E2=80=94=E3=80=8C=E9=9D=9E=E6=BF=80?= =?UTF-8?q?=E6=B4=BB=E4=BC=9A=E8=AF=9D=E7=BA=A2=E7=82=B9=E4=B8=8D=E5=AE=9E?= =?UTF-8?q?=E6=97=B6=E5=A2=9E=E9=95=BF=E3=80=8D=E7=BC=BA=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E6=9C=AA=E8=AF=BB=E5=A2=9E=E9=87=8F=E9=9D=A2=EF=BC=88message?= =?UTF-8?q?=5Fpersisted=20=E4=B8=8D=E5=B8=A6=20unreadCount=EF=BC=89?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E8=AF=B4=E6=98=8E=E6=88=91=E6=96=B9=E5=85=88?= =?UTF-8?q?=E7=94=A8=E5=AE=A2=E6=88=B7=E7=AB=AF=E8=87=AA=E6=84=88=E9=A1=B6?= =?UTF-8?q?=E7=9D=80=E3=80=81=E5=AE=83=E4=B8=8D=E8=83=BD=E6=9B=BF=E4=BB=A3?= =?UTF-8?q?=E5=A2=9E=E9=87=8F=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- devdocs/02-前后端协同事项.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/devdocs/02-前后端协同事项.md b/devdocs/02-前后端协同事项.md index ffd0796..55c58c5 100644 --- a/devdocs/02-前后端协同事项.md +++ b/devdocs/02-前后端协同事项.md @@ -610,3 +610,22 @@ 4. 若你们认为**该开独立端点**而不是塞进消息 DTO,也说一声,我方按你们定的来。 **影响面(我方)**:目前 `ToolCard` 在「已落库消息」那条渲染路径上**是不可达代码**(已落库消息的渲染器签名里没有 tools 参数)。字段一到,我方接线即可;**不需要你们动客户端**。 + +--- + +## 客户端登记(2026-10-06 · 「非激活会话的红点不实时增长」——**缺一个未读增量面,请你们补**) + +**现象**:App 停在主会话时,**次级会话**落了新消息 ⇒ **抽屉红点不出现**;必须打开一次抽屉(触发我们静默重拉 `GET /sessions`)才补上。 + +**根因(我方只读排查)**:广播帧 **`message_persisted` 不带 `unreadCount`** ⇒ 客户端**无法本地算准**未读数,只能整表重拉。 +证据:我方 `ui/sessions/SessionsViewModel.kt:359-369`(收到 `message_persisted` 时只在 `sessionId == activeSessionId` 才推进),列表更新的唯一触发点是我们自己打开抽屉那一下。 +**你们设计文档里也记着这条遗留**:`Cyrene_v2/DevDocs/design/16-会话持久化与主次级会话.md:103`(「非激活会话的红点不会实时增长……需产品决策」)。 + +**请你们补的**(形状你们定;缺席必须 = 老行为逐字不变): +1. 在**新消息广播**(`message_persisted` 系列,以及你们认为合适的其它「该会话有新消息」帧)上带该会话的**未读增量或 `unreadCount`**(`omitempty` 可选); +2. 语义要说清:它是**绝对未读数**还是**增量**、以**谁**的已读游标为基准(多端/多角色时别让两端互相清零); +3. 若你们认为「不该在广播里带」,另一个可选面是**批量查询**(一次问多个会话的未读),也比现在整表重拉省。 + +**我方现状(在办)**:先用**客户端自愈**顶着——收到非激活会话的新消息时**节流地静默重拉一次**列表(不是造数,只是缩短它出现的延迟)。**这不能替代你们的增量面**:它每次仍是一次完整 `GET /sessions`,会话多了会变贵。 + +**影响面(我方)**:抽屉红点滞后(用户以为没人说话)。**不需要你们动客户端。**