---
schema: "hl-changelog/v2"
ticket: "5596"
title: "派单预校验增加驾照/年检/车辆保险到期强提醒（不拦截，车务人工判断）"
consumer: "admin"
author: "wx(GIT)"
change_type: "修改接口"
backend_status: "deployed"
gateway_status: "verified"
frontend_status: "implemented"
frontend_owner: "hl-ui"
frontend_ref: "hl-admin@572d25e64b5d5ed2cb325dcbb377978c425d4f1e"
target_release: ""
verified_at: ""
status_note: "后端完成：PR #5617 已合并 dev-v3 并部署 TEST，网关验证通过。派单 precheck 与司机候选对证件到期给出强提醒 warning（不阻断派单，车务人工判断）；司机候选列表新增驾照过期标记字段，前端候选/派单页可醒目提示「驾照已过期」。"
updated_at: "2026-08-07"
base: "dev-v3"
generated: "2026-08-06T18:30:00+08:00"
---

# 派单预校验增加驾照/年检/车辆保险到期强提醒（不拦截）

> 后端完成：PR #5617 已合并 dev-v3 并部署 TEST，网关验证通过。

## 关联 / 联系人

### 链接

- **Issue**: [#5596](https://git.1814.love:8443/wx/HL/issues/5596)
- **PR**: [#5617](https://git.1814.love:8443/wx/HL/pulls/5617)
- **Merge commit**: [f846361f](https://git.1814.love:8443/wx/HL/commit/f846361f)

### 联系人

- **后端负责人**: @wx

## 背景

协调台实测：司机王信驾照 **2022-02-05 已过期 4 年**，但派单 precheck 无驾照到期校验——仅提示档期冲突/跨常驻，过期司机仍可正常派单（安全合规隐患）。

**口径（wx 定）**：驾照/证件到期**不拦截，强提醒即可**——车务人工判断是否派单。

## 变更接口

### `POST /admin/fleet/assignments/precheck`（修改响应）

`warnings` 数组新增 3 个非阻断强提醒类型（只进 warnings、不影响 `conflict` 阻断判定）：

| type | 触发条件 | 文案示例 |
|---|---|---|
| `license_expired` | 司机驾照到期日早于本单服务结束日 | 司机驾照已于 2022-02-05 过期（本单服务期间证件失效），请人工确认是否派单 |
| `veh_inspect_expired` | 车辆年检（行驶证）到期日早于本单服务结束日 | 车辆年检已于 2025-01-01 过期（本单服务期间证件失效），请人工确认是否派单 |
| `veh_insure_expired` | 车辆保险到期日早于本单服务结束日 | 车辆保险已于 2025-06-01 过期（本单服务期间无保险保障），请人工确认是否派单 |

判定基准取**服务结束日**（行程期间任一天证件失效都提醒），无结束日回退开始日；证件到期日为空不提示。

### `POST /admin/fleet/assignments/candidates`（修改响应）

`drivers.records[]`（司机候选）新增字段：

| 字段 | 类型 | 说明 |
|---|---|---|
| `licenseExpire` | string(date) | 驾照到期日；未填为空 |
| `licenseExpired` | boolean | 驾照是否已过期（相对请求服务日期；候选页醒目提示用） |
| `licenseExpiredMessage` | string | 醒目提示文案，如「司机驾照已于 2022-02-05 过期，请人工确认」；未过期为空 |

## 行为变化

- **过期司机派单不再无感放行**：precheck 对驾照/年检/保险过期的车、司机给出强提醒 warning，弹窗醒目展示「驾照已过期」，但**不拦截**——车务人工判断是否派单
- **候选页醒目提示**：司机候选列表直接透出 `licenseExpired` 标记与文案，前端可标红「驾照已过期」
- **不改变既有阻断逻辑**：证件到期不影响 `conflict`/`conflicts`，档期冲突、资源不可用、跨常驻等既有判定不变
- 写接口（create/change）**不新增拦截**，与口径一致（人说的算）

## 前端/调用方动作

- **派单弹窗（precheck）**：warnings 出现 `license_expired` / `veh_inspect_expired` / `veh_insure_expired` 时醒目展示（红色警示样式），确认后仍可正常提交派单
- **候选页**：司机候选 `licenseExpired=true` 时展示「驾照已过期」醒目标签（可用 `licenseExpiredMessage` 直接展示），不限制选择

## 验证证据

- 定向测试 572 项全绿：AssignmentServiceTest 378（新增 2 例：过期证件强提醒不阻断 conflict=false、证件未过期无提示）、AssignmentCandidateServiceTest 47（新增 2 例：候选驾照过期标记与文案、有效驾照不标记）、DriverServiceTest 147
- fleet 全量 verify 3203 项，仅 ReleaseEMixedBinaryHarnessTest 2 个 Windows 进程时序用例 flaky 失败（单独重跑 23/23 全绿、干净基线同样全绿、失败用例每次不同=并行负载竞争，与本次改动无关）；MySQL 8.0.33 集成 12/12 单独复跑全绿；spotless 通过
- 网关验证（TEST，18:10 部署后）：① precheck 过期司机王信+有效车 → HTTP 200、conflict=false（不阻断）、warnings 含 `license_expired`「司机驾照已于 2022-02-05 过期（本单服务期间证件失效），请人工确认是否派单」；② 对照有效驾照司机 → 无任何证件到期提醒；③ 候选接口王信 `licenseExpired=true`、`licenseExpiredMessage`「司机驾照已于 2022-02-05 过期，请人工确认」；共 10/10 通过
