交付出件箱

← 返回出件箱

云机会话交接 · 2026-08-16 v2(批 B 微信支付 · test 已真机付款成功)

新会话读完本文即可接手,不需回溯对话。 取代 CLOUD-SESSION-HANDOFF-20260816.md。

🔴 第 0 节必须先读完再动手 —— 长官原话:「每次换新会话就会变傻就会经常犯错,这个一定要教好。」


0. 🔴 怎么不变傻(比进度重要,读完再往下)

0.1 变傻的真因不是失忆,是「没查就说」

你不是不知道,是手边没有上一会话查过的事实,于是用推测填空——
而推测听起来跟事实一模一样,长官分不出来,只能等踩坑才发现。

上一场会话(15 小时)犯的错 90% 是同一类:没查就下结论。

0.2 判据表 ——「看起来成功」不算成功

这张表是拿真事故换来的,每一行右边那列都是唯一能信的信号。

事情 ❌ 假判据(我犯过) ✅ 真判据
接口能用 service 层单测全绿 真打 HTTP(14 条用例全绿,接口却因路由遮蔽 422 调不通)
前端改动生效 页面返回 200 抓 JS chunk 比对指纹(首屏是 CSR 骨架,grep 页面搜不到文案)
长官能打开链接 我自己 curl 通了 给公网域名(内网那条要 tailscale,同一个错犯了两次)
数据是真实的 库里有 1.5 万行 看创建时间/是否全挂测试渠道(15981 行全是测试垃圾,我当真数据写进报告被戳穿)
功能做完了 后端接口+测试都绿 前端有没有渲染(付款列后端全绿、前端 0 处引用,运营根本看不见)
并发安全 有唯一约束/加了锁 真并发跑一遍(5 次连点 4 次抛 500)
权限拦得住 代码里有 Depends(require_xxx) 真发无 token 请求看是不是 401/403
保护在起作用 测试跑绿 拆掉保护看它是否真会红(反证)
没破坏别的 全量跑绿 与基线逐条比对失败清单
偶发不是我的锅 单独跑通过 基线上跑同一用例也失败(唯一铁证)
发版成功 脚本 exit 0 流水线出现新 run + 部署步骤 SUCCESS

0.3 有一类问题你永远查不出来,必须请长官真机走

云机没有浏览器(无 Chromium、内存装不起 node_modules)。以下 curl 一万次也碰不到,
别声称验过,老实说"须真机验":

📌 但能连 test 就别偷懒:走出网代理直接 curl https://test.tongban.love/...。
--noproxy "*" 只用于内网服务,套到外网会一律返 000 然后误判成"连不上"(我栽过两次)。

发版后的标准动作:① 打改动的端点看响应码 ② 前端抓 chunk 验指纹。别等长官来报错。

0.4 说出口之前的三个自问

  1. 这句话我是查过的,还是推出来的?—— 推的就明说"我没查"
  2. 如果错了,代价谁承担?—— 长官/生产承担的,必须先验
  3. 我说"成功了",凭哪个信号?那个信号会不会骗我?

0.5 别手工做已经固化成命令的事

status                 # 开局:分支/工作区/其他worktree/流水线/卡点
release-test "标题"     # 发版:判据内置(MR号/merged/新run 三重校验)
deliver 文件名          # 交付:类型白名单+密码拦截+公网链接

🔴 sudo release-to-test 不要直接用(有交互,非交互环境会静默取消却 exit 0)。

0.6 长官交互


1. 一页速览

项 状态
主线 门店签约并行化 v2 · 微信支付(批 B)
test 状态 ✅ 已真机付款成功(长官 8-15 晚实测通过)
本地待发 🔴 37 个 commit · 工作区干净 · 长官说"先等等,还有别的要改"
分支 feature/wechatpay-pay-core
worktree /home/dev2/doctor-ai-brain/.claude/worktrees/bridge-cse_01AcGpTe1nKXvLXiYNPAGF53
全量测试 658 passed / 17 failed,与基线逐条一致、0 新增

接手第一件事:别发版,等长官提新问题。


2. 这一轮真机测出并修掉的(都是只有真人能发现的)

# 现象 根因
1 授权后「链接已失效」 隐私脱敏把 token 从地址栏抹掉存 history.state,整页跳转必丢
2 调不起支付「缺少参数 total_fee」 jsapi_prepay 返回整个字典被当字符串塞进 package
3 调不起支付「URL未注册: /signup」 客户端路由 → 微信按首次加载的 URL 判定当前页
4 调不起支付「URL未注册: /payment」 商户平台支付目录写成 http://,站点是 https(长官改后成功)
5 并发下单抛 500 rollback 后用了过期 ORM 对象

⚠️ 第 2、3、5 是代码 bug,第 4 是配置。报错文案会指错方向——
total_fee 指向参数实际是 package 格式;URL未注册 指向目录实际是路由/协议。
排查顺序见记忆 [[wxpay-invoke-troubleshooting]]。


3. 安全 / 并发 / 异步核查(长官点名要查,全部真打)

项 结论
5 个回调并发 ✅ 只入账 1 次,¥2380 没算多(行锁 + 唯一约束)
5 次连点下单 ✅ 复用同一订单号,只建 1 笔(修完不再抛 500)
越权 ✅ 拿 A 会话塞 B 的 org_id → 仍记 A 名下(payload 无 org_id 字段)
金额篡改 ✅ body 塞 0.01 → 按单价重算 2380(库层 CHECK 再焊一道)
回调验签 ✅ 验签在写库之前;微信 SIGNTEST 探测按失败应答
自检口 ✅ 已加鉴权(长官定:保留当运维工具,不删)

4. 还没做的

  1. ⬜ 等长官提新问题(他在测)
  2. ⬜ 攒够后发 test(等现场令)
  3. ⬜ 上生产前:切 settle-prod 流水线源(仍指旧仓)+ 支付授权目录填
    https://chat.tongban.love/ 🔴 必须 https
  4. ⬜ 批 C/D 剩余:三端授权覆盖、进度页双卡片、渠道端 store-progress 筛选项、
    存量在途人工跑完、凭证链退役
  5. ⬜ 批 E 整个没动:增购/续费仍走线下转账
    🔴 service/page.tsx 一行都别碰(实查:微信支付调用 0 处、线下凭证 5 处,动了就弄坏在用的功能)

5. 动代码前必读的记忆

记忆 什么时候必看
new-session-dont-get-dumb 开局就读,防呆总则
parallel-payment-design 改付款/审核任一侧之前
wxpay-invoke-troubleshooting 支付调不起时(含 7 步顺序)
wechatpay-batch-b-facts 动微信支付代码前
cloud-can-reach-test-via-proxy 想验证线上时
cloud-local-db-is-all-test-data 想拿库里数据下结论时
mockup-standard + ~/reports/PROTOTYPE-STANDARD.md 出图/改 UI 时

6. 长官这轮新立的规矩


7. 本轮自伤记账(引以为戒)

  1. --noproxy 用错地方 → 误判"云机连不上 test",同一个错说了两次
  2. 把云机测试库 15981 行当真实数据写进报告,被长官一句戳穿
  3. 契约钉子用裸词做判据,被自己写的注释打中——两次
  4. 写过一行 assert '...' or True(恒真,等于没断言)
  5. 说"确定是支付目录问题"——其实不确定,长官追问才挖出真因
  6. 测试留脏数据(一个上架商品)把别人两条用例搞红

📌 共同点:都是判据选错或没查就说。第 0 节那张表就是这么来的。