feat(M09-D3): 完成商品寄存与安全取出闭环

This commit is contained in:
Codex
2026-08-11 07:39:46 +08:00
parent 1a3ea7bdf0
commit 60264cbd11
28 changed files with 2735 additions and 72 deletions
+34 -28
View File
@@ -1,11 +1,11 @@
# 自助棋牌室系统开发总纲(V5.7
> 文档版本:V5.7(中文 Git 提交门禁 + `93af128` 最新已推送源码校准 + M09-D2 在制收口 + 持续工程开发版)
> 文档版本:V5.7(中文 Git 提交门禁 + `1a3ea7b` 最新已推送源码校准 + M09-D3 在制收口 + 持续工程开发版)
> 更新日期:2026-08-11Asia/Shanghai
> 直接前序版本:V5.6;本文完整继承 V5.6 的全部功能、架构、协议、部署、安全、测试、验收和持续开发要求。
> 最新已审计提交证据:`93af128002c27ea548e9ed7d0c9af7b8f264002a`,且接管时 `HEAD == origin/main`;其后的 M09-D2 工作区代码待随本次中文工程提交固化。
> 默认执行起点:保护并继续完成当前 M09-D2 在制工作;通过编译、全量测试、真实 MySQL 往返和静态门禁并以中文提交推送后,进入 `M09-D3 → M09-D4 → M09-REGRESSION → M10-A/B/C/D → M10-RC1`
> 最新已审计提交证据:`1a3ea7bdf0bc55f85a87ef3c251fc7bbeb7d1620`,且接管时 `HEAD == origin/main`;其后的 M09-D3 工作区代码待随本次中文工程提交固化。
> 默认执行起点:保护并继续完成当前 M09-D3 在制工作;通过编译、全量测试、真实 MySQL 往返和静态门禁并以中文提交推送后,进入 `M09-D4 → M09-REGRESSION → M10-A/B/C/D → M10-RC1`
> 唯一交接目标:Codex 只阅读根目录 `V5.7.md`,即可保护当前工作区,直接继续工程编码、测试、中文提交、推送和远端校验,自动推进至 `CODE_COMPLETE`,外部条件具备后继续至 `PRODUCTION_ACCEPTED`
> **V5.7 最高优先级控制规则:** 本文开头“V5.7 增量控制层”和全文最后“第 30 章 V5.7 最终固定游标”共同构成唯一当前执行入口,优先于中间完整继承的 V5.6/V5.5/V5.4 历史标题、旧 HEAD、旧队列、旧示例和旧入口。中间历史正文继续作为完整需求与验收依据,但不得据此把执行游标回退到已经有工程证据的阶段。
@@ -15,17 +15,18 @@
# V5.7 增量控制层
## V5.7-0 M09-D2 收口覆盖层(2026-08-11 最新真实仓库)
## V5.7-0 M09-D3 收口覆盖层(2026-08-11 最新真实仓库)
本节记录 `93af128 + M09-D2 在制工作区` 的真实工程进展,优先于下方审计快照中的 M09-D1 恢复说明、旧 HEAD 和旧游标描述:
本节记录 `1a3ea7b + M09-D3 在制工作区` 的真实工程进展,优先于下方审计快照中的 M09-D1 恢复说明、旧 HEAD 和旧游标描述:
- Git 中文提交门禁已由 `2de796143ff418d681fdb972040b8555a8e058d1` 提交并推送;M09-D1 已由 `93af128002c27ea548e9ed7d0c9af7b8f264002a``feat(M09-D1): 完成商品目录与库存流水底座` 中文业务提交闭环,接管时 `HEAD == origin/main`
- M09-D2 当前工作树已完成 7 张商品订单/支付/退款表,商品订单与支付单分离,订单项固化商品、SKU、规格、价格、数量和金额快照,订单/退款事件由数据库触发器保持不可变
- 顾客下单按服务端目录和门店价格复算并锁定库存;支付回调在死锁/锁等待时有限事务重试且只扣一次,取消/超时释放,退款按履约状态决定返库。配送订单校验本人有效房间订单,自助订单不绑定房间
- 顾客与管理 API、`goods.order.read/manage`、租户/门店范围和测试适配器生产隔离已接线;M09-D2 静态门禁、后端 build/full test 已通过
- WSL MySQL 8.4.10 的 `up → verify → down → up → verify` 已通过,计数为 201 up、150 verify、187 down;并发支付单次扣减、取消/超时释放、退款返库、不可变事件和 M09-D1 跨阶段崩溃重试均有真实数据库证据
- M09-D2 工程与本文档伴随记录待以 `feat(M09-D2): 完成商品订单与库存占用生命周期` 中文业务提交取得 SHA;文档不得虚构尚未产生的提交号
- 唯一执行游标已推进到 `M09-D3`,下一目标为寄存单、分次取出、哈希领取凭证、并发防超领和通知 outbox。M09-D1/D2 若出现回归只做针对性修复,不得删除重做
- M09-D2 已由 `1a3ea7bdf0bc55f85a87ef3c251fc7bbeb7d1620``feat(M09-D2): 完成商品订单与库存占用生命周期` 中文业务提交闭环并推送,接管时 `HEAD == origin/main`
- M09-D3 当前工作树已完成寄存记录、寄存明细、不可变状态事件和逐项数量流水 4 张表;来源限定为已完成商品订单或受控员工手工创建
- 顾客本人或授权员工可分次领取;领取凭证仅保存 SHA-256,部分领取后自动轮换,终态消费,创建和动作重放均不重新泄露已签发原文。行锁、版本 CAS、幂等事件和有限事务重试保证并发不超领
- 顾客与管理 API、`goods.storage.read/manage`、租户/门店范围、审计和通知 outbox 已接线;M09-D3 静态门禁、后端 build/full test 已通过
- WSL MySQL 8.4.10 的 `up → verify → down → up → verify` 已通过,计数为 217 up、159 verify、199 down;跨租户/跨寄存人拒绝、超量拒绝、部分取出、旧凭证失效、并发全量取出单赢家、取消、过期和不可变流水均有真实数据库证据
- M09-D3 工程与本文档伴随记录待以 `feat(M09-D3): 完成商品寄存与安全取出闭环` 中文业务提交取得 SHA;文档不得虚构尚未产生的提交号
- 唯一执行游标已推进到 `M09-D4`,下一目标为顾客小程序与运营后台商品、订单、库存、寄存取出界面。M09-D1/D2/D3 若出现回归只做针对性修复,不得删除重做。
## V5.7-1 本次升级的唯一事实边界
@@ -7070,14 +7071,14 @@ TARGET=CODE_COMPLETE_THEN_RELEASE_CANDIDATE_THEN_PRODUCTION_ACCEPTED
execution_cursor_v57:
document_version: V5.7
audited_snapshot_sha256: cc802fecbea399698e0a9c1b38127bc12ff260d8f4d6a084828108307f557d6f
evidence_head: 93af128002c27ea548e9ed7d0c9af7b8f264002a
evidence_origin_main: 93af128002c27ea548e9ed7d0c9af7b8f264002a
evidence_head: 1a3ea7bdf0bc55f85a87ef3c251fc7bbeb7d1620
evidence_origin_main: 1a3ea7bdf0bc55f85a87ef3c251fc7bbeb7d1620
base_branch: main
remote: ssh://git@git.txyundm.cn:2222/panda/qipai.git
current_stage: M09-D3
current_stage_status: TODO_AFTER_M09_D2_WORKTREE_CLOSURE
last_completed_functional_stage: M09-D2
last_engineering_commit: 93af128002c27ea548e9ed7d0c9af7b8f264002a
current_stage: M09-D4
current_stage_status: TODO_AFTER_M09_D3_WORKTREE_CLOSURE
last_completed_functional_stage: M09-D3
last_engineering_commit: 1a3ea7bdf0bc55f85a87ef3c251fc7bbeb7d1620
last_tooling_commit: 2de796143ff418d681fdb972040b8555a8e058d1
m09_d1_business_commit: 93af128002c27ea548e9ed7d0c9af7b8f264002a
m09_d1_static_gate: PASS
@@ -7086,13 +7087,19 @@ execution_cursor_v57:
m09_d1_mysql_84_roundtrip: PASS_179_UP_141_VERIFY_171_DOWN
m09_d1_interrupted_up_down_retry: PASS
m09_d1_cleanup_probe: PASS
m09_d2_business_commit: PENDING_CURRENT_CHINESE_ENGINEERING_COMMIT
m09_d2_business_commit: 1a3ea7bdf0bc55f85a87ef3c251fc7bbeb7d1620
m09_d2_static_gate: PASS
m09_d2_backend_build_and_full_test: PASS
m09_d2_mysql_84_roundtrip: PASS_201_UP_150_VERIFY_187_DOWN
m09_d2_concurrent_payment_deduct: PASS
m09_d2_cancel_timeout_refund_inventory: PASS
default_next_stage: M09-D4
m09_d3_business_commit: PENDING_CURRENT_CHINESE_ENGINEERING_COMMIT
m09_d3_static_gate: PASS
m09_d3_backend_build_and_full_test: PASS
m09_d3_mysql_84_roundtrip: PASS_217_UP_159_VERIFY_199_DOWN
m09_d3_one_time_credential: PASS
m09_d3_concurrent_retrieval: PASS
default_next_stage: M09-REGRESSION
actual_head_policy: REAL_REPOSITORY_EVIDENCE_WINS
worktree_protected: true
unresolved_deletions_policy: EXCLUDE_FROM_STAGE_COMMIT_UNTIL_USER_CONFIRMS
@@ -7106,13 +7113,12 @@ execution_cursor_v57:
auto_continue_until_code_complete: true
```
真实 `D:\qipai` 若有 `93af128` 之后的提交,Codex 必须以 `git merge-base`、diff、迁移、代码、测试、提交和远端 SHA 判断进度,自动跳到第一个未完成阶段。当前 M09-D2 的推进依据是商品订单、支付库存工程、迁移、测试与真实 MySQL 共同证据,不是 docs-only 状态变更;若伴随业务提交尚未完成,先保护并提交当前工作树,再继续 M09-D3
真实 `D:\qipai` 若有 `1a3ea7b` 之后的提交,Codex 必须以 `git merge-base`、diff、迁移、代码、测试、提交和远端 SHA 判断进度,自动跳到第一个未完成阶段。当前 M09-D3 的推进依据是寄存取出工程、迁移、测试与真实 MySQL 共同证据,不是 docs-only 状态变更;若伴随业务提交尚未完成,先保护并提交当前工作树,再继续 M09-D4
## 30.2 最终唯一队列
```text
M09-D3
→ M09-D4
M09-D4
→ M09-REGRESSION
→ M10-A
→ M10-B
@@ -7124,13 +7130,13 @@ M09-D3
→ PRODUCTION_ACCEPTED
```
Git 中文门禁和 M09-D1 已由真实工程提交闭环;M09-D2 当前伴随业务提交必须完成中文 commit、push 和远端校验后继续 M09-D3。不能依据文档中的 `DONE` 单独跳过其他阶段;已完成阶段若出现回归,只做针对性修复,不得重启整个模块。
Git 中文门禁和 M09-D1/D2 已由真实工程提交闭环;M09-D3 当前伴随业务提交必须完成中文 commit、push 和远端校验后继续 M09-D4。不能依据文档中的 `DONE` 单独跳过其他阶段;已完成阶段若出现回归,只做针对性修复,不得重启整个模块。
M09-D2 的唯一允许推进条件:
M09-D3 的唯一允许推进条件:
```text
M09_D2_WORKTREE_PROTECTED=PASS
M09_D2_STATIC_GATE=PASS
M09_D3_WORKTREE_PROTECTED=PASS
M09_D3_STATIC_GATE=PASS
BACKEND_BUILD=PASS
BACKEND_FULL_TEST=PASS
MYSQL_84_ROUNDTRIP=PASS
@@ -7141,7 +7147,7 @@ PUSH_VERIFIED=PASS
REMOTE_COMMIT_SUBJECT_CN=PASS
```
任一项未通过时保持 `CURRENT_STAGE=M09-D2`,修复后重跑;不能先更新为 DONE 或进入 M09-D3
任一项未通过时保持 `CURRENT_STAGE=M09-D3`,修复后重跑;不能先更新为 DONE 或进入 M09-D4
## 30.3 每次提交和推送的最终语言门禁
@@ -7202,4 +7208,4 @@ USER_FACING_LANGUAGE=ZH_CN
请阅读 V5.7.md,按当前进度继续开发。
```
Codex 读取后直接核验真实仓库,保护已完成阶段与未决删除;若 M09-D2 工作树尚未提交,完成 `feat(M09-D2): 完成商品订单与库存占用生命周期` 中文 commit、push 和远端校验,然后从 M09-D3 建立寄存/取出安全闭环并沿唯一队列持续推进。禁止先生成替代计划文档,禁止只改 Markdown,禁止删除已完成工程重做,禁止把未决删除混入业务提交,禁止把英文摘要推送到远端,禁止把外部阻塞扩大为内部停工理由。
Codex 读取后直接核验真实仓库,保护已完成阶段与未决删除;若 M09-D3 工作树尚未提交,完成 `feat(M09-D3): 完成商品寄存与安全取出闭环` 中文 commit、push 和远端校验,然后从 M09-D4 建立顾客与运营端商品工作台并沿唯一队列持续推进。禁止先生成替代计划文档,禁止只改 Markdown,禁止删除已完成工程重做,禁止把未决删除混入业务提交,禁止把英文摘要推送到远端,禁止把外部阻塞扩大为内部停工理由。