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

63 行
4.2 KiB
Markdown

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

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

# 站内信消息分类口径修正:订单消息=聊天会话 / 普通消息=系统通知(前端对接)
> 模块:消息中心 · 站内信(管理后台)
> 类型:**接口语义修正messageType 派生口径变更)+ 前端 tab 装配说明**
> 关联:工单 #4535 · 后端 PR #4537已合 dev-v3 + 测试服实测通过)
> 日期2026-06-28
---
## 一、背景:原分类口径错了
消息中心三个 tab `全部 / 订单消息 / 普通消息` 分类全乱。根因:后端拼了两套数据源——**收件箱**`/admin/message/list`,单条消息粒度)+ **会话列表**`/admin/message/chat/conversations`,会话粒度),且原「订单消息」是**按 bizType 派生**(挂订单/房务/退款/车务就算订单消息),把「核房记录已更新」这类**系统通知**也误标成了订单消息。
产品口径(已确认):
- **订单消息 = 实时聊天会话**(房务/定制师之间围绕订单的对话)
- **普通消息 = 所有系统通知**(核房记录/超时提醒等,挂着订单的也算普通)
- **全部 = 会话 + 通知 按时间合并**
## 二、后端改了什么
### 1. `GET /admin/message/list` 的 `messageType` 语义变更(按 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`,即可拿到全部系统通知(含核房记录等,现在都归普通消息)。
- **全部**之前只显示了收件箱通知、看不到聊天会话;现在请把「会话列表 + 普通消息」两个结果在前端按时间合并后展示(两种行结构不同,前端按卡片类型分别渲染即可)。
## 四、端点出参(未变,供参考)
- 会话列表 `ChatConversationRespVO``conversationKey / bizModule / bizId / peerName / peerRole / peerRoleLabel / unreadCount / lastMessagePreview / lastMessageAt / pendingReply` 等(字段不变)。
- 收件箱 `AdminMessageRespVO``messageId / categoryCode / title / content / link / bizId / bizType / isRead / createTime / messageType / messageTypeLabel / kind / senderName / conversationKey`(字段不变,仅 `messageType/Label` 派生口径如上变更)。