文件
hl-api-changelog/changelogs-v2/2026-09/23_8228_HOLD派单降级车务站内信补齐跳转链接指向车务看板-修复-管理后台.md
T
2026-09-23 22:17:07 +08:00

6.1 KiB
原始文件 Blame 文件历史

schema, ticket, title, consumer, author, change_type, backend_status, gateway_status, frontend_status, frontend_owner, frontend_ref, target_release, verified_at, status_note, updated_at, base
schema ticket title consumer author change_type backend_status gateway_status frontend_status frontend_owner frontend_ref target_release verified_at status_note updated_at base
hl-changelog/v2 8228 HOLD 派单降级车务站内信补齐跳转链接,指向车务看板 admin wx(GIT) 修复 deployed not_required not_required 接口路径、请求参数、响应字段均未变,变的是 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 仍为空。;前端复核(mmg):resolveJumpLink 空值砍 query/原样跳转两态安全,fleet/board 目录 route.query 零命中,FLEET_ASSIGNMENT_HOLD 前端零分支——与后端 not_required 评估双向印证 2026-09-23 dev-v3

车务通知: HOLD 派单降级车务站内信补齐跳转链接

存放目录: 二期(order-v3)→ changelogs-v2/2026-09/

服务: hl-user-service(通知配置)+ hl-fleet-service(消息 extras) PR: #8299 Issue: #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 取值
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,合并提交 3227d495c,user-service、fleet 均已部署到测试服。
  • 测试服上 notification_event_config 中 event_code=FLEET_DISPATCH_CREATED 那一行的 inapp_link_template 实测已是 /fleet/board?orderId=${orderId}。

五、可选增强(非必须,供参考)

如果车务看板以后想按订单定位,query 参数名已经固定是 orderId,值是订单 ID 字符串,直接读取即可,不需要另外跟后端约定参数名。这是可选增强,不是必须动作。


关联 / 联系人

链接

联系人

  • 后端负责人: @wx