hl-api-changelog/changelogs-v2/2026-07/28_5337_Fleet日期清单陈旧失败隔离-修改接口-管理后台.md
Mimingguang 3a7032eba2
所有检测均成功
changelog-filename-gate / validate (push) Successful in 2s
chore(changelog): 完成 5337 管理后台消费
修改原因:#5337 的日期请求竞态已按 requestSeq+date identity 完成前端隔离。

修改内容:将 changelog 迁移为 implemented,记录业务提交 0f025662443f50ca40d118043ed491a2d918a855 与验证时间。

实际验证:主仓库全量 checkpoint 通过;source 46 项测试和 git diff --check 通过。
2026-07-29 13:46:47 +08:00

3.9 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 5337 Fleet 日期清单隔离陈旧失败与当前弹窗状态 admin 修改接口 deployed not_required implemented hl-ui-pi 0f025662443f50ca40d118043ed491a2d918a855 2026-07-29T13:45:27+08:00 frontend-only复用 #4760 已部署 day-orders 契约,无新增后端发布;本次只交接前端异步 identity 修复,fresh gateway probe 不适用 2026-07-29 dev-v3

Fleet日期清单隔离陈旧失败与当前弹窗状态

Tracking Issuewx/HL#5337 责任端mmg/hl-ui Fleet Matrix 前端 前端基线v2.1@18daf2a03e9946c46d7bf31c7577adcb05d3c168 性质frontend-only;不是后端缺陷,不新增后端接口、字段、错误码或部署

问题与根因

日期弹窗快速从 A 日期切到 B 日期时,fetchDayOrdersdayRequestSeq 只在 Promise 成功后检查。A 旧请求若在 B 新请求成功后才失败,会在 await 处直接 reject,随后 A 对应的 openDayList catch 无 requestSeq + date 身份校验并无条件清空共享 dayOrders

结果是标题仍属于 B,但 rows 被旧 A 清空,页面显示 B 日期假空数据,统一 error 也可能属于旧 A。旧 success 已有序号保护;缺口仅在 failure/error/clear/loading/title 的共同身份约束。

变更接口

GET /admin/fleet/matrix/day-orders

接口契约保持不变,继续沿用 #4760

GET /admin/fleet/matrix/day-orders?date=YYYY-MM-DD
  • 请求参数、响应结构、空值和错误码均不变。
  • backend_status=deployed 仅表示 #4760 的既有接口契约已部署,不表示 #5337 有后端代码发布。
  • gateway_status=not_required:根因是前端 Promise 乱序与共享状态写入,接口 fresh probe 不能证明竞态修复。

前端必须调整

  1. 为每次日期请求建立稳定的 requestSeq + date identity。
  2. 只有当前 identity 可以写 rows、清空 rows、更新 error/loading 或改变弹窗状态。
  3. 陈旧 success 与陈旧 failure 都必须 no-op,不能依赖只有成功路径执行的序号检查。
  4. title、rows、error、loading 必须绑定同一 identity;禁止新日期标题搭配旧错误或假空数据。

前端验收

  • deferred 测试覆盖 A旧 success 晚于B新 success、A旧 failure 晚于B新 success、A旧 success 晚于B新 failure、当前请求 failure 四类交错。
  • A旧 failure 晚于B新 success 时,B rows、B title 与 B error state 保持不变,旧 A 完全 no-op。
  • 只有当前 requestSeq + date identity 可以写 rows、clear、error 与 loading。
  • 真实 Matrix 页面挂载测试快速点击两个日期列头并控制 Promise 顺序,断言最终标题、行数、空态和错误均属于最新日期。
  • 不改变 /day-orders API 字段、后端行为或公共契约。

验证证据

  • 权威审计:C:/Users/Administrator/AppData/Local/Temp/fleet-frontend-current-remote-audit-task_e6c54bb3a8b9.md
  • 审计 SHA-256ab3ceafdf3a433ea7d0a99d1f8962839ed49d2819d4eab1d6de13c85e891d882
  • 当前前端远端源码:mmg/hl-ui v2.1@18daf2a03e9946c46d7bf31c7577adcb05d3c168
  • 源码证据:useFleetMatrixData.js:553-559matrix/index.vue:902-908DayListModal.vue:10-16,120-124
  • 审计已确认当前测试没有 day-orders deferred race 页面挂载覆盖;本条目初始状态为 pending,不宣称前端已修复或测试已通过。

关联与去重

  • #4760 是 day-orders 既有接口和 Fleet Matrix 真实数据源责任,本条目不修改其历史文件。
  • D-03 的 todayDay 未消费仍归 #4760 existing-follow-up,不在 #5337 创建重复验收。
  • D-02 byOrder 分窗状态守恒由独立 #5338 跟踪。