From bdb6ac7e925a6ce5e6c9b7e55c3b5d344b3e8a50 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Thu, 23 Jul 2026 10:22:16 +0800 Subject: [PATCH] docs: hand off fleet personal unread badge #5180 --- ...¯¦æƒ…è”系车务独立未读红点-修改接å£-管ç†åŽå°.md | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 changelogs-v2/2026-07/23_5180_订å•详情è”系车务独立未读红点-修改接å£-管ç†åŽå°.md diff --git a/changelogs-v2/2026-07/23_5180_订å•详情è”系车务独立未读红点-修改接å£-管ç†åŽå°.md b/changelogs-v2/2026-07/23_5180_订å•详情è”系车务独立未读红点-修改接å£-管ç†åŽå°.md new file mode 100644 index 0000000..51010af --- /dev/null +++ b/changelogs-v2/2026-07/23_5180_订å•详情è”系车务独立未读红点-修改接å£-管ç†åŽå°.md @@ -0,0 +1,93 @@ +# 订å•详情「è”系车务ã€ç‹¬ç«‹æœªè¯»çº¢ç‚¹ + +> 日期:2026-07-23 +> å·¥å•:HL #5180 +> å½±å“范围:管ç†åŽå°è®¢å•详情 → 行程安排 → 用车安排;èŠå¤© SSE å®žæ—¶çŠ¶æ€ +> 状æ€ï¼šå‰ç«¯å¾…å¤„ç† + +## 1. 问题与å£å¾„ + +车务通过 `FLEET:{orderId}` 会è¯ç»™å®šåˆ¶å¸ˆå‘逿¶ˆæ¯åŽï¼Œé¡¶éƒ¨å…¨å±€é“ƒé“›èƒ½æ˜¾ç¤ºæœªè¯»ï¼Œä½†å½“å‰è®¢å•「è”ç³»è½¦åŠ¡ã€æŒ‰é’®æ²¡æœ‰è®¢å•ç»´åº¦çº¢ç‚¹ã€‚æˆ¿åŠ¡æŒ‰é’®å·²æœ‰åŒæ¬¾èƒ½åŠ›ï¼Œæœ¬æ¬¡è½¦åŠ¡å¿…é¡»å¤ç”¨ç›¸åŒçš„角标样å¼ã€å®žæ—¶åˆ·æ–°å’Œå·²è¯»æ¸…零交互。 + +房务与车务未读是两个独立业务会è¯ï¼Œç¦æ­¢ç»§ç»­å…±ç”¨ä¸€ä¸ªå­—段: + +- `unreadMessageCount`:当å‰ç™»å½•å®šåˆ¶å¸ˆåœ¨æœ¬è®¢å• `HOUSE:{orderId}` 会è¯çš„æœªè¯»æ•°ï¼Œåªä¾›ã€Œè”系房务ã€ä½¿ç”¨ã€‚ +- `fleetUnreadMessageCount`:当å‰ç™»å½•å®šåˆ¶å¸ˆåœ¨æœ¬è®¢å• `FLEET:{orderId}` 会è¯çš„æœªè¯»æ•°ï¼Œåªä¾›ã€Œè”系车务ã€ä½¿ç”¨ã€‚ +- 顶部铃铛全局未读åªèƒ½è¯´æ˜Žâ€œå­˜åœ¨æœªè¯»â€ï¼Œä¸èƒ½ä½œä¸ºå½“å‰è®¢å•按钮是å¦äº®çº¢ç‚¹çš„åˆ¤æ–­ä¾æ®ã€‚ + +## 2. 接å£å˜æ›´ + +```http +GET /v3/admin/order/{id}/itinerary +``` + +å“应新增: + +```json +{ + "unreadMessageCount": 0, + "fleetUnreadMessageCount": 2, + "canContactFleet": true, + "contactFleetDisabledReason": null +} +``` + +| 字段 | 类型 | 说明 | +| --- | --- | --- | +| `unreadMessageCount` | Integer | HOUSE 订å•ä¼šè¯æœªè¯»ï¼›æ—¢æœ‰å­—段,语义ä¸å˜ | +| `fleetUnreadMessageCount` | Integer | FLEET 订å•ä¼šè¯æœªè¯»ï¼›æ–°å¢žå­—段;无会è¯ã€æœªç™»å½•或软ä¾èµ–é™çº§æ—¶ä¸º `0` | + +两个字段必须分别消费,ä¸èƒ½ç”¨ `fleetUnreadMessageCount || unreadMessageCount` 一类兜底混用,å¦åˆ™æˆ¿åŠ¡æ¶ˆæ¯ä¼šé”™è¯¯ç‚¹äº®è½¦åŠ¡æŒ‰é’®ã€‚ + +åŽç«¯å†…éƒ¨å–æ•°åŒæ—¶å¢žåŠ å¯é€‰ `unreadScope`: + +- FLEET ä¸ä¼ æˆ–ä¼  `TEAM`ï¼šä¿æŒè½¦åŠ¡çœ‹æ¿æ—¢æœ‰å›¢é˜Ÿå…±äº«æœªè¯»å£å¾„。 +- FLEET ä¼  `PERSONAL`:按指定 `adminId` 返回车务å‘给该定制师的个人未读;订å•详情的 `fleetUnreadMessageCount` 使用此å£å¾„。 +- HOUSEï¼šä»æŒ‰æˆå‘˜è¡Œä¸ªäººæœªè¯»ç»Ÿè®¡ï¼Œè¡Œä¸ºä¸å˜ã€‚ + +该字段属于 order-v3 → user-service 内部契约,管ç†åŽå°æ— éœ€ç›´æŽ¥ä¼ é€’。 + +## 3. å‰ç«¯å®žçŽ°è¦æ±‚ + +### 3.1 按钮角标 + +`VehicleArrangeCard.vue` 的「è”ç³»è½¦åŠ¡ã€æŒ‰é’®æŒ‰ `RoomArrangeCard.vue` 原样å¤ç”¨ `NBadge`: + +- `fleetUnreadMessageCount > 0` 时显示红色数字角标。 +- `max=99`,`0` 自动éšè—。 +- 按钮ç¦ç”¨æ—¶ä»å¯ä¿ç•™æœªè¯»æç¤ºï¼Œä¸èƒ½å› ä¸º `canContactFleet=false` é™é»˜åžæŽ‰æ—¢æœ‰ä¼šè¯æœªè¯»ï¼›æ˜¯å¦å…è®¸é‡æ–°å¼€ä¼šè¯ç»§ç»­éµå®ˆåŽç«¯é—¨æŽ§ã€‚ +- æ ·å¼ã€åç§»ã€å°ºå¯¸ä¸Žã€Œè”系房务ã€ä¿æŒä¸€è‡´ï¼Œä¸æ–°å¢žå¦ä¸€å¥—红点 CSS。 + +`v3Adapter.js` 需把行程接å£çš„ `fleetUnreadMessageCount` 映射为独立本地字段(建议 `itineraryFleetUnreadCount`),ä¸è¦è¦†ç›–现有 `itineraryUnreadCount`。 + +### 3.2 SSE 实时刷新 + +订å•详情现有 `lastChatSignal` 监å¬åªåŒ¹é… `HOUSE:{orderId}`。需è¦åŒæ—¶æ”¯æŒï¼š + +```text +HOUSE:{orderId} -> 刷新è”系房务角标 +FLEET:{orderId} -> 刷新è”系车务角标 +``` + +收到当å‰è®¢å•çš„ `FLEET:{orderId}` `im-chat` / `im-chat-read` 信令åŽï¼Œè½»é‡é‡æ‹‰è¡Œç¨‹æŽ¥å£å¹¶åªåˆå¹¶ `fleetUnreadMessageCount`ï¼›ä¸èƒ½æ•´é¡µé—ªéª¨æž¶å±ï¼Œä¹Ÿä¸èƒ½æŠŠå…¶ä»–订å•的全局未读数套到当å‰è®¢å•。 + +### 3.3 å·²è¯»æ¸…é›¶ä¸Žç«žæ€ + +- 打开「è”系车务ã€å¹¶æ”¶åˆ°èŠå¤©æŠ½å±‰ `read` 事件åŽï¼Œç«‹å³æŠŠå½“å‰è®¢å•车务角标本地清零。 +- æˆ¿åŠ¡å·²è¯»åªæ¸… HOUSE å­—æ®µï¼Œè½¦åŠ¡å·²è¯»åªæ¸… FLEET 字段,互ä¸å½±å“。 +- å¤ç”¨æˆ¿åŠ¡çŽ°æœ‰ `chatReadEpoch`(或等价版本å·ï¼‰é˜²ç«žæ€ï¼šå·²è¯»æœŸé—´è¾ƒæ—©å‘出的刷新请求返回时,ä¸å¾—æŠŠæ—§æœªè¯»æ•°é‡æ–°è¦†ç›–æˆçº¢ç‚¹ã€‚ +- 切æ¢è®¢å•时按新 `orderId` é‡ç®—,ä¸èƒ½æ²¿ç”¨ä¸Šä¸€ä¸ªè®¢å•角标。 + +## 4. 验收场景 + +- [ ] 当å‰è®¢å•无未读时,「è”系车务ã€ä¸æ˜¾ç¤ºè§’标。 +- [ ] 车务给本å•定制师å‘é€ 1 æ¡æ¶ˆæ¯åŽï¼Œä¸åˆ·æ–°é¡µé¢ï¼Œé¡¶éƒ¨é“ƒé“›å’Œæœ¬å•「è”系车务ã€éƒ½ç«‹å³æ˜¾ç¤ºçº¢ç‚¹/æ•°å­— `1`。 +- [ ] 当å‰è®¢å•无车务未读ã€å…¶ä»–è®¢å•æœ‰è½¦åŠ¡æœªè¯»æ—¶ï¼Œé¡¶éƒ¨é“ƒé“›å¯äº®ï¼Œä½†å½“å‰è®¢å•「è”系车务ã€ä¸äº®ã€‚ +- [ ] 当å‰è®¢å•åªæœ‰æˆ¿åŠ¡æœªè¯»æ—¶ï¼Œåªç‚¹äº®ã€Œè”系房务ã€ï¼Œä¸å¾—点亮「è”系车务ã€ã€‚ +- [ ] 打开本å•车务会è¯å¹¶è¯»å®ŒåŽï¼Œã€Œè”系车务ã€è§’æ ‡ç«‹å³æ¶ˆå¤±ï¼Œé¡¶éƒ¨é“ƒé“›ä¸Žç«™å†…ä¿¡åˆ—è¡¨åŒæ­¥æ”¶æ•›ã€‚ +- [ ] 已读æ“作与 SSE åˆ·æ–°å¹¶å‘æ—¶ï¼Œæ—§è¯·æ±‚ä¸ä¼šè®©å·²æ¸…零红点å¤çŽ°ã€‚ +- [ ] 角标样å¼ã€æœ€å¤§æ•°å­—和按钮布局与房务模å—一致。 + +## 5. 兼容性 + +新增å“åº”å­—æ®µä¸ºåŠ æ€§å˜æ›´ã€‚未接入新字段的旧å‰ç«¯è¡Œä¸ºä¸å˜ï¼›å‰ç«¯æŽ¥å…¥åŽä»ä½¿ç”¨æ—¢æœ‰ `POST /admin/message/chat/open-fleet` 打开会è¯ï¼Œ`orderId` 必须使用数字雪花字符串,ä¸èƒ½ä½¿ç”¨ `HL...` 展示å·ã€‚