新会话读完本文即可接手,不需回溯对话。 取代
CLOUD-SESSION-HANDOFF-20260818.md。🔴 第 0 节必须先读完再动手 —— 长官原话:「每次换新会话就会变傻就会经常犯错,这个一定要教好。」
带 🆕 的是 8-18 这一整天新交的学费。
| 事情 | ❌ 假判据 | ✅ 真判据 |
|---|---|---|
| 后端改动没问题 | 静态检查 / import ok | 本地真库真跑(CI 不跑 pytest) |
| 跑全量测试 | 直接 pytest | 先起核心服务 8010,否则 13 条必红(见 0.4) |
| 没弄坏别的 | 与失败清单比对 | 全绿,且数字对得上(删 N 加 M 要能算清) |
| 发版成功了 | 脚本 exit 0 | 流水线出新 run + SUCCESS;必须 printf 'y\n' \| 喂确认 |
| 🆕 部署真生效 | 流水线绿 | 抓线上包/打接口验特征串,带对照组:新特征命中 + 旧特征消失 + 瞎编路径 404 |
| 🆕 查询返回 0 | 直接当"没有" | 先确认工具存在。which redis-cli 没装的话那个 0 是假的(我真踩了) |
| 🆕 测试偶发红 | 当偶发放过 | 同一文件红两次必查根因 —— 查实是我自己的测试留垃圾 |
| 🆕 给页面加按钮 | 加完就算 | 先查这个状态的单落在哪个列表(开通失败在历史表、不在待处理) |
| 🆕 出效果图 | 照着想象画 | 每个块扒现网真实 DOM + CSS,文案照抄,不自己编 |
| 🆕 调样式 | 目测觉得够 | 浏览器实测:量文字宽 vs 容器宽。差 4px 就断行 |
| 🆕 长官说"不是有 X 吗" | 顺着接话或反驳 | 先 grep 验证(8-18 他说的两次都是对的) |
| migration 没问题 | 本地 upgrade 成功 | 本地是超级用户、权限比 test 大;碰核心表先停 |
| 降级保护有效 | 写了 try/except | 注入必错看主流程活不活;PG 里必须 rollback |
| 删干净了 | grep 0 命中 | 带对照组;区分写路径/读路径,只删写、留读 |
| 长官能打开链接 | 我自己 curl 通了 | 给公网域名 https://dev-tokyo.tail3912a6.ts.net/<文件名> |
| 功能做完了 | 接口+测试都绿 | 前端渲染了没、入口在不在正确的列表里 |
📌 共同点:没查就说 / 判据选错 / 拿目测当测量。
127.0.0.1:5432/doctor_ai_brainbash
cd 仓库根 && source /tmp/core-env.sh
nohup python3 -m uvicorn app.main:app --host 127.0.0.1 --port 8010 > /tmp/core-8010.log 2>&1 &curl /health 看活没活bash
cd settlement/backend && REDIS_URL=redis://127.0.0.1:6379/0 \
SETTLEMENT_JWT_SECRET=local-test-secret CORE_API_BASE=http://127.0.0.1:8010 \
SETTLEMENT_SERVICE_TOKEN=local-core-bridge-token \
python3 -m pytest tests/contract/settlement -q -p no:randomlysettlement/web 下 ./node_modules/.bin/tsc --noEmit(不能 npx tsc)bridge-cse_01AcGpTe1nKXvLXiYNPAGF53,别重装(2 核 3.4G)sudo test-inspect ps|health|trace|ls|envkeys~/render-env/browse.js(路径要写 file:///...,写相对路径会报 invalid URL)--noproxy)status # 开局:分支/工作区/流水线/卡点
printf 'y\n' | sudo release-to-test "标题" # 发版(必须喂 y) · 🔴 必须长官现场令
deliver 文件名(绝对路径) # 交付:公网链接
sudo release-pipeline-status settle-test|test # 查流水线
sudo test-inspect trace settlement-api # 看 test 异常
| 项 | 状态 |
|---|---|
| 主线 | 门店签约并行化 v2 · 微信支付 · 批 E 已收官 |
| 批 E | 六件全部完成并上 test(E-1/E-2/E-3/E-6/E-5/E-4) |
| test 验收 | ✅ 长官 8-18 11:47 真付通两单(增购+续费各 ¥0.01),席位到期 365→730 天 |
| 生产 | 🔴 一次没动,#381 一路压到 #441(接近 60 个 MR) |
| 分支 | feature/batch-e3-store-wxpay · HEAD d1aabb9e · 工作区干净 |
| worktree | /home/dev2/doctor-ai-brain/.claude/worktrees/bridge-cse_01TnUrSjfk72RRz5Terfycmx |
| 测试基线 | 0 红 / 790 绿 / 12 跳过 |
| 新需求 | 首开签约「先付款后补资料」—— 图已定稿、代码一行没动,还剩 2 件待拍 |
| # | 内容 | MR |
|---|---|---|
| E-1 | 服务端自动定价 + 废「待确认金额」 | #429 |
| E-2 | 微信到账 → 待开通 + 自动开通 | #430/#431 |
| E-3 | 门店点了直接拉微信(增购/续费一步付完) | #432/#433 |
| E-6 | 开通失败兜底(原因可见 + 可重新开通) | #436 |
| E-5 | 平台看账号密码(独立 3 次 · 方案A焚毁) | #438/#440 |
| E-4 | 凭证流退役(最后一个提交口硬拒) | #441 |
门店那条线现在是:点「增购席位/续费席位」→ 选数量或勾席位、看见价 →「立即支付」→ 微信付 →
自动开通。中间既没有"申请",也没有传凭证。
每件的技术硬事实(改代码前必读)见记忆
batch-e-hard-facts.md,
那里写了:两种 scope 分工、prepay 三道守门、取消必关微信单、方案A焚毁的新风险、凭证退役边界。
settle-prod 流水线源 —— 现仍指旧独立仓 tongban-settlement.git,最后 run#7 是 08-10https://chat.tongban.love/(必须 https)⚠️ 发生产时 phase70 守门会再数一次存量(「待确认金额」在途单)。它会挡住部署但不会弄坏数据。
效果图:https://dev-tokyo.tail3912a6.ts.net/signup-v3-prepay-first-mockup-20260818.html
已定(别再问):
- 第一页只填 机构名 / 联系人 / 手机号(后两项同一行)+ 下半嵌入支付;点支付先校验这三项
- 现价 2,380,原价 2,880 划线,月折算 ≈¥198.33 × 12
- 第二页:顶部二维码卡 +「补充资料」(原「修改资料」改名)+「刷新状态」(两个按钮同一行,现网本来就是)
- 补充资料弹框:五项 + 四附件全显示,第一页填过的带值;审核通过后才锁,审核中可改
- 驳回态一个字不改,二维码话术与正常态同一句
- 二维码不写死,放 设置管理 →「客服二维码」(建议名)
- 空机构不自动处理(长官手动关闭);防重复建机构不用做(现网已有两层)
还剩两件待长官拍:
1. 🔴「先付款后补资料」= 把 8-15 定的「付款与资料审核并行」改成串行 ——
会动进度页那句"与资料审核互不影响"的文案 + 后端 PAYABLE_REVIEW_STATUSES 白名单
2. 二维码话术定稿(现为「遇到问题?长按或扫码添加专属顾问 / 资料怎么填、审核进度、驳回处理等,一对一协助。」)
一个悬着的样式选择(长官尚未回):主句提到整行后可到 15px,但那块从 114px 长到 152px。
嫌高的话可退回 14px 整行、或码缩到 80px(但长官对码的尺寸很敏感,缩 8px 他一眼看出)。
批 E-1 留的 LEGACY_CLEANUP_STATUSES + legacy-pending-amount 端点 + 机构签约列表页橙色清理条。
条件:test 与生产都确认「待确认金额」= 0 且 phase70 已应用。
redis-cli 查残留返回 0,而那台机器根本没装它 —— 差点当成"没有垃圾"~/reports/CLOUD-SESSION-HANDOFF-20260818-v2.md~/reports/门店签约并行化方案v2-微信支付版-20260813.md云机环境 · 非验收证据。