hl-api-changelog/changelogs-v2/2026-06/36_4535_站内信消息分类口径修正-订单消息=聊天会话-普通消息=系统通知-修改接口-管理后台.md

4.2 KiB

站内信消息分类口径修正:订单消息=聊天会话 / 普通消息=系统通知(前端对接)

模块:消息中心 · 站内信(管理后台) 类型:接口语义修正messageType 派生口径变更)+ 前端 tab 装配说明 关联:工单 #4535 · 后端 PR #4537已合 dev-v3 + 测试服实测通过) 日期2026-06-28


一、背景:原分类口径错了

消息中心三个 tab 全部 / 订单消息 / 普通消息 分类全乱。根因:后端拼了两套数据源——收件箱/admin/message/list,单条消息粒度)+ 会话列表/admin/message/chat/conversations,会话粒度),且原「订单消息」是按 bizType 派生(挂订单/房务/退款/车务就算订单消息),把「核房记录已更新」这类系统通知也误标成了订单消息。

产品口径(已确认):

  • 订单消息 = 实时聊天会话(房务/定制师之间围绕订单的对话)
  • 普通消息 = 所有系统通知(核房记录/超时提醒等,挂着订单的也算普通)
  • 全部 = 会话 + 通知 按时间合并

二、后端改了什么

1. GET /admin/message/listmessageType 语义变更(按 kind 派生)

messageType / messageTypeLabel 返回字段、以及 messageType 入参过滤,全部改为按消息特性 kind 派生(不再看 bizType

kind messageType messageTypeLabel
CHAT(实时聊天) ORDER 订单消息
NOTIFY(系统通知) NORMAL 普通消息

⚠️ 行为变化:核房记录、询单超时等系统通知(kind=NOTIFY)的 messageType 由原来的 ORDER(订单消息)改为 NORMAL(普通消息)。测试服已实测:收件箱里系统通知现在恒返 messageType=NORMAL / messageTypeLabel=普通消息

入参 messageType 过滤同步改为按 kind

  • messageType=NORMAL → 返回所有系统通知kind=NOTIFY
  • messageType=ORDER → 返回聊天消息(kind=CHAT,单条粒度)
  • 不传 → 系统通知 + 聊天混排(不变)

2. GET /admin/message/chat/conversations 过滤空占位会话

会话列表不再返回「没有任何消息的空占位会话」(如抢单前 pending 会话:对方为空、无最近消息、无时间)。原先列表里那种 HOUSE:xxx、对方=「—」、最近消息=「-」的空白行已消失。测试服实测:会话列表行均带 lastMessageAt 与对方信息。

三、前端三个 tab 怎么接(核心)

三个 tab 用两个端点装配,按性质分类:

Tab 数据源 粒度
订单消息 GET /admin/message/chat/conversations(会话列表) 会话粒度(一个订单/对话一行,团号·对方·最近消息·未读)
普通消息 GET /admin/message/list?messageType=NORMAL 消息粒度(系统通知逐条,标题·内容·时间)
全部 上面两者按时间合并展示 会话行 + 通知行混排,按各自的最近时间(会话用 lastMessageAt、通知用 createTime)倒序

要点:

  • 订单消息不要再用收件箱(/admin/message/list)去取——那是单条消息粒度,取不到「会话卡」。用会话列表端点(你们现在订单消息 tab 已经是这个,保持即可)。
  • 普通消息改调 /admin/message/list?messageType=NORMAL,即可拿到全部系统通知(含核房记录等,现在都归普通消息)。
  • 全部之前只显示了收件箱通知、看不到聊天会话;现在请把「会话列表 + 普通消息」两个结果在前端按时间合并后展示(两种行结构不同,前端按卡片类型分别渲染即可)。

四、端点出参(未变,供参考)

  • 会话列表 ChatConversationRespVOconversationKey / bizModule / bizId / peerName / peerRole / peerRoleLabel / unreadCount / lastMessagePreview / lastMessageAt / pendingReply 等(字段不变)。
  • 收件箱 AdminMessageRespVOmessageId / categoryCode / title / content / link / bizId / bizType / isRead / createTime / messageType / messageTypeLabel / kind / senderName / conversationKey(字段不变,仅 messageType/Label 派生口径如上变更)。