1.3 KiB
1.3 KiB
M04-B 订单状态机
- 日期:2026-06-20
- 起始 commit:
725028c - 工程 commit:
40c891f - 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 实现续费、取消规则、换房和管理员调整,并覆盖冲突与事务回滚。