# 订单详情「联系房务」按钮未读红点缺失 > 模块:管理后台 · 订单详情 `/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 | 全局未读提示,需要与订单维度按钮状态联动刷新 |