hl-api-changelog/changelogs-v2/2026-07/81_5141_车务派单司机保险保障状态-修改接口-前端待处理-管理后台.md
2026-07-22 14:44:54 +08:00

5.9 KiB

schema, ticket, title, consumer, backend, gateway, frontend, base, generated
schema ticket title consumer backend gateway frontend base generated
hl-changelog/v1 5141 车务派单司机保险类型与行程保障状态 admin verified verified pending dev-v3 2026-07-22T14:07:00+08:00

【修改接口·前端待处理·管理后台】车务派单司机保险类型与行程保障状态

目标前端

变更接口

POST /admin/fleet/assignments/candidatesdata.drivers.records[] 新增司机保险字段。数据直接来自司机档案,并按本次请求的 startDate/endDate 判断全年保险是否完整覆盖行程。

字段 类型 说明
insuranceType String annual 全年保险、perTrip 按行程投保、none 无保险
insuranceTypeLabel String 全年保险按行程投保无保险
insuranceAnnualStart Date/null 全年保险起始日;非 annual 为空
insuranceAnnualEnd Date/null 全年保险到期日;非 annual 为空
insuranceCoverageStatus String 本次行程保障状态,枚举见下表
insuranceCoverageMessage String 后端生成的中文提示,可直接展示
insuranceCovered Boolean 仅全年保险完整覆盖本次服务日期时为 true

保障状态

insuranceCoverageStatus insuranceCoverageMessage 含义
ANNUAL_COVERED 全年保险已覆盖 年保起止日完整覆盖本次行程
ANNUAL_NOT_COVERED 全年保险不覆盖本行程 年保缺日期、未生效、已过期或仅覆盖部分行程
PER_TRIP_REQUIRED 待按行程投保 司机配置为按行程投保,候选阶段尚不代表已经出单
UNINSURED 无保险 司机档案明确为无保险
UNKNOWN 保险状态未知 存量异常值兜底,不能当作已保障

前端展示规则

  • 在司机卡片姓名或驾龄附近展示保险徽标,文案优先使用 insuranceCoverageMessage
  • ANNUAL_COVERED 可用绿色;PER_TRIP_REQUIRED 用橙色;ANNUAL_NOT_COVERED/UNINSURED/UNKNOWN 用红色或醒目警示色。
  • 全年保险可在悬浮提示或次级文案展示 insuranceAnnualStart ~ insuranceAnnualEnd
  • 保险状态只用于车务判断和提示,不影响司机候选的 available,不得因为未投保或待按行程投保禁用司机。
  • 不要只根据 insuranceType=annual 显示“已保障”,必须以 insuranceCoverageStatusinsuranceCovered 为准。

前端处理清单

  • 司机候选卡片展示保险保障徽标。
  • 区分全年已覆盖、全年未覆盖、待按行程投保、无保险及未知状态。
  • 年保可查看保障起止日,且不把过期或部分覆盖年保展示为已保障。
  • 保险状态不改变司机可选性,候选禁用仍只依据 available === false

编辑司机:无保单时直接线上投保

司机编辑抽屉选择“全年保险”后,如果“关联保游网保单”没有可选数据,不应只展示空下拉。需要在当前抽屉提供“立即投保”入口,复用保险订单页“投保下单 → 司机”的线上真实投保逻辑。

目标文件:

  • src/views/fleet/drivers/components/DriverEditModal.vue
  • 可复用 src/views/insurance/orders/index.vue 中的司机投保表单和 src/api/fleet/drivers.jspurchaseDriverInsurance

交互要求:

  1. 无可关联保单时显示“暂无可关联保单”,并提供“立即投保”按钮。
  2. 点击后填写保险计划、保障开始、保障结束和可选备注;表单行为与保险订单页的司机投保一致。
  3. 用户点击“确认投保”后才发起真实线上投保;仅切换到“全年保险”不得自动出单。
  4. 投保请求必须传 bindAnnual: true。受理成功后,后端会自动把新保单绑定为司机档案的全年保险。
  5. 成功后重新加载司机保单列表和司机详情,回显新 insuranceOrderId、保单状态及保障起止;INSURING 时显示“出单中”,不能要求用户重复投保。
  6. 保留“手工录入线下保单”作为独立兜底路径,文案和操作不得与线上投保混用。

调用示例:

POST /admin/fleet/drivers/{driverId}/insurance/purchase
{
  "planId": "2080000000000000001",
  "coverageStartDate": "2026-07-23",
  "coverageEndDate": "2027-07-22",
  "bindAnnual": true,
  "remark": "司机全年保险"
}

driverIdplanId 和响应中的 insuranceOrderId 均为雪花 ID,前端必须按字符串透传。保险计划继续使用 GET /admin/fleet/drivers/insurance/plan-options

异常处理沿用保险订单页:全局展示后端错误文案;若返回 600206,表示可能已经出单但档案绑定失败,必须关闭投保弹窗并刷新保单列表,提示用户勿重复投保。

追加验收项:

  • 编辑司机选择全年保险且无已有保单时,可在当前抽屉发起线上真实投保。
  • 请求携带 bindAnnual: true,投保受理后司机档案自动回显全年保险,无需先保存再关联。
  • 出单中、已承保和 600206 场景均不会诱导用户重复投保。
  • 线上投保与手工录入线下保单入口、文案和数据来源清晰分离。

验证证据

  • 后端 PR wx/HL#5143 已合并到 dev-v3
  • 派单候选与司机域定向测试共 148 项通过。
  • fleet spotless:checkmvn -pl hl-fleet-service -am verify 通过。
  • 测试网关真实返回 21 名司机,覆盖全年已覆盖、全年未覆盖、待按行程投保和无保险四类结果;响应与测试库司机保险档案逐条一致,19 名警示状态司机仍可选择。

本文是前端接入通知,不代表已修改或发布 mmg/hl-ui