# 房务聊天/站内信 4 修复:收件箱去聊天行 + 房务侧 peer 名 + 内部留言留言池 + 未读总数实时 SSE > 变更类型:🔧 修复 ×3(纯后端,前端一般无需改)+ ✨ 实时能力 ×1(前端可接 SSE 停轮询) > 端类型:管理后台(站内信收件箱 / 房务管家·订单详情·聊天/内部留言 / 顶部未读角标) > 日期:2026-06-24 | 工单:#4325 | PR:#4326 | 服务:hl-user-service(双实例 8081/8181 已部署 health UP,A/C/D 测试服实测通过) --- ## 一、纯后端修复(前端无需改,知会) ### A. 站内信收件箱不再混入聊天消息(修复) 站内信收件箱列表 `GET /admin/message/list`、分类未读汇总、「全部已读/分类已读」原先漏过滤消息特性 `kind`,把 `kind=CHAT` 的 1:1 聊天消息(无标题)也查进了收件箱,显示成「空标题」行。 - 现收件箱口径只含 `kind=NOTIFY`(系统通知);聊天消息只走聊天 Tab(`/admin/message/chat/*`),不再污染收件箱列表/分类红点/一键已读。 - **顶部铃铛合并角标** `GET /admin/message/unread-count` 仍为「通知+聊天」合并口径,不变。 - **前端无需改**:收件箱列表此后只返真站内信,空标题聊天行自然消失。 ### B. 房务侧聊天「联系定制师」对方名显示错(修复) 房务**首次**抢某单后,房务侧聊天/会话列表里「对方(定制师)」的姓名快照被错写成房务自己的名字(如显示成 admin 自己);抢过其它单的房务走另一分支则正常。 - 现首次抢单建房务会话成员行时,对方名正确取**订单定制师**姓名。 - **前端无需改**:`peerName` 此后返订单真实定制师名。 - 注意:修复前已产生的错误会话行(历史脏数据)不会自动回填,下次该单抢单/转单/释放重绑时自动纠正。 ### C. 抢单后「内部留言」不再显示已转聊天的消息(修复) 房务详情「内部留言框」(`leaveMessages`,定制师抢单前发的留言)原先返回会话全部聊天行;抢单后这些留言已转为房务的聊天消息,却仍显示在内部留言框。 - 现内部留言框只显示**仍在留言池(无房务接收)**的留言:抢单后留言转给房务即从框内消失(进聊天),释放回池后重新出现,与留言池语义一致。 - **前端无需改**:`leaveMessages` 此后只含留言池消息。 --- ## 二、未读总数实时化(前端可接,停轮询) ### D. 合并未读总数并入 SSE 长连接(新增实时事件) 原 `GET /admin/message/unread-count`(通知+聊天合并未读)需前端轮询;现并入 SSE 长连接实时推送。 - **SSE 端点不变**:`GET /ws/admin-msg/stream`(已有长连接)。 - **新增事件**:`event: unread-count`,`data` 为 JSON,关键字段 `unreadCount`(合并未读总数,等同 `/admin/message/unread-count` 的值)、`type:"UNREAD"`、`adminId`。 - **推送时机**:①**建连即推一次**初始未读(前端首屏直接拿角标,无需先调 unread-count 接口)②**标记已读后实时推**更新(角标下降)③新消息到达仍走原 `message`(通知)/`im-chat`(聊天)事件,本就携带 `unreadCount`。 - **前端建议**:监听 SSE `unread-count` 事件刷新顶部角标,**停止轮询** `/admin/message/unread-count`(接口保留兜底,可在 SSE 断线时回退轮询)。 --- ## 三、前端待办(站内信「类型」列展示) 站内信列表项后端**早已返回**消息类型字段,前端未建列展示,建议加「类型」列: - `messageTypeLabel`(中文,如「订单消息」「普通消息」)/ `messageType`(ORDER/NORMAL);亦可用 `categoryCode`(SYSTEM 等)/`bizType`(ORDER/HOUSE/REFUND)。 - 直接渲染 `messageTypeLabel` 即可,无需新接口。 --- ## 验证说明(如实) - ✅ **测试服实测**:A 收件箱列表已只返 NOTIFY(聊天行消失);C 已抢单单的 `leaveMessages` 返空;D SSE 建连即收 `unread-count` 事件(`{adminId,unreadCount,type:UNREAD}`)。 - ✅ 本域单测全绿(chat/notification/sse/adminmessage);B 由单测覆盖(首次抢单对方名取定制师),线上 update 分支本就正确。