diff --git a/changelogs-v2/2026-07/10_订单详情联系房务按钮未读红点缺失-前端修复-管理后台.md b/changelogs-v2/2026-07/10_订单详情联系房务按钮未读红点缺失-前端修复-管理后台.md new file mode 100644 index 0000000..bf41776 --- /dev/null +++ b/changelogs-v2/2026-07/10_订单详情联系房务按钮未读红点缺失-前端修复-管理后台.md @@ -0,0 +1,86 @@ +# 订单详情「联系房务」按钮未读红点缺失 + +> 模块:管理后台 · 订单详情 `/order-v2/detail/{orderId}` · 行程安排 · 住宿安排 +> 类型:**前端修复(复用既有站内信/会话未读数据)** +> 日期:2026-07-02 +> 背景:顶部站内信铃铛已有未读红点,站内信列表也能看到当前订单会话未读,但订单详情住宿安排卡片里的「联系房务」按钮没有红点提示,导致用户在订单详情内看不到该订单会话待处理状态。 + +## 问题现象 + +测试订单示例: + +- 订单:`HL20260702100458640` +- 页面:`/order-v2/detail/2072501756742242305` +- 顶部铃铛:显示未读红点 `1` +- 站内信列表:存在未读订单会话 `【订单会话】HL20260702100458640 测多旅客五` +- 订单详情:住宿安排卡片「联系房务」按钮未显示红点 + +## 【前端 · 管理后台】需改动 + +### 1. 「联系房务」按钮展示订单维度未读红点 + +在订单详情页住宿安排卡片中,只要当前订单存在未读房务/订单会话消息,「联系房务」按钮必须展示未读红点或未读数量。 + +建议规则: + +```ts +const showHouseChatUnread = + currentOrderUnreadCount > 0 +``` + +展示形式: + +- `currentOrderUnreadCount === 1`:显示红点或数字 `1` +- `currentOrderUnreadCount > 1`:显示数量,超过上限可显示 `99+` +- `currentOrderUnreadCount === 0`:隐藏红点 + +### 2. 未读数据源口径 + +复用现有站内信/会话未读能力,不需要新增后端接口。 + +前端需要按**订单维度**映射未读,不要只看顶部全局未读数: + +- 顶部铃铛红点是全局未读,只能说明“有未读”,不能说明当前订单按钮是否应亮。 +- 订单详情按钮需要按当前 `orderId` / `orderNo` / 会话业务 key 匹配对应会话未读数。 +- 如果已有会话列表、未读统计或站内信列表中包含 `orderId`、`orderNo`、`bizId`、`conversationId` 等字段,优先使用这些字段做精确映射。 +- 如果当前接口没有可稳定映射到订单的字段,前端需要反馈缺字段,不能静默不展示红点。 + +### 3. 点击后的状态同步 + +用户点击「联系房务」进入会话并读完消息后,需要同步刷新: + +- 当前订单「联系房务」按钮红点 +- 顶部站内信铃铛红点/数量 +- 站内信列表该会话未读状态 + +建议在以下时机刷新: + +- 订单详情页进入时 +- 打开/关闭聊天窗口后 +- 站内信 SSE / 轮询 / unread-count 更新后 +- 手动点击“全部已读”后 + +### 4. 适用范围 + +本次明确要求修复: + +- 住宿安排卡片:`联系房务` + +如果「联系车务」「联系服务」使用同一套聊天按钮组件,也应复用相同未读红点逻辑,避免只修房务按钮造成同类问题残留。 + +## 验收标准 + +| 场景 | 期望 | +|------|------| +| 当前订单有 1 条未读订单会话 | 顶部铃铛显示红点,订单详情「联系房务」按钮也显示红点/数字 `1` | +| 当前订单无未读,但其他订单有未读 | 顶部铃铛可显示红点,当前订单「联系房务」按钮不显示红点 | +| 点击「联系房务」并读完消息 | 当前按钮红点消失,顶部铃铛和站内信列表同步更新 | +| 切换订单详情 | 红点按新订单重新计算,不沿用上一个订单状态 | + +## 涉及页面/能力 + +| 页面/能力 | 说明 | +|-----------|------| +| `/order-v2/detail/{orderId}` | 订单详情住宿安排卡片「联系房务」按钮 | +| `/notification/my-messages` | 站内信列表已有订单会话未读状态 | +| 顶部铃铛 unread-count | 全局未读提示,需要与订单维度按钮状态联动刷新 |