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 同步。 diff --git a/changelogs-v2/2026-07/27_5299_车务矩阵车辆司机预选与常驻标记-修改接口-管理后台.md b/changelogs-v2/2026-07/27_5299_车务矩阵车辆司机预选与常驻标记-修改接口-管理后台.md index a7d2260..ca71d94 100644 --- a/changelogs-v2/2026-07/27_5299_车务矩阵车辆司机预选与常驻标记-修改接口-管理后台.md +++ b/changelogs-v2/2026-07/27_5299_车务矩阵车辆司机预选与常驻标记-修改接口-管理后台.md @@ -11,7 +11,7 @@ frontend_owner: "hl-admin" frontend_ref: "bfcfafc69335f289071fe3e6dce74bacb636c55d" target_release: "" verified_at: "2026-07-27T22:12:19+08:00" -status_note: "后端 PR #5300 已合并并部署测试环境,矩阵新增字段经真实网关验证;前端待认领预选、司机展示和 #5292 逐日表单改造" +status_note: "前端实现 bfcfafc6 已回写,但测试页面 FleetAssignModal 出现响应式递归更新并阻断候选加载;修复并完成页面复验前不得流转为 released/verified" updated_at: "2026-07-28" base: "dev-v3" --- @@ -33,6 +33,39 @@ base: "dev-v3" 本次后端补齐稳定读契约。前端不得按姓名判断常驻关系,也不得复制相邻订单的临时司机作为新派单默认值。 +## 2026-07-28 前端运行态阻断:`FleetAssignModal` 递归更新 + +### 现场结论 + +前端实现提交 `bfcfafc69335f289071fe3e6dce74bacb636c55d` 已进入 `v2.1`,但当前测试页面打开逐日派车弹窗并加载车辆、司机候选后稳定出现: + +```text +Maximum recursive updates exceeded in component +``` + +浏览器 Console 同时记录多次 `unhandledrejection`;Network 中多条 `POST /admin/fleet/assignments/candidates` 均返回 HTTP 200,但车辆、司机区域持续停留在 loading,无法进入下一步。因此本次不是候选接口、日期冲突或后端状态机错误,而是前端实现后的响应式自反馈回归。`frontend_status: "implemented"` 仅表示代码已存在,不代表已发布或页面闭环。 + +### 高可信自反馈链 + +当前 `AssignModal.vue` 的深度 watcher 同时观察 `candidateEvidence`、`candidateSelectionReady`、`autoSelectedResidentDriverSource` 等候选派生状态,并在回调 `syncActiveSlotSelection()` 中无条件重建 `dailyPlan`、回写当前槽位。`dailyPlan` 又参与计算其他槽位排除 ID、候选可选态和新的 `candidateEvidence`;即使业务值没有变化,新数组/对象身份仍会再次触发同一 watcher,形成“观察候选派生值 → 回写逐日方案 → 候选派生值重新计算 → 再次回写”的闭环。 + +前端修复必须同时满足: + +1. `syncActiveSlotSelection()` 先比较当前日格与待写 payload;语义完全相同时直接返回,不创建新 `dailyPlan`/槽位对象。 +2. watcher 使用稳定原始值或稳定 fingerprint,不深度监听会被自身回写间接失效的派生对象;候选响应、用户选择和槽位同步应有单向边界。 +3. `updateDailyVehiclePlanCell()` 或等价更新器在无真实字段变化时返回原引用,禁止仅因对象重建触发后续 effect。 +4. 保留 #5283 的稳定 `initializationIdentity` 与 `requestSeq` 旧响应隔离;不得退回监听 `props.order` 对象身份或通过删除并发保护掩盖循环。 +5. 正常打开弹窗只允许一次初始候选请求;需要自动常驻司机二次校验时最多再请求一次。状态稳定后不得继续请求,loading 必须收敛。 + +### 前端回归验收 + +- [ ] 打开订单逐日派车弹窗并取得候选成功响应后,Console 不再出现 `Maximum recursive updates` 或相关 `unhandledrejection`。 +- [ ] 候选请求数量有明确上界;自动常驻司机场景最多“初始查询 + 携两侧 ID 二次校验”,不存在持续请求。 +- [ ] 车辆、司机列表结束 loading,接口返回的分页总数与页面一致,可正常进入下一步。 +- [ ] 已选车辆、司机、逐日费用和跨常驻确认写回一次后保持稳定,多轮 `nextTick` 不再重建相同 `dailyPlan`。 +- [ ] 相同业务身份的 SSE/列表对象替换仍保留候选与草稿;真实订单、需求、槽位或模式变化时才重新初始化。 +- [ ] 新增真实挂载 `FleetAssignModal` 的回归测试,模拟候选成功和自动常驻二次校验,断言无未处理 Promise、请求次数有界且草稿稳定;仅做静态源码断言不足以验收。 + ## 变更接口 ### `GET /admin/fleet/matrix/grid` @@ -128,6 +161,6 @@ base: "dev-v3" - 网关证据:`D:/work2/HL-v3/.tmp/5299-gateway.json`,SHA-256 `d94ee78fbe52cc193a28e5bf182e1353d2eca9d87824b1c2eb526c62a4fe645d`。 - OpenAPI/oasdiff:项目尚未配置可复现 Swagger2→OAS3 与 oasdiff,状态为 `not_configured`;使用源码字段对比、Controller 序列化测试及真实网关响应作为人工回退证据,未冒充工具通过。 -当前状态:后端已部署、网关已验证,前端消费保持 `pending`。 +当前状态:后端已部署、网关已验证;前端代码状态为 `implemented`,但运行态复验失败,修复并通过上述页面验收前不得流转为 `released` 或 `verified`。 -关联:#5299、#5292。 +关联:#5299、#5292、#5283。