diff --git a/changelogs-v2/2026-09/23_8228_HOLD派单降级车务站内信补齐跳转链接指向车务看板-修复-管理后台.md b/changelogs-v2/2026-09/23_8228_HOLD派单降级车务站内信补齐跳转链接指向车务看板-修复-管理后台.md new file mode 100644 index 00000000..2852b888 --- /dev/null +++ b/changelogs-v2/2026-09/23_8228_HOLD派单降级车务站内信补齐跳转链接指向车务看板-修复-管理后台.md @@ -0,0 +1,93 @@ +--- +schema: "hl-changelog/v2" +ticket: "8228" +title: "HOLD 派单降级车务站内信补齐跳转链接,指向车务看板" +consumer: "admin" +author: "wx(GIT)" +change_type: "修复" +backend_status: "deployed" +gateway_status: "not_required" +frontend_status: "not_required" +frontend_owner: "" +frontend_ref: "" +target_release: "" +verified_at: "" +status_note: "接口路径、请求参数、响应字段均未变,变的是 admin_message 表里这一类消息 link 字段的取值。事件识别特征为 event_code=FLEET_DISPATCH_CREATED、biz_type=FLEET_ASSIGNMENT_HOLD、category_code=SYSTEM,触发条件是 fleet 派单进 HOLD 且给司机的短信通道返回 SKIP_NO_TEMPLATE(HOLD 占位无行程短链 code,或短信模板未配置),这条降级分支不看该事件的 inapp_enabled 开关。user-service 用 Flyway V20260923_001 给该事件补上链接模板 /fleet/board?orderId=${orderId},fleet 发出的 HOLD 通知在能确定唯一订单时于 extras 里带 orderId。PR #8299 已合并(3227d495c),user-service 与 fleet 均已部署测试服,测试服实测该事件配置已是该模板。backend_status=deployed。gateway_status=not_required,无新增路由,消息仍走既有列表接口读取。frontend_status=not_required,前端零改动,link 走既有 resolveJumpLink 逻辑;车务看板当前不读取 orderId 这个 query,两种取值均落在看板首页;存量消息不回填,link 仍为空。" +updated_at: "2026-09-23" +base: "dev-v3" +--- + +# 车务通知: HOLD 派单降级车务站内信补齐跳转链接 + +> **存放目录**: 二期(order-v3)→ `changelogs-v2/2026-09/` +> +> **服务**: hl-user-service(通知配置)+ hl-fleet-service(消息 extras) +> **PR**: [#8299](https://git.1814.love:8443/wx/HL/pulls/8299) +> **Issue**: [#8228](https://git.1814.love:8443/wx/HL/issues/8228) +> **日期**: 2026-09-23 +> **影响范围**: 站内信列表中 `event_code=FLEET_DISPATCH_CREATED` 且 `biz_type=FLEET_ASSIGNMENT_HOLD` 的记录的 `link` 字段取值;读取这些消息的接口本身未变 + +--- + +## ⚠️ 关键变化 + +**这一类“HOLD 派单降级车务”站内信的 `link` 字段现在有值了。** 消息的识别特征、触发条件都没变;变的只是这一类消息的跳转地址:本次上线之前发出的消息 `link` 为空,之后新产生的按下文规则带跳转链接。 + +--- + +## 一、触发条件与消息识别(未变) + +fleet 派单进入 HOLD 状态、给司机的短信通道返回 `SKIP_NO_TEMPLATE`(HOLD 占位没有行程短链 code,或短信模板未配置)时,通知中心按既有规则降级为给车务角色(`VEHICLE_MANAGER`)的后台管理员发一条站内信。这条消息在 `admin_message` 表里的识别特征: + +- `event_code = FLEET_DISPATCH_CREATED` +- `biz_type = FLEET_ASSIGNMENT_HOLD` +- `category_code = SYSTEM` + +以上触发条件和识别特征本次**都没有变**。这条降级分支也**不看**该事件的 `inapp_enabled` 开关——测试服上这个开关当前是 0,降级站内信照样会发,不受它影响。 + +--- + +## 二、`link` 取值规则(本次新增) + +| 场景 | `link` 取值 | +|---|---| +| fleet 能确定唯一订单 | `/fleet/board?orderId=<订单ID>` | +| fleet 确定不了唯一订单(同一派车组的行跨了两张订单,或行上缺订单 ID) | `/fleet/board?orderId=`(query 值为空,不会报错) | + +实现方式:user-service 用 Flyway `V20260923_001` 给该事件的通知配置补上链接模板 `/fleet/board?orderId=${orderId}`;fleet 发出的 HOLD 通知在能确定唯一订单时于 extras 里带上 `orderId`,通知中心降级为站内信时用它渲染出最终链接。 + +--- + +## 三、边界 + +1. **存量消息不回填**:本次只改配置和消息生成逻辑,不动已经发出的历史消息。测试服上 2026-08-05 至 2026-08-08 期间发出的 234 条这类站内信 `link` 仍为空,前端 `resolveJumpLink` 对空 link 返回 `null`,这些消息依旧没有跳转入口;只有之后新产生的才带链接。 +2. **车务看板当前不读取 `orderId` 这个 query**:`hl-ui`(`origin/v2.1` @ `31a198613`)的车务看板 `src/views/fleet/board/**` 目前不读取 `route.query`(对该目录 86 个文件检索 `route.query` / `useRoute` / `$route` 均为 0 命中;同一检索在兄弟目录 `src/views/fleet/matrix/` 有命中,检索本身有效)。带 `orderId` 与不带 `orderId` 的两种链接点开后都落在看板首页,不会按订单定位。 +3. **`link` 走既有跳转逻辑,前端无需新增处理**:`link` 是后台相对路由,前端现有的 `resolveJumpLink`(`src/views/notification/MyMessages/jumpBiz.js:22-32`)直接把它交给 `router.push`;`kv.endsWith('=')` 时会把整段 query 砍掉(`:27-31`),所以 `/fleet/board?orderId=` 实际会跳到 `/fleet/board`,`/fleet/board?orderId=123` 原样跳转,两种情形都不会报错。 +4. **生产环境没有这类消息**:二期(order-v3、fleet)尚未上生产,本次改动目前只在测试服可见。 + +--- + +## 四、测试环境已验证 + +- PR [#8299](https://git.1814.love:8443/wx/HL/pulls/8299),合并提交 [`3227d495c`](https://git.1814.love:8443/wx/HL/commit/3227d495c),user-service、fleet 均已部署到测试服。 +- 测试服上 `notification_event_config` 中 `event_code=FLEET_DISPATCH_CREATED` 那一行的 `inapp_link_template` 实测已是 `/fleet/board?orderId=${orderId}`。 + +--- + +## 五、可选增强(非必须,供参考) + +如果车务看板以后想按订单定位,query 参数名已经固定是 `orderId`,值是订单 ID 字符串,直接读取即可,不需要另外跟后端约定参数名。这是可选增强,不是必须动作。 + +--- + +## 关联 / 联系人 + +### 链接 + +- **Issue**: [#8228](https://git.1814.love:8443/wx/HL/issues/8228) +- **PR**: [#8299](https://git.1814.love:8443/wx/HL/pulls/8299) +- **Merge commit**: [`3227d495c`](https://git.1814.love:8443/wx/HL/commit/3227d495c) + +### 联系人 + +- **后端负责人**: @wx