hl-api-changelog/changelogs-v2/2026-06/24_4326_房务聊天站内信4修复+未读实时SSE_管理后台.md
API Changelog Bot a6a18e9943 @
docs(changelog-v2): 房务聊天/站内信4修复+未读实时SSE (#4326)
@
2026-06-24 10:49:29 +08:00

51 行
4.2 KiB
Markdown

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# 房务聊天/站内信 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 分支本就正确。