新会话读完本文即可接手。 取代
CLOUD-SESSION-HANDOFF-20260818-v3.md。
长官原话:「每次换新会话就会变傻就会经常犯错,这个一定要教好。」
⚠️ 第 0 节不是客套话,是当天真事故换来的,先读完再动手。
任务是把库值「待线下付款」的显示名改成「待付款」,要找出所有"拿显示名比对"的地方。
| 盲区 | 我怎么栽的 | 后果 | 怎么防 |
|---|---|---|---|
| 目录范围不全 | grep 了 admin 和 store,漏了 platform(平台手机端) |
审核通过后「驳回资料」按钮消失 | 一律 grep -rn 'xxx' web/app,不限定子目录 |
| 值被拼接藏起来 | 老词写成 ["待","线下","付款"].join(""),明文 grep 一次都不命中 |
审核已过的机构顶部误显示「待资料审核」 | 另扫 \["待" / join("") / 模板拼接 |
🔴 第二个是怎么抓到的:发版后做 chunk 指纹,「待线下付款」期望 0 实得 1。
我没当噪音放过,顺着压缩代码反查才挖出来。
以后凡"期望 0 实得 1",差 1 处都要追到底。
给收款接口加筛选时插错位置,写出 stmt = ( ) 空元组把查询覆盖掉。
ast.parse 过了、uvicorn 起来了、/health 200 —— 只有真打业务接口才 500。
⇒ "能启动"什么都不证明,后端改完必须真打接口。
本地库越跑越脏(我一天跑了十几轮全量),早上的失败清单到晚上就不作数。
正确姿势:git worktree add /tmp/baseX origin/test → 跑同样命令 → 逐条 diff。
今天三次靠这招洗清嫌疑(53/56/40 条失败全都与基线逐条一致)。
长官问"地址为什么不加",我答"门店端也不强制" —— 错的,那是我看后端 Optional 推断的。
一查前端:review/page.tsx:512 明明白白 errors.address = "请填写机构地址"。
后端可选只因为第一页(先付款那步)不收地址。
⇒ 判断"必填不必填",去看前端表单校验,别看后端字段定义。
长官要简体「长官」+ 表情,每条都要。
🔴 触发场景已摸清:一个回合工具调用超过 5 次,人就滑进"技术汇报模式"整个忘掉。
⇒ 发出前专门停一下扫开头。详见 [[changguan-rules]]。
feature/signup-v3-prepay-first · MR #464→#475 · settle-test run#218)长官真机边验边报,25 件:
| 类 | 内容 |
|---|---|
| 显示名漏改 | 「待提交资料」→「资料待补充」四端补齐;「待线下付款」→「待付款」四端统一(库值一律不动) |
| 状态错判 | 🔴 渠道端「有到账确认 ≠ 资料齐了」——「先付款后补资料」打破老前提,资料线优先 |
| 五步重排 | 提交建档 → 完成付款 → 补充资料 → 资料审核 → 账号开通;付款那步只认到账记录 |
| 代填 | 平台手机端加「编辑资料」入口(四类资质各自多选上传);全齐后自动转「资料待审核」 |
| 门店端同口径 | 缺附件能提交、状态不转 + 提示还差哪几类 |
| 筛选 | 三页加「渠道类型」;收款撤「付款方名称」;渠道端摘死项「待确认到账」「付款已驳回」 |
| 付款标签 | 渠道端卡片加付款状态(上机构状态/下付款状态),口径改用与平台端同一个函数 |
| 签约页 | 手机号限 11 位数字;重新进来不再弹授权;「再次购买」「继续查看」文案与尺寸 |
| 杂项 | 收款页统计行重复;驳回态按钮文案「提交」 |
feature/org-search-by-experience-store · MR #476 · test 链 run#527)| 改哪儿 | 看哪条 | 命令 |
|---|---|---|
settlement/** |
settle-test | sudo release-pipeline-status settle-test |
主仓 app/ web/(核心) |
test | sudo release-pipeline-status test |
只看 test 线绿就报"发版成功"——8-13 栽过,8-19 又差点。
| 库里存 | 界面显示 |
|---|---|
| 待提交资料 | 资料待补充 |
| 待线下付款 | 待付款 |
| 已停用 | 已关闭 |
映射唯一出口:backend/app/services/settlement/store_status_display.py
🔴 前端 store.status 是显示名;status_raw 才是库值。拿显示名比库值 = 判断永远不成立(今天栽了两次)。
⚠️ 渠道侧 channels.profile_status 是另一张表另一列,同名但活着,红线不许动。
Channel.channel_type 是推导属性(models/settlement.py:176):
一级=层级1 / 平台直签二级=层级≠1且无上级 / 普通二级=层级≠1且有上级。
翻译唯一出口:services/settlement/channel_type_filter.py。
snsapi_base 静默、只有 openid;snsapi_userinfo 要用户点、能拿昵称头像web/node_modules 各处都没装 ⇒ 主仓 tsc 跑不了(结算那份是软链、不含主仓依赖),git push 说 "Everything up-to-date" 会骗人origin 的 push 地址(outbox)和 fetch 地址(mirror)是两个仓库。
东西进了 outbox 之后再 push 就一律报"已是最新",哪怕 Codeup 一个字没收到。
- 判据:git ls-remote /srv/git/outbox.git|mirror.git | awk '$2=="refs/heads/<分支>"{print $1}' 分开看
- 桥是 60 秒轮询,tail /var/log/git-sync.log 看到「转发 <分支>」才算过
- 日志时间戳断档 = 服务挂了(8-19 停了 1h45m),等多久都没用,直接找 root
LEGACY_CLEANUP_STATUSES)~/reports/minicup-signup-test-guide.md → https://dev-tokyo.tail3912a6.ts.net/minicup-signup-test-guide.md
(单人独立走完整流程 · 九步 · 每步写了"应该看到什么")
# 结算后端(本地真库)
cd settlement/backend
DATABASE_URL="postgresql+asyncpg://postgres@127.0.0.1:5432/doctor_ai_brain" \
SETTLEMENT_SERVICE_TOKEN=dev-test-token SETTLEMENT_JWT_SECRET=dev-secret \
~/venvs/dab/bin/python -m pytest tests/ -q
# 核心后端(主仓根目录)
DATABASE_URL=... JWT_SECRET_KEY="<≥64字节>" ~/venvs/dab/bin/python -m pytest tests/contract tests/api -q
# PG 起法(共享内存段丢了会连不上,重启即可,数据在磁盘)
~/venvs/dab/lib/python3.10/site-packages/pgserver/pginstall/bin/pg_ctl -D ~/pgdata start
# 查 test 库(只读)
sudo db-query test "SQL"
SETTLEMENT_JWT_SECRET;平台后台/核心用 JWT_SECRET_KEY,两把不一样sub 必须是真实用户 idnode ~/render-env/browse.js <url> --script <steps.js>,注入登录态见各页存储键云机环境 · 非验收证据。