docs(M04-D): 完成订单模块回归并推进支付

This commit is contained in:
Codex
2026-06-20 14:21:39 +08:00
parent 91801fe6a7
commit f9ec0af2ee
5 changed files with 50 additions and 15 deletions
+2 -2
View File
@@ -1,8 +1,8 @@
# 当前开发成果基线
> V5.0 首次核验日期:2026-06-16
> audited_commit: `089d348`
> next_engineering_target: M04-D 实现短期、可撤销、最小权限的订单分享令牌
> audited_commit: `91801fe`
> next_engineering_target: M05-A 建立统一支付领域和可信支付单
> 事实源:当前工作区、Git 历史、状态文档、Windows/WSL 检查脚本。
## 总体结论
@@ -0,0 +1,35 @@
# M04-D 订单分享
- 日期:2026-06-20
- 起始 commit`3c5cf07`
- 工程 commit`91801fe`
- ENGINEERING_DELTA=YES
- 子阶段状态:DONE,已 push 且 `HEAD == origin/main`
## 工程增量
- 使用 32 字节随机令牌,数据库仅保存 SHA-256 和短前缀。
- 默认分享权限为查看房间与开门,续费必须显式授权。
- 分享有效期默认 30 分钟,限制在 5 分钟至 24 小时。
- 支持订单所有者或门店管理员创建、撤销分享。
- 解析时按查看房间、开门、续费单项鉴权;响应不含手机号、余额和支付信息。
- 撤销、过期或订单进入终态后即时失效,创建/撤销/使用均有无令牌审计。
## 验证
- Windows 后端全量测试和仓库门禁通过。
- WSL MySQL 8.4.9 临时库执行 `up → verify → down → up → verify` 通过。
- 迁移语句:up 66、verify 50、down 62。
- 实测明文令牌未入库、默认续费拒绝、显式续费授权、撤销、过期、终态失效和隐私字段不泄露。
## M04 模块回归
- 并发同房同时段仅一个预占成功。
- 续费冲突不修改原订单。
- 换房冲突整笔回滚。
- 分享撤销与过期即时失效。
- 订单状态历史、人工调整历史和审计链完整。
## 后续
M05-A 建立统一支付领域,接入可信支付单、支付尝试和服务端金额校验。
+2 -2
View File
@@ -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 | `089d348` | 正式订单创建写入授权,取消/退款完成/关闭撤销现场权限;换房在同一订单下事务迁移房间预占,授权归属保持一致MySQL 8.4.9 回滚实测通过。 | 真实开门与设备权限将在 M06 联动,分享开门权限将在 M04-D 接入。 | M04-D 接入最小分享权限,M06 接入真实设备权限。 |
| ORD-001 | 预约下单与多方式支付 | M04/M05 | PARTIAL | `089d348` | 已实现可信定价、并发预占、完整状态机、当前价/锁定价续费、门店取消费规则、事务换房、管理员调时/备注和门店范围内代下单;冲突回滚与调整幂等已在 MySQL 8.4.9 实测。 | 订单分享、支付方式、优惠/套餐权益校验和真实支付回调尚未完成。 | M04-D 完成订单分享,M05 接入可信支付与权益抵扣。 |
| WIFI-001 | 受控 Wi-Fi 凭据 | M03-D/M04 | PARTIAL | `91801fe` | 正式订单与分享令牌均执行最小权限;分享开门权限独立于查看和续费,撤销、过期或订单终态即时失效MySQL 8.4.9 实测通过。 | 真实开门与设备权限仍需 M06 厂商适配器和硬件联调。 | M06 接入真实设备权限。 |
| ORD-001 | 预约下单与多方式支付 | M04/M05 | PARTIAL | `91801fe` | M04 已完成可信定价、并发预占、完整状态机、续费取消换房、管理员调整、代下单和短期可撤销分享;冲突回滚、历史审计及分享失效均在 MySQL 8.4.9 实测。 | 多方式支付、优惠/套餐权益校验和真实支付回调属于 M05。 | M05-A 建立统一支付领域。 |
+8 -8
View File
@@ -2,16 +2,16 @@
```yaml
execution_cursor:
current_module: M04
current_stage: M04-D
current_module: M05
current_stage: M05-A
stage_status: TODO
last_completed_stage: M04-C
next_stage: M04-D
last_engineering_commit: 089d348
last_completed_stage: M04-D
next_stage: M05-A
last_engineering_commit: 91801fe
last_push_verified: true
base_branch: main
blocked_reason: ""
updated_at: 2026-06-20T14:05:41+08:00
updated_at: 2026-06-20T14:20:46+08:00
```
| 模块 | 状态 | 最近提交 | 最近开发日志 | 备注 |
@@ -20,8 +20,8 @@ execution_cursor:
| M01 后端 API 基础工程 | DONE | `2b90d1f` | docs/devlogs/2026-06-18-M01-C-轻量异步任务基础.md | 已完成 Fastify 后端骨架、数据库迁移兼容层,以及 MySQL outbox、幂等任务、租约领取、失败重试、人工补偿状态和独立 PM2 workerWSL 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 | `089d348` | docs/devlogs/2026-06-20-M04-C-续费取消换房.md | M04-A/B/C 已完成定价预占、状态机、续费取消规则、换房、管理员调整、代下单和事务回滚;下一阶段 M04-D 订单分享。 |
| M05 会员、余额、套餐、优惠券 | TODO | - | - | - |
| M04 订单、时段锁定、支付闭环 | DONE | `91801fe` | docs/devlogs/2026-06-20-M04-D-订单分享.md | M04-A/B/C/D 已完成可信定价、并发预占、订单状态机、续费取消换房、管理员调整、代下单和最小权限分享;Windows 全量回归与 WSL MySQL 8.4.9 模块回归通过。 |
| M05 会员、余额、套餐、优惠券 | TODO | - | - | 下一阶段 M05-A 统一支付领域。 |
| M06 设备、MQTT 与真实硬件联动 | TODO | - | - | - |
| M07 保洁、通知、任务和语音播报 | TODO | - | - | - |
| M08 微信原生小程序完整业务 | TODO | - | - | - |