Files
pangolin/docs/pay-v2-dev-log.md
T
2026-07-12 18:32:24 +08:00

5.3 KiB
Raw Blame History

pay v2 支付+订单 — 自动开发决策日志

2026-07-11 起,自动模式落地。用户明早 double check。每个决断记这里。

背景

用户指令:把今天设计的支付/订单功能全部落成真实代码(Flutter + Go),前后端测试,增量提交,自行决断,留记录。

最终 UX 模型(prototype 已定稿)

  • 购买页一个支付渠道 segswitch:默认 USDT→加密货币,可切 人民币→支付宝。渠道=币种=方式,一步定,无弹层。
  • 套餐价随渠道切换(一口价不换算):月 ¥29.99/$4.99 · 季 ¥68.88/$12.99 · 年 ¥199.99/$34.99。
  • 买完直达支付页:crypto=USDT 地址+精确金额;alipay=桌面二维码/移动拉起 App。
  • 订单:列表→详情,状态 pending/paid/settled/expired。
  • nezha(哪吒)已从购买流程移除。

决策日志

  • [step0] prototype 支付渠道 switch 收口(3 屏 + .segswitch 原子入真相源+登记)。→ 提交后进开发。

[step1] prototype 支付渠道 switch 收口(2026-07-11

  • .segswitch 原子入 atoms.css + 登记 index.htmlpurchase.html/ui-mobile/ui-desktop 三屏改成购买页渠道 switch(默认 USDT→crypto / 人民币→alipay),删两步弹层 + nezha。
  • 闸全绿:check-ds 5 项 / check-l1-sync58 图标 + 190 l10n×6)。

[step2] 服务端 pay orders + 分币种 catalog2026-07-11

  • catalog.goCatalogItem.PriceUsdtMicroUSDT 展示价,一口价)+ SettlementCurrency/DisplayAmountMinor helpercrypto→USDT / 法币→CNY)。
  • store.goPurchaseRow.CreatedAtInsert 增 amount/currency 参(下单落展示金额,webhook 覆盖实际);新增 ListByUser
  • handler.go:新增 ListGET /v1/pay/orders,纯本地台账倒序)+ orderView 富字段;GetOrder 详情回带 sku/plan/method/amount/currency/created_at/paid_at;下单按方式落展示金额。
  • main.go:注册 GET /v1/pay/orders
  • 测试:新增 List 越权/倒序/富字段、下单展示金额分币种、详情富字段;修 3 个 pre-existing 迁移测试renumber 21→23 遗留)。go test ./... 全绿。
  • 决策:USDT 展示价放服务端 catalog$4.99/$12.99/$34.99),客户端 switch 直接读,不硬编码;实际扣款仍以 pay 侧为准。

[step3] 客户端 Flutter 落地(2026-07-11

  • 探查结论:购买/支付主干已存在(Riverpod + payment_api + payment_page 多态渲染);缺订单列表/详情整链 + 购买页 segswitch/分币种。
  • 锁定共享契约(主 agent 手写,防并行冲突)
    • models/payment.dartPayChannel{usdt,cny}.currency/.method);PayCatalogItem.priceUsdtMicro + priceLabel(ch)/perMonthLabel(ch)/monthspriceLabel 改带参);新 PayOrderSummaryPayOrderStatus.summary 富字段。
    • payment_api.dartlistOrders()
    • l10n+19 getter(支付渠道 switch 4 + 订单 15)×6 语言,l10n 闸绿(209×6)。
    • StatusPill 复用(created→connecting/等待付款、paid→connected/已开通、canceled→neutral/已取消)。
  • 两 agent 并行建屏A=SegSwitch widget + purchase_page 重构(渠道 switch 置顶、分币种价、删底部弹窗) + payment_page 订单卡;B=orders_provider + orders_page(列表+详情) + 导航(NavView.orders + desktop_shell + account 入口)。
  • 决策:USDT 展示价由服务端 catalog 下发(不客户端硬编码);「继续支付」MVP 走购买页重下单(retry-resume 列为后续)。

[step4] 集成 + 测试 + 提交(2026-07-12

  • 整体 flutter analyze 0 error3 个 pre-existing infowithOpacity×2 + unused import)。
  • flutter test 226 全绿:修 priceLabel 带参、假 API 补 listOrders、购买页测改成默认 USDT+切 CNY 断言、新增订单列表/空态/详情测试、golden 重录(icon 迁移+账户订单入口+连接键 loader)。
  • 服务端 go test ./... 全绿。
  • l10n 19 getter ×6 语言补 @overridecheck-l1-sync 绿(209×6)。check-ds 绿。
  • 提交a5adbf3 server / f6ce526 design / 272eca0 client。→ push + draft PR。
  • 遗留(非阻塞,明日可议):订单「继续支付」走重新下单(非 retry-resume);订单无 expired 本地态;local-l13-start.sh 是本地联调脚本(含 throwaway 密钥)不入 git。

[step5] 账户 IA 重构落地 + 订单过期态(2026-07-12,SDD 执行)

  • 计划 docs/superpowers/plans/2026-07-12-account-ia-reorg.md,9 任务 SDD(每任务实现+审查+修)全过。
  • 后端(Task 0):订单展示层过期态(created 超 30min TTL → orderView.Status=expired,零迁移),go test 绿。
  • 前端(Task 1-7.5):NavView 加 invite/notifications;l10n +21 getter×6;联系渠道单源+Redeem 删去哪买;账户页重排+邀请入口+删偏好卡+formFactor 门控+InviteScreen 占位;桌面侧栏加 Account 一级+顶栏通知铃铛+NotificationBell;通知占位屏+移动铃铛;设置页归连接/外观/关于三组+Web 下沉;订单页 expired pill。
  • 验收:flutter analyze 0 error;flutter test 232 全绿(7 desktop golden 因 IA 改壳重录);check-ds/check-l1-sync(59图标+230×6 l10n)绿;server go test 绿。
  • 待:server 重编部署 pangolin1(Task0 生效)+ 终审 + Windows 编译测试。
  • 遗留(终审triage):ContactChannel 死 class / chEmail·buyTitle·buySub 孤立 l10n / _SectionLabel 双份 —— 均 Minor。