交付出件箱

← 返回出件箱

两端新首页 · 长官 9-24 拍板回复 + 复查结论 v3

接 v2(home-redesign-plan-v2-20260923.md)。v2 第 4.3 节和 H8「红线文件冻结、认领后查不出来」的说法有误,以本文为准。
本文只读调查,零代码改动。

一、长官 9-24 拍板

# 问题 长官回复 落地口径(建议)
H4 护眼灯 vs 大路灯 不是一回事:护眼灯是大类,大路灯是其中一种(落地式) 打卡项叫「护眼灯」,大路灯/台灯都算,家长只填时长。代码里现有「大路灯」(4L 建议文案 four_l_summary_prompt.py、today-band.tsx:52 展示条)不动
H5 多孩子怎么算"未记录" 要细分,不能一棍子打死 见第三节
H3 提醒走什么通道 先在智脑里显示提醒 见第四节
H7 扫码转店要不要确认 不加确认 保持 force_transfer 现行行为。注意:转走后原机构看不到该孩子(Phase48 规则 7,设计如此)
H8 冻结文件能不能改 评估影响,没问题就改 见第二节:9-17 已改完上生产;另查出两处真坑,建议随件 3 修

二、冻结文件复查(纠正 v2)

2.1 v2 说错了:6 处可见性改写已于 9-17 上生产

$ git merge-base --is-ancestor a68a6a02 HEAD && echo YES   # HEAD = origin/main c6884c23
YES ancestor of main HEAD
$ git log -1 --format='%h %ci %s' a68a6a02
a68a6a02 2026-09-17 22:49:48 +0800 fix(phase48a): 可见性六处改写 + 迁移改挂最新头
$ git merge-base --is-ancestor 0000000 HEAD      # 对照组
fatal: Not a valid object name 0000000

refractive_record_service.py:111-135 _org_visibility_clause 现为「未认领按 org_id / 已认领只认 service_org_id」。

2.2 但扫码绑定的核心场景仍有两个坑(代码阅读推断,未实测复现)

场景:家长子席位挂在机构 A 下、自建了孩子(owner_type=parent)→ 门店 B 扫家长码认领(service_org_id=B)。

谁 结果 原因
门店 B 仍看不到这个孩子 门店视角还有第二道门 _store_visible_clause(refractive_record_service.py:79-108,Phase74),只放行"本店建的"或"本店家长席位建的",没接 service_org_id
家长本人 绑定后看不到自己的孩子 get_org_patient 里 org_clause(按家长席位所属机构 A 判)与 own_clause 是两次 .where() = AND(第 646-660 行附近)。A≠B 后 org_clause 为假,整条查不到。9-16 待办报告原以为是 OR,判断错误

两个坑都在互扫绑定"最常见的那一种"情况里必然触发。

2.3 现在对线上零影响

test : total 56 · claimed 0 · no_org 1
生产 : total 14 · claimed 0 · no_org 1      # total 非 0,不是 RLS 假 0;14 与 9-17 交接件记载一致

认领功能至今无前端入口,没有一条数据被认领过 → 现在改不影响任何存量数据。

2.4 建议

随件 3(互扫绑定)一起修,修完先补真打测试:A 家长建孩子 → B 认领 → ① 家长 GET 自己孩子 ② B 店列表/详情,两边都要看得到。现有 tests/integration/test_refractive_visibility_service_org.py 7 条全是门店视角,家长视角 0 覆盖。

三、多孩子口径(建议)

四、智脑内提醒(建议做法)

效果图门店端本来就画了「王家长 · 未读提醒 3 天 · 去处理」,与长官口径一致。

  1. 家长自己没打卡 → 打开智脑首页顶部自动提示(不需门店操作)
  2. 门店点「提醒」→ 记一条提醒;家长下次打开智脑,首页顶部出「XX 门店提醒您记录今天的护眼情况」,点进去就是打卡
  3. 家长看到后门店侧显示「已读」;没看就显示「未读 N 天」
  4. 限制:家长不打开智脑就看不到,手机不会弹消息(主动推送通道仍是空的,见 fact-parent-reach-channels-are-stubs)
  5. 需新建一张提醒小表(门店→孩子、创建时间、已读时间)

注:9-15/16 D9「门店结论只做已读/未读,不做通知」管的是视光结论,与本提醒是两件事,不冲突。

五、版本差距(纠正开局提示)

「落后 origin/test 1365 次提交」是挑拣发版的哈希噪音:main 反过来也有 916 次提交不在 test。按内容比:

$ git diff --shortstat HEAD origin/test -- app web migrations
 86 files changed, 12295 insertions(+), 803 deletions(-)      # 都是在 test 未上生产的其他功能
$ git diff --stat HEAD origin/test -- web/app/h5/chat/page.tsx app/services/refractive_record_service.py \
    app/api/parent_patients.py app/auth/middleware.py app/services/brand_code_claim_service.py app/api/brand_code_claim.py ...
 app/api/h5_chat.py | 15 +++++++++------                    # 本项目要动的文件只差这一个
$ git diff --shortstat HEAD origin/test -- app/api/admin_activity.py   # 对照组
 1 file changed, 205 insertions(+), 248 deletions(-)

开工照规矩从 origin/test 建分支,零额外成本。

六、待办 2/3/4 的思考