From 1e0685a4fe6930d0a67a59b94703cb5e39cea18a Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Mon, 27 Jul 2026 10:45:13 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(changelog):=20=E6=81=A2=E5=A4=8D=20#521?= =?UTF-8?q?6=20=E4=B8=8E=20#5262=20=E7=A8=B3=E5=AE=9A=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E5=88=AB=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...接送路线与就绪摘要-修改接口-前端待处理-管理后台.md | 33 +++++++++++++++++++ ...与核单实时接口-修改接口-前端待处理-管理后台.md | 33 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 changelogs-v2/2026-07/24_5216_派车看板补充槽位接送路线与就绪摘要-修改接口-前端待处理-管理后台.md create mode 100644 changelogs-v2/2026-07/26_5262_派车逐日车费与核单实时接口-修改接口-前端待处理-管理后台.md diff --git a/changelogs-v2/2026-07/24_5216_派车看板补充槽位接送路线与就绪摘要-修改接口-前端待处理-管理后台.md b/changelogs-v2/2026-07/24_5216_派车看板补充槽位接送路线与就绪摘要-修改接口-前端待处理-管理后台.md new file mode 100644 index 0000000..40df049 --- /dev/null +++ b/changelogs-v2/2026-07/24_5216_派车看板补充槽位接送路线与就绪摘要-修改接口-前端待处理-管理后台.md @@ -0,0 +1,33 @@ +--- +schema: "hl-changelog/v2" +ticket: "5216" +title: "派车看板补充槽位接送路线与就绪摘要" +consumer: "admin" +change_type: "修改接口" +backend_status: "deployed" +gateway_status: "verified" +frontend_status: "implemented" +frontend_owner: "hl-ui-codex" +frontend_ref: "mmg/hl-ui@cd493f83a7881401552494fc5a90fbb87395131b" +target_release: "hl-ui/v2.1" +verified_at: "" +canonical_path: "changelogs-v2/2026-07/24_5216_派车看板补充槽位接送路线与就绪摘要-修改接口-管理后台.md" +status_note: "兼容 #5216 在文件重命名前已被前端消费线程持久化的稳定路径;状态更新必须通过 alias-aware transition 同步 canonical。" +updated_at: "2026-07-26" +base: "dev-v3" +--- + +# 【路径兼容·管理后台】派车看板补充槽位接送路线与就绪摘要 + +本文件是 #5216 已下发旧路径的兼容入口。完整接口说明以 +`changelogs-v2/2026-07/24_5216_派车看板补充槽位接送路线与就绪摘要-修改接口-管理后台.md` +为 canonical;不得删除或再次重命名本文件。 + +## 变更接口 + +- 不新增或修改业务接口;本文件仅恢复前端状态回写所需的稳定路径。 + +## 验证证据 + +- `changelog-path-aliases.json` 记录旧路径与 canonical 的机器可识别关系。 +- alias 校验与状态同步测试覆盖读取、同步写入和重复写入。 diff --git a/changelogs-v2/2026-07/26_5262_派车逐日车费与核单实时接口-修改接口-前端待处理-管理后台.md b/changelogs-v2/2026-07/26_5262_派车逐日车费与核单实时接口-修改接口-前端待处理-管理后台.md new file mode 100644 index 0000000..513fcab --- /dev/null +++ b/changelogs-v2/2026-07/26_5262_派车逐日车费与核单实时接口-修改接口-前端待处理-管理后台.md @@ -0,0 +1,33 @@ +--- +schema: "hl-changelog/v2" +ticket: "5262" +title: "派车逐日车费、只读总价与核单实时接口" +consumer: "admin" +change_type: "修改接口" +backend_status: "deployed" +gateway_status: "verified" +frontend_status: "implemented" +frontend_owner: "hl-ui-pi" +frontend_ref: "mmg/hl-ui@2dfe8ab40f3db446d0a079d7511986a2d7fdce33" +target_release: "" +verified_at: "2026-07-26T16:37:00+08:00" +canonical_path: "changelogs-v2/2026-07/26_5262_派车逐日车费与核单实时接口-修改接口-管理后台.md" +status_note: "兼容 #5262 首次交接时已发布的稳定路径;状态更新必须通过 alias-aware transition 同步 canonical。" +updated_at: "2026-07-26" +base: "dev-v3" +--- + +# 【路径兼容·管理后台】派车逐日车费、只读总价与核单实时接口 + +本文件是 #5262 首次交接路径的兼容入口。完整接口说明以 +`changelogs-v2/2026-07/26_5262_派车逐日车费与核单实时接口-修改接口-管理后台.md` +为 canonical;不得删除或再次重命名本文件。 + +## 变更接口 + +- 不新增或修改业务接口;本文件仅保留已下发路径,并把消费方引导到 canonical 文档。 + +## 验证证据 + +- `changelog-path-aliases.json` 记录旧路径与 canonical 的机器可识别关系。 +- alias 校验确保前端状态字段与 canonical 同步。 From 69953f5aec2d42f4f6dc66457b748443a6978d50 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Mon, 27 Jul 2026 10:45:14 +0800 Subject: [PATCH 2/2] =?UTF-8?q?docs(changelog):=20=E4=BA=A4=E6=8E=A5?= =?UTF-8?q?=E5=BB=BA=E8=AE=AE=E8=BD=A6=E8=BE=86=E6=A7=BD=E4=BD=8D=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=8F=A3=E5=BE=84=20(#5284)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...车辆槽位由车务自由删减-修改接口-管理后台.md | 145 ++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 changelogs-v2/2026-07/27_5284_建议车辆槽位由车务自由删减-修改接口-管理后台.md diff --git a/changelogs-v2/2026-07/27_5284_建议车辆槽位由车务自由删减-修改接口-管理后台.md b/changelogs-v2/2026-07/27_5284_建议车辆槽位由车务自由删减-修改接口-管理后台.md new file mode 100644 index 0000000..87a3c8c --- /dev/null +++ b/changelogs-v2/2026-07/27_5284_建议车辆槽位由车务自由删减-修改接口-管理后台.md @@ -0,0 +1,145 @@ +--- +schema: "hl-changelog/v2" +ticket: "5284" +title: "建议车辆槽位由车务自由删减并按最终实派方案提交" +consumer: "admin" +change_type: "修改接口" +backend_status: "deployed" +gateway_status: "not_required" +frontend_status: "pending" +frontend_owner: "" +frontend_ref: "" +target_release: "" +verified_at: "" +status_note: "最终实派方案行为已由 #5262 部署;#5284 只收口既有接口语义并补回归,不需要重复部署或网关验证。本文纠正 #5245 仅允许删除新增草稿槽位的旧前端口径。" +updated_at: "2026-07-27" +base: "dev-v3" +--- + +# 车务:建议车辆槽位由车务自由删减 + +> **服务**: `hl-fleet-service` +> +> **工单**: [wx/HL#5284](https://git.1814.love:8443/wx/HL/issues/5284) +> +> **影响范围**: 车务管理 → 派单看板 → 订单派车弹窗的车辆槽位编辑与批量提交 + +## ⚠️ 关键纠错 + +截图中默认出现但没有删除入口的“车辆槽位 1”,是页面依据订单当前用车需求 +`requiredVehicles[]` 展开的**定制师/订单建议槽位**,不是车务必须保留的最终槽位。 + +#5245 曾写“只删除新增且未提交的草稿槽位”。该表述只是在强调不能用本地删除撤销已有派车, +但被页面实现成了“建议生成的初始槽位不可删除”。**这个实现口径需要纠正:所有尚未提交的本地槽位都可删除, +包括建议生成的初始槽位和车务后加的槽位。最终配几辆、配什么车型由车务决定。** + +边界保持不变: + +- 编辑态允许暂时删至 0 个槽位,并保留“添加车辆槽位”入口; +- 最终提交时 `items[]` 仍必须包含 1–20 个完整槽位; +- 已经存在的 `holding/assigned/completed` 有效派车不是本地草稿,不能直接删除,继续走取消或改派流程。 + +## 变更接口 + +本次不新增 JSON 字段、路径或错误码,只明确现有接口的权威语义: + +| 方法 | 路径 | 当前权威语义 | +| --- | --- | --- | +| `GET` | `/admin/fleet/board/orders` | `requiredVehicles[]` 和 `assignmentProgress.suggestedSlots` 是订单建议,仅作参考 | +| `GET` | `/admin/fleet/board/orders/` | `suggestedVehicleCount` 是建议数量,`actualVehicleCount` 是车务当前实派数量 | +| `POST` | `/admin/fleet/assignments/batch` | `items[]` 是车务本次保留的**完整最终实派方案**,无需覆盖全部建议槽位 | + +## 批量提交契约 + +### `items[]` 是完整最终方案 + +假设订单建议 2 辆 SUV,页面可以删除两个建议槽位后重新添加 1 个槽位,并提交: + +```json +{ + "orderId": "2080000000000000001", + "requirementId": "2080000000000000002", + "startDate": "2026-08-04", + "endDate": "2026-08-07", + "holdMode": 1, + "requestId": "fleet-final-plan-example", + "items": [ + { + "fleetItemIndex": 5, + "vehicleId": "2080000000000000101", + "driverId": "2080000000000000201" + } + ] +} +``` + +规则: + +- `items[]` 数量可以少于、等于或多于建议数量,但必须为 1–20; +- `fleetItemIndex` 可沿用建议索引,也可使用未占用的新索引,不要求连续; +- 批内 `fleetItemIndex`、车辆和司机各自唯一; +- 未被最终方案保留的 `unassigned` 建议占位会退出待派和完成条件; +- 若漏传已有 `holding/assigned` 等在途槽位,后端拒绝整批提交并提示先取消,不会静默删除已有派车; +- 任一槽位失败仍整批回滚,前端不得循环调用单派接口替代批量提交。 + +### 看板建议数与实派数分离 + +最终方案提交后可能出现: + +```json +{ + "assignmentProgress": { + "suggestedSlots": 2, + "finalizedByFleet": true, + "totalSlots": 1, + "unassignedSlots": 0, + "holdingSlots": 1, + "assignedSlots": 0, + "completedSlots": 0, + "canceledSlots": 0 + } +} +``` + +此时 `suggestedSlots=2` 只保留建议事实,页面进度、完成条件和最终车辆数都按 `totalSlots=1` 计算。 + +## 前端展示矩阵 + +| 场景 | 数据源 | 页面行为 | 守恒规则 | +| --- | --- | --- | --- | +| 订单建议 | `requiredVehicles[]`、`suggestedSlots` | 标注“建议”,只作为车型/座位/数量参考 | 不决定最终槽位数 | +| 建议生成的初始槽位 | 前端未提交草稿 | 与新增草稿相同,显示删除入口 | 可见草稿槽位均可删除 | +| 车务新增槽位 | 前端未提交草稿 | 显示删除入口 | 可见草稿槽位均可删除 | +| 删除到 0 个 | 本地草稿为空 | 展示空态和“添加车辆槽位”,禁用下一步/提交 | 编辑态可为 0,提交态最少 1 | +| 最终批量提交 | `items[]` | 只提交车务最终保留的槽位,不补回已删除建议 | 可见最终槽位与 `items[]` 一一对应 | +| 已有有效派车 | `activeAssignments[]` | 不显示本地“删除草稿”;使用取消/改派动作 | 不静默撤销 `holding/assigned` | +| 最终进度 | `assignmentProgress` | `finalizedByFleet=true` 后按 `totalSlots` 展示 | 状态数量之和等于最终 `totalSlots` | + +## 前端处理清单 + +- [ ] 移除 `slot.isNewDraft === true` 对删除按钮的唯一门控;建议生成的未提交初始槽位也必须可删除。 +- [ ] 删除任一未提交槽位后同步清理该槽位的车辆、司机、逐日车费和跨常驻确认草稿,不能残留参与提交。 +- [ ] 删除当前槽位后切到相邻槽位;删至 0 个时进入明确空态,不读取已删除槽位的 picker 状态。 +- [ ] 0 槽位时保留“添加车辆槽位”,并禁用下一步/最终提交;不要向后端发送空 `items[]`。 +- [ ] 最终 payload 只由当前可见槽位生成;不得按 `requiredVehicles[]` 数量补回已删除建议槽位。 +- [ ] `requiredVehicles[]`、`suggestedVehicleCount`、`suggestedSlots` 的文案统一为“建议/参考”,不得展示为车务必配数量。 +- [ ] 已有 `activeAssignments[]` 不走本地草稿删除;继续使用后端下发的取消/改派动作。 +- [ ] 雪花 ID 继续按字符串消费,`fleetItemIndex` 不要求连续且不得因删除后重排而串到已有稳定槽位。 + +## 不影响范围 + +- 本工单不修改 `hl-ui`,不在 `mmg/hl-ui` 建工单;`frontend_status` 保持 `pending`。 +- 不修改派单状态机、车辆/司机占用、通知、保险、对账、逐日车费、Outbox 或数据库结构。 +- 不放宽空批次:编辑态可删至 0,不等于后端接受空 `items[]`。 +- 不允许通过漏传已有有效派车实现静默删除。 + +## 验证证据 + +- 后端最终方案能力来自已部署的 #5262;#5284 未新增运行时行为,因此 `gateway_status=not_required`。 +- 定向回归 5 项通过:建议数与最终数可不同、遗漏建议占位不阻塞完成、已有在途槽位漏传阻断、看板建议/实派分离、空 `items[]` 拒绝。 +- Fleet 全量 `test`:2431 项,0 失败、0 错误、1 跳过。 +- Fleet 模块 `spotless:check`:通过。 +- `mvn -pl hl-fleet-service -am verify`:2431 项,0 失败、0 错误、1 跳过,JAR 构建成功。 +- OpenAPI/oasdiff:`not_configured`;已人工比对路径、字段、类型和必填性,确认只有 Swagger/Javadoc 语义收口。 +- Consumer Contract:`not_required`;没有 internal Feign 或 shared Java 变化。 +- 前端状态:`pending`;领取后按 `pending → claimed → implemented → released → verified` 真实流转。