docs(M04-B): 记录订单状态机验收并推进游标
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
# 当前开发成果基线
|
||||
|
||||
> V5.0 首次核验日期:2026-06-16
|
||||
> audited_commit: `df373fa`
|
||||
> next_engineering_target: M04-B 建立完整订单状态机、状态迁移历史和来源/原因审计
|
||||
> audited_commit: `40c891f`
|
||||
> next_engineering_target: M04-C 实现续费、取消规则、换房和管理员调整
|
||||
> 事实源:当前工作区、Git 历史、状态文档、Windows/WSL 检查脚本。
|
||||
|
||||
## 总体结论
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
# 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 实现续费、取消规则、换房和管理员调整,并覆盖冲突与事务回滚。
|
||||
@@ -31,5 +31,5 @@
|
||||
| UI-001 | 门店装修和多套模板 | M03-B/M08 | PARTIAL | `f746242` | 已实现装修草稿版本、Schema 版本、组件白名单、发布和旧版本归档。 | 可视化编辑器及小程序模板渲染待 M08。 | M08 实现编辑器与渲染组件。 |
|
||||
| MAP-001 | 地图选店和最近门店 | M03-C/M08 | PARTIAL | `df373fa` | 已实现 AppID/tenant 隔离门店发现、城市/营业筛选、按门店时区判断营业中、后端 Haversine 距离排序;小程序支持定位和手工城市降级。 | 地图 SDK 可视化和真机定位授权尚未验收。 | M08 接入地图界面并完成真机验证。 |
|
||||
| QR-001 | 门店/房间场景码与 NFC | M03-D/M08 | PARTIAL | `d563078` | 已实现场景码生成、重建失效、撤销、扫码统计和二维码/NFC 统一页面解析;返回权限固定为空,旧码失效已在 MySQL 8.4.9 实测。 | 真实微信小程序码图片生成依赖可用 AppSecret 与真机环境。 | M08 接入微信小程序码接口并完成真机扫描验收。 |
|
||||
| WIFI-001 | 受控 Wi-Fi 凭据 | M03-D/M04 | PARTIAL | `d563078` | 管理员按门店范围、顾客按有效订单授权和时间窗返回 Wi-Fi;无订单拒绝、有订单放行及审计不含密码已在 MySQL 8.4.9 实测。 | M04 尚未建立正式订单创建流程,当前先提供订单用户授权桥接表。 | M04 创建订单时写入/撤销用户访问授权,并补订单全生命周期测试。 |
|
||||
| ORD-001 | 预约下单与多方式支付 | M04/M05 | PARTIAL | `af7a45d` | 已实现服务端小时/工作日/节假日/通宵/包场定价、最低消费、押金、价格快照、并发时段预占、过期释放和订单用户授权;MySQL 8.4.9 并发实测同一时段仅一个成功。 | 完整订单状态机、支付方式、优惠/套餐权益校验和支付回调尚未完成。 | M04-B 建立状态机和迁移历史,M05 接入可信支付与权益抵扣。 |
|
||||
| WIFI-001 | 受控 Wi-Fi 凭据 | M03-D/M04 | PARTIAL | `40c891f` | 管理员按门店范围、顾客按有效订单授权和时间窗返回 Wi-Fi;正式订单创建写入授权,取消/退款完成/关闭撤销现场权限,关闭后订单历史仍可查看;MySQL 8.4.9 全生命周期实测通过。 | 真实开门与设备权限将在 M06 联动,M04-C 换房还需同步迁移授权。 | M04-C 验证换房授权迁移,M06 接入真实设备权限。 |
|
||||
| ORD-001 | 预约下单与多方式支付 | M04/M05 | PARTIAL | `40c891f` | 已实现可信服务端定价、不可变快照、并发预占,以及 DRAFT 至 CLOSED 的受控状态机;每次迁移记录操作者/来源/原因/traceId,相同 trace 幂等,非法迁移拒绝;MySQL 8.4.9 全生命周期实测通过。 | 续费、取消规则、换房、支付方式、优惠/套餐权益校验和真实支付回调尚未完成。 | M04-C 实现续费/取消/换房/管理员调整,M05 接入可信支付与权益抵扣。 |
|
||||
|
||||
@@ -3,15 +3,15 @@
|
||||
```yaml
|
||||
execution_cursor:
|
||||
current_module: M04
|
||||
current_stage: M04-B
|
||||
current_stage: M04-C
|
||||
stage_status: TODO
|
||||
last_completed_stage: M04-A
|
||||
next_stage: M04-B
|
||||
last_engineering_commit: af7a45d
|
||||
last_completed_stage: M04-B
|
||||
next_stage: M04-C
|
||||
last_engineering_commit: 40c891f
|
||||
last_push_verified: true
|
||||
base_branch: main
|
||||
blocked_reason: ""
|
||||
updated_at: 2026-06-18T16:07:11+08:00
|
||||
updated_at: 2026-06-20T13:54:04+08:00
|
||||
```
|
||||
|
||||
| 模块 | 状态 | 最近提交 | 最近开发日志 | 备注 |
|
||||
@@ -20,7 +20,7 @@ execution_cursor:
|
||||
| M01 后端 API 基础工程 | DONE | `2b90d1f` | docs/devlogs/2026-06-18-M01-C-轻量异步任务基础.md | 已完成 Fastify 后端骨架、数据库迁移兼容层,以及 MySQL outbox、幂等任务、租约领取、失败重试、人工补偿状态和独立 PM2 worker;WSL MySQL 8.4.9 往返迁移与 worker 重启持久性验证通过。 |
|
||||
| M02 登录、租户、权限 | DONE | `5a300a8` | docs/devlogs/2026-06-18-M02-D-用户与员工管理.md | M02-A/B/C/D 已完成租户、身份、可撤销会话、RBAC、门店数据范围、员工管理、禁用、会话重置和审计;Windows 全量测试与 WSL MySQL 8.4.9 往返迁移通过。 |
|
||||
| M03 门店、房间、价格、营业时间 | DONE | `d563078` | docs/devlogs/2026-06-18-M03-D-场景码NFC与WiFi.md | M03-A/B/C/D 已完成门店房间、装修广告、媒体、地图选店、场景码/NFC 页面导航和受控 Wi-Fi;真实微信小程序码图片生成留待 M08 真机联调。 |
|
||||
| M04 订单、时段锁定、支付闭环 | PARTIAL | `af7a45d` | docs/devlogs/2026-06-18-M04-A-定价与时段预占.md | M04-A 已完成统一定价、不可变价格快照、事务房间锁、重叠预占拒绝和过期释放;下一阶段 M04-B 订单状态机。 |
|
||||
| M04 订单、时段锁定、支付闭环 | PARTIAL | `40c891f` | docs/devlogs/2026-06-20-M04-B-订单状态机.md | M04-A/B 已完成定价预占、完整订单状态机、幂等迁移历史、审计以及预占/现场授权联动;下一阶段 M04-C 续费、取消、换房和管理员调整。 |
|
||||
| M05 会员、余额、套餐、优惠券 | TODO | - | - | - |
|
||||
| M06 设备、MQTT 与真实硬件联动 | TODO | - | - | - |
|
||||
| M07 保洁、通知、任务和语音播报 | TODO | - | - | - |
|
||||
|
||||
Reference in New Issue
Block a user