From 2e94a6387cb2ca8022b1217ae5f00114fe492c1b Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Thu, 23 Jul 2026 11:40:58 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E8=A1=A5=E5=85=85=E8=BD=A6=E5=8A=A1?= =?UTF-8?q?=E7=9C=8B=E6=9D=BF=E8=81=8A=E5=A4=A9=E9=A6=96=E6=AC=A1=E6=89=93?= =?UTF-8?q?=E5=BC=80=E4=B8=8E=E5=AE=9E=E6=97=B6=E8=A7=92=E6=A0=87=E5=9B=9E?= =?UTF-8?q?=E5=BD=92=20#5180?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...情联系车务独立未读红点-修改接口-管理后台.md | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/changelogs-v2/2026-07/23_5180_订单详情联系车务独立未读红点-修改接口-管理后台.md b/changelogs-v2/2026-07/23_5180_订单详情联系车务独立未读红点-修改接口-管理后台.md index ce2950c..9e3fabd 100644 --- a/changelogs-v2/2026-07/23_5180_订单详情联系车务独立未读红点-修改接口-管理后台.md +++ b/changelogs-v2/2026-07/23_5180_订单详情联系车务独立未读红点-修改接口-管理后台.md @@ -91,3 +91,55 @@ FLEET:{orderId} -> 刷新联系车务角标 ## 5. 兼容性 新增响应字段为加性变更。未接入新字段的旧前端行为不变;前端接入后仍使用既有 `POST /admin/message/chat/open-fleet` 打开会话,`orderId` 必须使用数字雪花字符串,不能使用 `HL...` 展示号。 + +## 6. 2026-07-23 车务看板回归补充 + +本节针对车务管理员在「派单看板」点击「联系定制师」的反向会话入口。它使用车务团队 +`TEAM` 未读口径,不得复用定制师订单详情的 `PERSONAL` 字段。 + +### 6.1 首次点击必须立即打开真实会话 + +当前 `FleetBoard` 在首次点击时同一轮设置 `chatOrder` 和 `chatOpen=true`,随后通过 +`v-if="chatOrder"` 首次挂载 `ChatDrawer`。`ChatDrawer` 对 `props.show` 的 watcher 没有 +立即执行,因此组件以 `show=true` 首次挂载时不会调用 `open-fleet`,只显示默认「对端」 +和空线程;关闭后第二次发生 `false -> true` 才会正常调用接口。 + +前端需要修复该生命周期缺口: + +- `ChatDrawer` 首次挂载且 `show=true` 时必须执行一次 `openFlow()`;建议在现有合并 watcher + 保留 `flush: 'post'` 并增加 `immediate: true`,或采用等价的挂载处理。 +- 首次点击只能调用一次 `POST /admin/message/chat/open-fleet`,不能因 `show/bizId` 同轮变化 + 重复打开或让后一个请求取消前一个请求。 +- 首次接口响应后立即展示真实 `peerName/peerRoleLabel/thread`;加载完成前保持 loading, + 不能先落成可交互的「对端」空会话。 +- `show=false` 首次挂载不得调用打开接口;之后每次 `false -> true` 仍只调用一次。 + +### 6.2 车务看板未读角标必须实时刷新 + +车务看板列表、密集视图和详情抽屉虽然已经消费 `unreadMessageCount`,但当前只订阅 +`useFleetDispatchRefresh` 的派车业务信令,没有订阅聊天总线 `lastChatSignal`。因此定制师 +发来 `FLEET:{orderId}` 新消息后只能整页刷新才出现角标。 + +前端需要按房务模块的方式补齐: + +- 监听全局 `lastChatSignal`,仅处理当前页订单的 `FLEET:{orderId}` `im-chat/im-chat-read` + 信令;其他模块和其他订单不得误刷新角标。 +- 信令只表示“数据变化”,不能把顶部铃铛的合并未读数直接写进订单。应轻量重拉当前筛选/ + 分页的车务看板订单接口,并只合并对应行的 `unreadMessageCount`。 +- 轻量刷新不得切换全页 loading、闪白、重置筛选、分页或滚动位置;短时间连续信令需要合并。 +- 列表 `orders`、当前 `activeOrder`、当前 `chatOrder` 的同一订单计数必须一起收敛。 +- 打开会话收到 `read` 后立即本地清零,并使用读态纪元/刷新序号防止较早发出的异步刷新把 + 旧未读数重新覆盖回来。 +- 聊天抽屉正在打开当前会话时由 `ChatDrawer` 实时拉消息并标已读;看板 watcher 不得与其 + 抢写非零计数。 + +### 6.3 回归验收 + +- [ ] 清缓存后首次点击任一订单「联系定制师」,只发起一次 `open-fleet`,直接显示真实定制师及历史消息,不出现「对端」空会话。 +- [ ] 关闭再打开同一订单,行为与首次一致,不依赖“点第二次才正常”。 +- [ ] 定制师给该订单发送 1 条新消息后,车务不刷新页面即可在对应订单按钮看到房务同款红色数字角标。 +- [ ] 新消息只更新对应订单;其他订单、HOUSE 会话和顶部全局未读不得误点亮该按钮。 +- [ ] 实时更新角标时页面不闪 loading,筛选、分页、滚动位置保持不变。 +- [ ] 打开会话后角标立即清零;异步刷新晚返回也不会让红点复现。 +- [ ] 列表视图、密集视图、订单详情抽屉三处计数一致。 +- [ ] 增加组件测试:`ChatDrawer(show=true)` 首挂打开一次、`show=false` 首挂不打开、聊天信令轻量更新/已读竞态不复亮。