2026-09-24 · 接 v3(home-redesign-decisions-v3-20260924.md)。只读调查,零代码改动。
口径以本文为准;v2 的「扫码能力全仓 0 实现」「红线文件冻结」两处已作废。
| # | 事项 | 长官口径 |
|---|---|---|
| 1 | 今日护眼情况四块 | 就是 4L,要做设备绑定,与 Phase 48C 之前的方案串起来 |
| 2 | 多孩子 | 门店数字按孩子算、名单按家三档 —— 同意 |
| 3 | 智脑内提醒 | 同意 |
| 4 | 扫码转店 | 不加确认;转走后原店看不到 —— 同意 |
| 5 | 互扫绑定 | 两个方向都要做(门店扫家长 + 家长扫门店) |
| 6 | 首页独立页面 | 要做 |
| 7 | 打卡当天可重填 | 要做 |
| 8 | 同龄排第几 | 要做(推翻"本期摘出"的建议) |
| 方案 | 内容 | 状态 |
|---|---|---|
Phase 48C 规则 17(9-15 拍板,brand-partner-spec-v1-20260915.md:41,203) |
4L 四格由家长自己绑定点亮:先选 4L 类型,再选品牌型号(型号清单先手工维护),远期做成类似小米之家设备库 | 未开工 |
| 规则 21 | 四格排版选定横排四格(2×2、横滑已比选弃用) | 已定 |
48C 效果图三态(brand-partner-mockup-v2-20260915.html) |
未绑定(灰)/ 已点亮 / 数据未接入(提示联系门店) | 已定 |
今日护眼四格 UI(web/app/h5/chat/components/today-band.tsx + today-detail-sheet.tsx) |
四格正是 大路灯/红光仪/离焦镜/读写台,数字全是写死的假数据 | 死代码:chat/page.tsx:2595 {false && <TodayBand …/>} |
Phase 21B 设备上报(4l-brain-api-plan.md,app/api/device_report.py) |
给第三方硬件厂商推数据用,按手机号关联,不挂孩子;test 库 device_data/device_type_config 均 0 行 |
骨架在,从没真接过 |
家长录检查时的「防控措施」(web/app/h5/family/[id]/exam/new/prevention.ts) |
6 组含品牌词(眼镜类≈Lens、光疗类=Laser+Light 混在一起、远疗类≈Long、另有理疗/食疗/药品),存 refractive_records.prevention_measures |
在用,但是"某次检查勾了什么",不是"绑定了什么设备" |
结论:全仓没有"孩子 ↔ 设备"绑定表(DeviceBinding 等 0 命中,对照组 DeviceData 9 个文件命中)。4L 秒读 / AI 结论不读设备数据和防控措施(four_l_summary_prompt.py grep prevention|device_data 0 命中),本次改动不影响 AI。
prevention.ts 里长官 8-21 批过的品牌词拆成四类(光疗类要拆成红光 / 护眼灯两类)today-band.tsx 一致)today-band.tsx 的四色样式和 constrained-number-picker.tsx 数字选择器_org_visibility_clause)∩ 至少绑了一台 4L 设备的孩子(没绑设备的孩子没东西可记,不算"未记录",待长官确认)先修两道门(v3 第二节):门店视角 _store_visible_clause 接上 service_org_id;家长视角 get_org_patient / 列表里 org_clause 与 own_clause 的 AND 关系改掉。补家长视角真打测试。test/生产 claimed 均 0,零存量影响。
扫一扫能力比 v2 说的小得多(更正):微信签名接口已存在 app/api/wx_jssdk.py:117 POST /jssdk-config,分享卡 / 语音 / 隐藏菜单都在用 wx.config(share/[token]/page.tsx:206、voice-poc、find-similar/page.tsx:252)→ 公众号 JS 安全域名已配。做扫一扫 = 在门店页 jsApiList 加 scanQRCode。
| 方向 | 后端 | 前端要做 |
|---|---|---|
| 门店扫家长 | ✅ 4 端点已通(brand_code_claim.py),家长码是纯文本 token,正好配 scanQRCode 读文本 |
家长端「我的二维码」页;门店端「扫一扫」按钮 → 选孩子 → 直接转入(不弹确认);家长名下没孩子时现场新建(规则 14) |
| 家长扫门店码 | ❌ 要新做:门店码(网址式,参照品牌码 /h5/brand-scan?bt=,微信自带扫一扫就能打开)+ 家长身份的认领接口(复用 claim_patient,白名单改为本家长自己的孩子) |
门店端「本店二维码」页;家长扫码落地页 → 选自己孩子 → 绑定 |
家长 /h5/home、门店 /h5/store-home,对话页只留对话。区块判定沿用 v1/v2(11 复用 / 6 改造 / 7 新建),把 4L 四格、提醒条、同龄排名放进来。登录由批次五一次拆成公共件,首页直接用。
| 现状(查实) | |
|---|---|
数据文件 ssa2026.xlsx(5411 条) |
服务器上找不到(find 全盘只命中 git 对象误报);导入脚本 scripts/import_b1_excel.py 在,但写死从 Mac 本地读 |
| 后端 | 0 实现;机构开关 enable_peer_axial_compare(database.py:133)存在但无代码读取;find-similar-pane.tsx 注释说"后端端点仍在"是错的 |
| 前端 | PeerAxialBlock 组件在(P97/P50/P3 刻度),未挂载,可复用 |
| 方法(长官 9-17 定) | 用自己 5411 条做同龄经验排名,不引外部常模;三条红线:不叫预测 / 写"本库同龄排名" / 不贴红黄绿 |
做法:找回文件上传 → 先审数据(真实孩子数、各年龄样本够不够 —— 长官 9-17 定的第一步)→ 参照库三张表 + 导入 + 查询接口 → 两端首页挂组件。
| 步 | 内容 | 依赖 | 谁 |
|---|---|---|---|
| 0 准备(不写代码,可同时) | ① 长官看批次五对比图 subseat-login-plan-v2-20260924.html → 批次五开工拆登录 ② 找回 5411 数据文件传服务器 ③ 效果图增量改:门店汇总口径、4L 未绑定态、提醒条 ④ 4L 品牌型号初版清单给长官过目 |
— | 长官 / 团队 / 我 |
| 1 后端地基(现在就能开工,不依赖登录) | 修两道门 + 真打测试 → 4L 绑定表 + 品牌型号表 + 绑定接口 → 打卡表 + 提交/查询 + 门店汇总接口 → 提醒表 + 接口 → 门店码 + 家长认领接口 | — | 我 |
| 2 前端(等批次五拆好登录) | 两个首页 + 改全部跳转 + 通知运维改公众号菜单 → 4L 四格 + 绑定流程 + 打卡弹层 → 扫码四个页面 → 提醒条 + 门店名单 → 其余区块(趋势图补线、较上次、已读、待办/今日数据) | 批次五登录公共件 | 我 |
| 3 同龄排第几 | 审数据 → 建库 → 接口 → 挂组件 | 数据文件到位 | 我 |
| 范围 | 影响 | 处置 |
|---|---|---|
现有聊天页 chat/page.tsx |
首页壳搬走;登录由批次五抽走 | 与批次五对齐,不同时改 |
12 处跳到 /h5/chat 的地方 |
登录落地、品牌码落地、退出落地、兜底失败等(v2 §2.3 清单) | 逐个改到新首页 |
find-similar、eye-nav |
把聊天页当"登录救援页" | 登录抽成公共件后改指向 |
| 平板端 | 首页壳是平行实现,不会自动跟着变 | 本期不动平板,单列 |
| nginx 根地址 | chat.tongban.love.conf:156 301 到 /h5/chat |
改指新首页 |
| 公众号菜单 / 二维码物料(仓库外) | 配的都是 /h5/chat… |
必须通知运维改,漏改全挂 |
| 门店 / 家长看孩子的范围 | 修两道门 | 现在 0 条认领数据,零存量影响 |
| 数据库 | 新增约 8 张表(4L 绑定、品牌型号、打卡、提醒、门店码 + 同龄参照库 3 张) | 生产迁移链要接在 #730-#733 + 批次五之后(生产停在 phase48a_002) |
| AI 对话 / 4L 秒读 | 不读设备和打卡数据 | 不受影响 |
| 效果图 | 门店汇总卡"家长"→"孩子"、名单行加"部分记录"、4L 加未绑定态、加提醒条 | 增量改,不重画 |