diff --git a/changelogs-v2/2026-08/12_5915_看板删除换车请求状态-修改接口-管理后台.md b/changelogs-v2/2026-08/12_5915_看板删除换车请求状态-修改接口-管理后台.md new file mode 100644 index 0000000..4e3bf53 --- /dev/null +++ b/changelogs-v2/2026-08/12_5915_看板删除换车请求状态-修改接口-管理后台.md @@ -0,0 +1,103 @@ +--- +schema: "hl-changelog/v2" +ticket: "5915" +title: "看板删除「换车请求」状态——statusOptions/statusCounts 不再含该无效项,statuses 不再接受 change_requested" +consumer: "admin" +change_type: "修改接口" +author: "wx(GIT)" +backend_status: "deployed" +gateway_status: "verified" +frontend_status: "pending" +frontend_owner: "mmg" +frontend_ref: "" +target_release: "" +verified_at: "2026-08-12" +status_note: "后端已删除并部署测试服,API 实测通过。看板「换车请求」状态依赖 fleet_change_request 表,该表 M1 从未落地:change_requested 派生态恒为空、计数恒 0、筛选恒返空,是无效展示项,按 wx 指示整体删除。实测 summary:statusOptions=[unassigned,holding,assigned,completed,canceled](无换车请求)、statusCounts 无 changeRequested 字段;statuses=change_requested 现按 100001 参数非法拒绝(原恒返空)。前端待接入(pending):若看板状态下拉/筛选仍硬编码「换车请求」项需同步移除;若纯渲染后端 statusOptions 则自动受益。" +updated_at: "2026-08-12" +base: "dev-v3" +--- + +# 看板删除「换车请求」状态(#5915 / PR #5925) + +> **服务**: hl-fleet-service +> **PR**: #5925 +> **日期**: 2026-08-12 +> **背景**: 看板「换车请求」状态依赖 fleet_change_request 表,该表 M1 从未落地 → change_requested 派生态恒为空、计数恒 0、筛选恒返空,是无效展示项。按 wx 指示整体删除该看板状态。 + +--- + +## 变更接口 + +- `GET /admin/fleet/board/summary`(看板汇总) +- `GET /admin/fleet/board/orders`(看板列表,statuses 筛选) + +--- + +## 契约变化 + +### 1. summary.statusOptions 移除「换车请求」项 + +| 项 | 旧 | 新 | +|---|---|---| +| `statusOptions[].value` | 含 `change_requested` | 仅 `unassigned/holding/assigned/completed/canceled` | +| `statusOptions[].label` | 含 `换车请求` | 仅 `待派车/排车中/已派车/已完结/已取消` | + +实测返回: + +```json +"statusOptions": [ + {"value":"unassigned","label":"待派车"}, + {"value":"holding","label":"排车中"}, + {"value":"assigned","label":"已派车"}, + {"value":"completed","label":"已完结"}, + {"value":"canceled","label":"已取消"} +] +``` + +### 2. summary.statusCounts 移除 changeRequested 字段 + +| 字段 | 旧 | 新 | +|---|---|---| +| `statusCounts.changeRequested` | 恒 `0`(不落库,占位) | **字段删除**,不再下发 | + +实测 `statusCounts` keys = `[unassigned, holding, assigned, completed, canceled, unassignedUrgent, holdingUrgent]`,无 `changeRequested`。 + +### 3. statuses 筛选不再接受 change_requested + +| 入参 | 旧 | 新 | +|---|---|---| +| `statuses=change_requested` | 恒返空页(M1 无表,非报错) | **100001 参数非法**:`statuses 含非法状态值:change_requested(合法值:unassigned/unassigned_urgent/holding/holding_urgent/assigned/canceled/completed)` | + +实测: + +```json +{"code":100001,"message":"参数非法: statuses 含非法状态值:change_requested(合法值:unassigned/unassigned_urgent/holding/holding_urgent/assigned/canceled/completed)","success":false} +``` + +--- + +## 保留(不受影响) + +「换车请求」作为**操作日志/时间线历史轨迹**保留,与看板状态无关: + +- `AssignmentOperationTypeEnum.CHANGE_REQUESTED`(「发起修改派单」操作类型) +- `TimelineEventTypeEnum.CHANGE_REQUESTED`(时间线事件类型) +- 派单操作日志 / 订单时间线对历史 change_requested 记录的解析与展示不变。 +- `CreateAssignmentReqVO.changeRequestId` 历史兼容字段保留(当前创建接口不消费)。 + +## 前端接入提示 + +- 看板状态**下拉/筛选**:若前端硬编码了「换车请求」选项需同步移除;若纯渲染后端 `statusOptions` 则自动受益、无需改动。 +- 不要再向 `statuses` 传 `change_requested`,否则会收到 100001 参数非法。 + +## 验证证据(测试服 API 实测) + +- `GET /admin/fleet/board/summary`:statusOptions 无换车请求、statusCounts 无 changeRequested。 +- `GET /admin/fleet/board/orders?statuses=change_requested`:返 100001 参数非法。 +- 单测 3679 全绿(含 FleetRedLineArchTest 13 项),spotless 通过。 + +## 关联 / 联系人 + +### 联系人 + +- **后端负责人**: @wx