pay v2 · Execution

pay v2 · 执行总览与评审

2026-07-10 · 一页看全:当前进度 + 依赖 DAG + P2/P7 待审计划 + 你要拍的决策点。详见 设计 · P1 · P2 · P7 · DAG

现状(2026-07-10 第二执行波收官):P1 ✅ P2 ✅ P3 ✅ P5 ✅ P7 ✅ —— pay 仓 design/pay-v2 已含 P1/P2/P5(路由)/P3(crypto·alipay·stripe 三渠道 + 多币种 + biz_code),全部整支 opus 终审通过;codes 库已 push Gitea 并完成 pangolin 宿主集成验证(分支 feat/codes-lib-integration,10 任务,mysql 集成 docker 真跑绿,终审零正确性缺陷,合并前清单已出:replace→真实版本 pin + insteadOf/GOPRIVATE)。剩余路线图:P4 退款 → P6 对账 → P8 订阅。所有分支未合并未部署,等你验收。

1. 8 阶段进度

阶段内容状态
P1核心数据模型(Order/Attempt/Account/Refund)+ money + 账户注册表✅ 完成
P2Provider 抽象 + 一次性收款管线 + 统一入账 + webhook v2✅ 完成
P3首批渠道 adapter:crypto 自托管 / 支付宝 / Stripe✅ 完成
P4退款 POST /refunds + 三向路线图
P5多账户路由策略✅ 完成
P6对账 job路线图
P7codes 共享库(独立仓,A 嵌入各产品)✅ 完成
P8订阅/recurring + 拒付(later)路线图

2. 依赖 DAG 与波次

P1 数据模型✅ 已完成 P2 Provider 抽象收款管线+webhook关键路径起点 P3 渠道 adaptercrypto/支付宝/Stripe P5 多账户路由∥ P3 P4 退款三向 P6 对账 jobquery 兜底 P8 订阅/拒付later P7 codes 共享库(独立仓)零依赖 pay · 全程可并行(worktree)▶ Wave0 与 P2 同步起跑

关键路径 P2→P3→P4/P6(硬串行);波次:Wave0 P7 ∥ Wave1 P2 → Wave2 P3∥P5 → Wave3 P4∥P6 → Wave4 P8。

3. 待审计划

P2 收款管线(pay 仓,7 任务)

  1. Provider 接口 + 6 render_type + PaidEvent + 注册表
  2. fake provider(测试用)
  3. OrderStore 扩展(GetOrder/AttemptByProviderRef…)
  4. 一次性收款管线 gateway(建单/查单/重试/取消)
  5. 统一入账/开通 settle(先幂等入队再幂等翻转,崩溃安全)
  6. webhook v2 outbox + Notifier(event_type + HMAC + 已付门禁)
  7. HTTP /api/v2 接线(D3:与旧版统一 /api 前缀)

P2 详细阅读版

P7 codes 共享库(新仓 ~/code/codes,8 任务)

  1. 模块脚手架 + 通用权益描述符 Entitlement + 状态机
  2. Crockford Base32 生成器(移植 pangolin)
  3. Dialect + 内嵌迁移 + Store CRUD
  4. Mint(批次生成,明文只现一次)
  5. Redeem[T] 兑换事务骨架(宿主本地事务 + grant 回调)
  6. RateLimiter/NonceChecker 接口 + GuardedRedeem
  7. redisx 可选子包(唯一 import Redis 处)
  8. webhook 灌码(pay-contract 式 HMAC)

P7 详细阅读版

4. 决策点(2026-07-10 评审:D2/D3/D4 已拍,余 D1)

D1 · 是否开跑大执行波 —— P2(7)+P7(8)≈15 任务、~40 次 SDD agent 调用,多小时工程;P7 要新建仓 ~/code/codes。开跑 / 先只跑 P7 / 暂缓?【待拍】
D2 · P7 独立新仓 —— ✅ 已拍:认可 github.com/wangjia/codes 独立仓,核心零第三方依赖。
D3 · 路由统一 —— ✅ 已拍:统一 /api 前缀 v2 挂 /api/v2(POST /api/v1/orders 被旧契约占用,同前缀无法并存);旧 /api/v1 仅为存量当面付部署保留,P3 渠道迁入后整组删除,最终只剩一套。其余延后取舍(webhook 暂用 biz_ref、路由首账户延 P5、币种部署默认延 P3+)维持。
D4 · settle 资金链路 & Provider 接口 —— ✅ 已深讲并折入 3 处修订:A1 先入队后翻转+投递门禁(消灭"已付但永不通知"窗口)/ A2 Query(QueryRequest) 带尝试上下文 / A3 PaidEvent.PaidAt 渠道支付时间。详见 P2 阅读版「评审修订」

5. 建议下一步

只剩 D1:说"开跑"即按 DAG 波次启动(P7 新仓 ∥ P2 关键路径,SDD 逐任务实现+复审,每波边界汇报);想稳则"先只跑 P7"。