# 订单详情「联系房务」按钮未读红点缺失

> 模块：管理后台 · 订单详情 `/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 | 全局未读提示，需要与订单维度按钮状态联动刷新 |
