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