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

28 lines
1.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 实现续费、取消规则、换房和管理员调整,并覆盖冲突与事务回滚。