所有检测均成功
changelog-filename-gate / validate (push) Successful in 2s
frontend-only changelog handoff;D-03 continues under #4760.
4.4 KiB
4.4 KiB
schema, ticket, title, consumer, change_type, backend_status, gateway_status, frontend_status, frontend_owner, frontend_ref, target_release, verified_at, status_note, updated_at, base
| schema | ticket | title | consumer | change_type | backend_status | gateway_status | frontend_status | frontend_owner | frontend_ref | target_release | verified_at | status_note | updated_at | base |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| hl-changelog/v2 | 5338 | Fleet 按订单分窗保持路由状态集合守恒 | admin | 修改接口 | deployed | not_required | pending | frontend-only:复用 #4760 grid/unassigned 与 #5301 coarse status 已部署契约,无新增后端发布;本次只交接前端最终集合过滤,fresh gateway probe 不适用 | 2026-07-28 | dev-v3 |
Fleet:按订单分窗保持路由状态集合守恒
Tracking Issue:wx/HL#5338 责任端:
mmg/hl-uiFleet Matrix 分窗前端 前端基线:v2.1@18daf2a03e9946c46d7bf31c7577adcb05d3c168性质:frontend-only;不是后端缺陷,不新增后端接口、字段、错误码或部署
问题与根因
matrix-solo?solo=byOrder&status=assigned 已把 route status 传给 grid,且 coarse assigned 正确映射为 holding/holding_urgent/assigned。但共享 composable 仍无条件请求并合并不带 status 的 unassigned-orders,SoloByOrderView.visibleOrders 只排除 canceled,未按 route status 最终收口。
因此 assigned 分窗会混入无车的 unassigned/unassigned_urgent rows。主矩阵已使用共享 matchesMatrixStatusFilter 做最终过滤,缺口只在 byOrder 分窗没有复用同一保护;不得归因于后端 grid 或 coarse status 契约。
变更接口
GET /admin/fleet/matrix/grid
GET /admin/fleet/matrix/unassigned-orders
接口契约保持不变,继续沿用 #4760/#5301:
- coarse
assigned=holding + holding_urgent + assigned。 - coarse
unassigned=unassigned + unassigned_urgent。 - 只有 route
all的最终显示集合可以同时包含已派与未派两侧。 backend_status=deployed仅表示上述既有接口契约已部署,不表示 #5338 有后端代码发布。gateway_status=not_required:根因是前端将两个成功响应合并后缺少 view-level route filter,fresh API probe 不能证明页面集合守恒。
前端必须调整
SoloByOrderView最终展示复用共享matchesMatrixStatusFilter,不维护第二套状态映射。- route query、grid/unassigned 请求、visibleOrders 与跨窗口 drag source 使用同一筛选 identity。
assigned只显示holding/holding_urgent/assigned,并排除全部无车未派 rows。unassigned只显示unassigned/unassigned_urgent,并排除已绑车 rows;all才合并两侧。- 最终过滤后的集合同时用于渲染与拖拽,禁止拖拽源绕过 visibleOrders。
前端验收
- 组件挂载测试覆盖 route
all/unassigned/assigned,显示集合与主矩阵同筛选口径守恒。 assigned样本同时包含holding/holding_urgent/assigned,并排除unassigned/unassigned_urgent无车 rows。unassigned只含未派 rows 并排除所有已绑车 rows;只有all合并两侧。- 最终展示与 drag source 都复用
matchesMatrixStatusFilter的同一过滤结果。 - year/month/fleetTeamIds/typeKeys/status 从 route、请求到 visible/drag 集合保持同一身份。
- 不改变 grid、unassigned-orders、statuses[] 或 coarse status 后端契约。
验证证据
- 权威审计:
C:/Users/Administrator/AppData/Local/Temp/fleet-frontend-current-remote-audit-task_e6c54bb3a8b9.md - 审计 SHA-256:
ab3ceafdf3a433ea7d0a99d1f8962839ed49d2819d4eab1d6de13c85e891d882 - 当前前端远端源码:
mmg/hl-ui v2.1@18daf2a03e9946c46d7bf31c7577adcb05d3c168 - 源码证据:
matrix-status.js:27-36,49-66、useFleetMatrixData.js:350-364,505-525、SoloByOrderView.vue:52-82,101-105。 - 现有 composable 测试确认
allOrders即使在 assigned exact 下仍包含 unassigned row,但当前远端没有 SoloByOrder route 挂载测试;本条目初始状态为pending,不宣称前端已修复或测试已通过。
关联与去重
#4760规定 byOrder 使用 grid + unassigned-orders 并携带 route status;本条目补充最终显示集合守恒,不修改其历史文件。#5301规定 coarse assigned 与精确 statuses[];本条目不改变该契约。- D-03 的
todayDay未消费仍归#4760existing-follow-up,不在 #5338 创建重复验收。 - D-01 day-orders 陈旧失败隔离由独立
#5337跟踪。