Files
qipai/docs/devlogs/2026-06-20-M04-B-订单状态机.md
T

1.3 KiB
Raw Blame History

M04-B 订单状态机

  • 日期:2026-06-20
  • 起始 commit725028c
  • 工程 commit40c891f
  • ENGINEERING_DELTA=YES
  • 子阶段状态:DONE,已 push 且 HEAD == origin/main

工程增量

  • 建立 DRAFT、PENDING_PAYMENT、PAID、RESERVED、IN_PROGRESS、FINISHED、CANCELLED、REFUNDING、REFUNDED、CLOSED 状态机。
  • API 只接受受控业务动作,由服务端映射目标状态并校验合法迁移。
  • 每次迁移在订单行锁事务中记录旧状态、新状态、操作者、来源、原因、traceId 和状态版本。
  • 相同订单与 traceId 重试幂等,不重复写历史或审计。
  • 状态迁移同步消费/释放房间预占,并在终态撤销现场访问授权;订单归属历史仍可查询。
  • 过期待支付订单关闭时补状态历史。

验证

  • Windows npm test 与仓库全量门禁通过。
  • WSL MySQL 8.4.9 临时库执行 up → verify → down → up → verify 通过。
  • 迁移语句:up 60、verify 41、down 56。
  • 实测待支付→已支付→已预留→使用中→完成→关闭全生命周期、非法迁移拒绝、重复 trace 幂等、历史与审计完整、关闭释放预占并撤销现场权限。

后续

M04-C 实现续费、取消规则、换房和管理员调整,并覆盖冲突与事务回滚。