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

4.2 KiB

房务聊天/站内信 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-countdata 为 JSON,关键字段 unreadCount(合并未读总数,等同 /admin/message/unread-count 的值)、type:"UNREAD"adminId
  • 推送时机:①建连即推一次初始未读(前端首屏直接拿角标,无需先调 unread-count 接口)②标记已读后实时推更新(角标下降)③新消息到达仍走原 message(通知)/im-chat(聊天)事件,本就携带 unreadCount
  • 前端建议:监听 SSE unread-count 事件刷新顶部角标,停止轮询 /admin/message/unread-count(接口保留兜底,可在 SSE 断线时回退轮询)。

三、前端待办(站内信「类型」列展示)

站内信列表项后端早已返回消息类型字段,前端未建列展示,建议加「类型」列:

  • messageTypeLabel(中文,如「订单消息」「普通消息」)/ messageTypeORDER/NORMAL;亦可用 categoryCodeSYSTEM 等)/bizTypeORDER/HOUSE/REFUND
  • 直接渲染 messageTypeLabel 即可,无需新接口。

验证说明(如实)

  • 测试服实测A 收件箱列表已只返 NOTIFY聊天行消失;C 已抢单单的 leaveMessages 返空;D SSE 建连即收 unread-count 事件({adminId,unreadCount,type:UNREAD})。
  • 本域单测全绿chat/notification/sse/adminmessage;B 由单测覆盖(首次抢单对方名取定制师),线上 update 分支本就正确。