diff --git a/changelogs-v2/2026-06/36_4535_站内信消息分类口径修正-订单消息=聊天会话-普通消息=系统通知-修改接口-管理后台.md b/changelogs-v2/2026-06/36_4535_站内信消息分类口径修正-订单消息=聊天会话-普通消息=系统通知-修改接口-管理后台.md new file mode 100644 index 0000000..3c75e49 --- /dev/null +++ b/changelogs-v2/2026-06/36_4535_站内信消息分类口径修正-订单消息=聊天会话-普通消息=系统通知-修改接口-管理后台.md @@ -0,0 +1,62 @@ +# 站内信消息分类口径修正:订单消息=聊天会话 / 普通消息=系统通知(前端对接) + +> 模块:消息中心 · 站内信(管理后台) +> 类型:**接口语义修正(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` 派生口径如上变更)。