diff --git a/changelogs/2026-07/80_5254_订单侧已配置车辆补充车型车队服务日期与日单价.md b/changelogs/2026-07/80_5254_订单侧已配置车辆补充车型车队服务日期与日单价.md new file mode 100644 index 0000000..c4d93af --- /dev/null +++ b/changelogs/2026-07/80_5254_订单侧已配置车辆补充车型车队服务日期与日单价.md @@ -0,0 +1,94 @@ +--- +schema: "hl-changelog/v2" +ticket: "5254" +title: "订单侧已配置车辆补充车型车队服务日期与日单价" +consumer: "admin" +change_type: "修改接口" +backend_status: "pending" +gateway_status: "pending" +frontend_status: "pending" +frontend_owner: "" +frontend_ref: "" +target_release: "" +verified_at: "" +status_note: "" +updated_at: "2026-07-26" +base: "dev-v3" +generated: "2026-07-26T09:57:21+08:00" +--- + +# 订单侧已配置车辆补充车型车队服务日期与日单价 + +订单详情的已配置车辆补齐车型标题、车队、连续服务日期、服务天数和协议日单价。 +本记录只表示后端契约交接,`frontend_status` 在真实前端领取前保持 `pending`。 + +## 关联 + +- Issue: #5254 +- PR: 待补充 + +## 变更接口 + +| 方法 | 路径 | 来源 | +|---|---|---| +| GET | `/v3/admin/order/{id}/itinerary` | `data.vehicleGroup.assignments[]` | + +### `data.vehicleGroup.assignments[]` + +| 字段 | 类型 | 必填 | 说明 | +|---|---|---|---| +| `brand` | string | 否 | 兼容字段;Fleet 实时数据下回填车辆车型名称,前端标题可按 `brand \|\| vehicleType \|\| '—'` 展示 | +| `fleetTeamId` | string | 否 | 车辆所属车队 ID;雪花 ID 按字符串返回 | +| `fleetTeamName` | string | 否 | 车辆所属车队名称;归档车辆或历史快照无法补齐时为空 | +| `startDate` | string(`yyyy-MM-dd`) | 否 | 车辆/司机连续服务段开始日 | +| `endDate` | string(`yyyy-MM-dd`) | 否 | 车辆/司机连续服务段结束日 | +| `serviceDays` | integer | 否 | 连续服务天数,首尾日期均计入 | +| `plannedDailyFee` | string(decimal) | 否 | 协议日单价;连续段内每日协议价不一致或无价格时为空,不得按 0 元展示 | + +既有 `vehicleType`、`licensePlate`、`seats`、`driverName` 和 +`driverPhoneMasked` 继续返回;手机号保持脱敏。 + +### 内部 Feign/shared Java + +`OrderDriverVehicleCandidateDTO` 新增可空字段: + +- `fleetTeamId: Long`(JSON 字符串) +- `fleetTeamName: String` +- `protocolPrice: BigDecimal`(JSON 字符串) + +既有 `startDate`、`endDate` 本次开始映射到订单侧公开响应。新旧 Fleet/Order +可滚动部署:旧消费者忽略新增字段,新消费者读取旧生产者时新增字段为空。 + +## 契约影响文件 + +- `hl-common/hl-common-core/src/main/java/com/hulalv/common/dto/fleet/OrderDriverVehicleCandidateDTO.java` +- `hl-order-service-v3/src/main/java/com/hulalv/order/core/controller/admin/vo/detail/ItineraryVO.java` +- `hl-order-service-v3/src/test/java/com/hulalv/order/core/controller/admin/OrderControllerTest.java` +- `hl-order-service-v3/src/test/java/com/hulalv/order/fleet/feign/FleetDriverVehicleFeignContractTest.java` + +## 前端/调用方动作 + +- `src/views/order-v2/detail/_shared/v3Adapter.js` 映射新增字段: + `fleetTeamName`、`startDate`、`endDate`、`serviceDays`、`plannedDailyFee`。 +- 车型标题使用 `brand || vehicleType || '—'`;`brand === vehicleType` 时不要重复展示同一车型。 +- “用车安排”摘要展示车型、车牌、座位、司机、脱敏手机号和服务日期。 +- “已配置车辆”弹窗展示车型、车牌、座位、所属车队、司机、脱敏手机号、 + 服务起止日期、服务天数和协议日单价。 +- `plannedDailyFee == null` 时显示 `—`,不得显示 0 元;无车辆时保持“暂无已配车”。 +- 多车/改派连续段按接口数组逐条渲染,不按车牌或司机姓名自行去重。 + +## 验证证据 + +- Fleet 定向测试: + `mvn -pl hl-fleet-service -am -Dtest=OrderDriverVehicleQueryServiceTest,AssignmentConverterTest -Dsurefire.failIfNoSpecifiedTests=false test` + (31 项通过)。 +- Order 消费者与内部契约: + `mvn -pl hl-order-service-v3 -am -Dtest=OrderDetailServiceTest,FleetDriverVehicleFeignContractTest -Dsurefire.failIfNoSpecifiedTests=false test` + (79 项通过)。 +- 前端 API 序列化: + `mvn -pl hl-order-service-v3 -am -Dtest=OrderControllerTest#getItinerary_validId_returns200 -Dsurefire.failIfNoSpecifiedTests=false test` + (1 项通过)。 +- Fleet Spotless:`mvn -pl hl-fleet-service spotless:check`(通过)。 +- 网关验证:待补充 +- 兼容性结论:仅新增可空响应字段并补齐既有空字段;内部 Feign JSON 双向兼容, + 不修改方法、路径、参数、必填项、枚举或错误码。