28 lines
1.3 KiB
Markdown
28 lines
1.3 KiB
Markdown
# 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 实现续费、取消规则、换房和管理员调整,并覆盖冲突与事务回滚。
|