新会话:从头到尾读完再说话。变傻的真因是「没查就说」——每条硬事实都附了自证命令,引用前先跑。
memory 和交接件只是参考,跟代码冲突以代码为准。
上一份:~/reports/CLOUD-SESSION-HANDOFF-20260906.md(第 0 节防呆表仍有效)
| 事实 | 值 | 自证命令 |
|---|---|---|
| 工作 worktree | /home/dev2/doctor-ai-brain/.claude/worktrees/s2-rework |
git -C <路径> branch --show-current |
| 分支 · tip | feature/stage2-rework-vf-ui2 · e7504ae0 · 工作区干净 · 0 个未发 commit |
git status --short(空) |
| 🔴 生产 | 视光档案二期 9-07 已上线(37 MR · 合并点 0454e346) |
git grep -c ai_comparison origin/main -- app/services/refractive_record_service.py(应 22) |
| test 上 | 0e696b03(别人的告警功能 MR#647) |
sudo test-inspect deploy |
| 守门基线 | 报告秒读+4L prompt 40 passed | 见第 6 节 |
| 红线四文件 md5 | d9458a75(four_l_summary_service.py) 4cf281ca(four_l_summary_prompt.py) dcd79643(four-l-detail-sheet.tsx) e7f38502(four-l-mapper.ts) |
md5sum ... \| cut -c1-8 |
| 报告秒读 prompt md5 | 0f20dfec4d58adbcc26d82d31105967e |
第 6 节 canonical 命令 |
| 发 test | sudo release-to-test --yes "标题";先 git fetch origin test && git merge origin/test 对齐 |
— |
| 发生产 | 先跑 status 查待发编号(见第 5 节坑 1),再 sudo release-to-prod --mr N... --branch release/短名-日期 --auto-merge --yes |
— |
| 迁移 | 不用找 root:生产每轮部署无条件跑 alembic upgrade heads,代码落地自动执行 |
— |
0454e346),迁移自动跑完(batch5_ai_conclusion · 7 个新列都在)~/reports/platform-mobile-org-admin-plan-20260907.md~/reports/platform-mobile-org-admin-mockup-v3-20260907.htmlproject-myopia-prediction| 事实 | 证据 |
|---|---|
| 平台手机端前端在结算项目 | settlement/web/app/platform/minicup/ |
| 平台手机端后端也在结算项目 | settlement/backend/app/api/settlement/platform_mobile.py |
| 机构管理数据在主项目 | organizations 表 + app/api/api_v1.py / admin_orgs_access_link.py |
| 两系统间已有专用通道 | settlement/backend/app/core_client/client.py → 主系统 /internal/settlement/* |
| 通道鉴权 | header X-Service-Token(env SETTLEMENT_SERVICE_TOKEN),不走 require_role("admin") |
| 通道是我们自己建的 | git log -- app/api/internal_settlement.py 最近 3 次全是 dev2(8-15/8-18/8-20) |
| 🔴 14 个开关不在 organizations 表 | 在独立的 org_brain_config 表;结算侧 core_readonly.py 零可见性(连模型都没有) |
| 结算侧 Organization 模型只映射 8 列 | 主库实际 18 列;core_readonly.py:42-61 |
主系统侧 · 新增 /internal/settlement/orgs/* 端点(4 类):
1. 改机构基本信息 + 14 个开关(现有 PUT /api/admin/orgs/{id} 走 admin 鉴权,不能直接用)
2. 停用 / 启用(现有 PATCH /api/admin/orgs/{id}/status)
3. 重新生成凭证(现有 POST /api/admin/orgs/{id}/regenerate-credential)
4. 通用新建机构(现有 provision_organization 是签约专用:套餐 10 开关写死不接受传参 internal_settlement.py:311-322、幂等键绑签约编号,不能复用)
结算侧 · core_client/client.py 补函数封装:
- 上面 4 类的 wrapper
- ⚠️ 另有 2 个核心侧已有路由但客户端没封装的:席位启停 /seats/{uid}/status、密码重置 /seats/{uid}/password-reset
结算侧 · 前端:
- 7 个页面 + 2 个二级页 + 5 个弹窗 + 5 个异常态(全在方案图上)
- 新增权限位(现有 13 个全是 channel/store/payment/ledger/settlement/share_record,没有 orgs),定义在 settlement/web/app/platform/minicup/_components/platform-mobile-context.tsx:17
凭证复制格式:
- 长官 9-07 拍板 抄一份到 web 包(不打通跨包引用)
- 源:settlement/web/lib/seat-credentials-text.ts 的 buildSeatCredentialsText()(长官 7-28 定稿格式)
- 两处文件头要互相加注释指认,防文案漂移
- ⚠️ PC 端 seats/page.tsx:1513-1520 自己手写了 formatCredentialCopy() 且多账号场景无文本可复制(只能下载 Excel)→ 手机端「多账号一键复制」是新增能力,非复刻
| 批 | 内容 | 风险 |
|---|---|---|
| 一 | 只读:机构列表/详情、席位列表/详情 | 最低,先让长官看界面 |
| 二 | 写:改基本信息、14 开关、停用启用 | 中 |
| 三 | 高危:新建机构、重新生成凭证、批量生成席位 | 高(涉凭证) |
| # | 决策 |
|---|---|
| 1 | 新功能叫「机构管理」;手机端现有 platform/minicup/stores 标题从「机构管理」→「机构签约」(与 PC 端结算侧对齐) |
| 2 | 底部导航「机构」栏不改 |
| 3 | 首页「渠道资料审核」替换成「机构管理」(该入口与底部「渠道」栏同目的地,重复) |
| 4 | PC 端两个既有缺陷都不修(门店手机号死字段;14 开关只有品牌价值 4 个有未保存提示——已验证不丢数据) |
| 5 | 创建机构后不弹凭证窗、不回列表,直接进该机构详情页(便于接着开席位) |
| 6 | 密钥到「接入凭证」里看/重新生成(api_secret 数据库仅存哈希,只能重新生成) |
| 7 | 「下载 Excel」→「一键复制全部凭证」 |
| 8 | 席位卡四行:席位账号 / 微信昵称·脱敏ID / 门店名 / 到期+设备;字段名叫「席位账号」不叫「账号」 |
| 9 | 机构卡:「席位 24 · 启用 18 · 创建于 2025-03-12」一行 |
| 10 | 危险操作收进「更多操作」二级弹层,防误触 |
| 11 | 列表改加载更多,不用上一页/下一页 |
| 12 | 机构洞察本期不做 |
GET /api/v1/admin/orgs 响应无 seat_count/active_seat_count 字段,需后端新增聚合orgs/page.tsx:16-17 注释),需新增 page/sizetodo-store-exam-image-upload)todo-backend-should-compute-numbers-not-llm)merge-base --is-ancestor ❌(重造式 cherry-pick 会换号)②按文件内容比 ❌(发过之后 test 还会继续改)③看 main 提交消息里的挑取标记 ✅ 唯一准。发版工具报「已在 codeup/main」时信工具。root 9-07 已加只读 status 子命令:bash
cd ~/doctor-ai-brain && git fetch -q origin test main
python3 /usr/local/lib/release/release_main.py status --repo ~/doctor-ai-brain \
--test-ref origin/test --main-ref origin/main --mr 563 --mr 641origin 不是 codeup,必须显式传 --test-ref/--main-ref,否则 git 128。guardian_phone→phone)②说戴镜史格式不同(实际一致)③说防控手段两端都有(实际家长端根本没有,是长官 8-26 自己去掉的)。git show --name-only <merge_sha> 对合并提交返假 0(默认不展开)。正确:git diff --name-only <sha>^1 <sha>。"status": "MERGED" 可能是上一轮残留。发完必须自己查 main 上标志符号(带对照组)+ 生产库。git diff origin/main:<f> <功能开工前tip>:<f>=0 差异→无他人改动 ③有差异则逐项 grep 确认 main 上的关键功能 test 上也有。严禁白点名。update_my_child 里有硬编码 setattr 白名单元组,不加进去 Pydantic 收了也会被丢弃。<body>/<html> 各只有 1 份 → 是假象,浏览器打开正常。git stash push -u -m "verify-<tag>" 对比改前改后,失败清单一致=存量。⚠️ 严禁裸 stash/pop(多会话共享栈)。W=/home/dev2/doctor-ai-brain/.claude/worktrees/s2-rework
cd $W && git status --short && git log --oneline -3
# 守门(40 passed)
python3 -m pytest tests/unit/test_report_scene_prompt_baseline.py tests/unit/test_four_l_summary_prompt.py -q | tail -1
# 报告秒读 canonical md5(必须 0f20dfec4d58adbcc26d82d31105967e)
PYTHONPATH=$W python3 -c "
import datetime,dataclasses,hashlib
from app.services.four_l_summary_prompt import build_summary_messages, SummaryHint
v={x.name:None for x in dataclasses.fields(SummaryHint)}
v.update(exam_date=datetime.date(2026,9,4),age_years=10.0,myopia_level='低度近视',sph_od_d=-2.0,sph_os_d=-2.0)
m=build_summary_messages(SummaryHint(**v),[],scene='report')
print(hashlib.md5((m[0]['content']+chr(10)+'<<<USER>>>'+chr(10)+m[1]['content']).encode()).hexdigest())"
# 红线四文件 md5(d9458a75 / 4cf281ca / dcd79643 / e7f38502)
md5sum app/services/four_l_summary_service.py app/services/four_l_summary_prompt.py \
web/app/h5/chat/components/four-l-detail-sheet.tsx web/app/h5/chat/lib/four-l-mapper.ts | cut -c1-8
# 生产是否已含视光档案二期(应 22,对照组 _patient_dict 应 4)
git grep -c "ai_comparison" origin/main -- app/services/refractive_record_service.py
git grep -c "_patient_dict" origin/main -- app/services/refractive_record_service.py
# test 部署状态(唯一权威判据)
sudo test-inspect deploy
~/reports/platform-mobile-org-admin-plan-20260907.md~/reports/platform-mobile-org-admin-mockup-v3-20260907.html~/reports/myopia-predict-mockup-v2-20260906.htmlrelease-prod-lessons-20260907project-stage2-rework-vf-line-b~/reports/CLOUD-SESSION-HANDOFF-20260906.md