结论:部分能用。
1. 手机里的画面(首页/设备库/填今日/消息/家庭记录)配色、栏目基本沿用 flat1,「按孩子算/三种分组/没绑设备不算/当天可改」都与总方案一致,可以当「第2件」方案图的底子。
2. 但有 5 处要改、5 项是总方案里没有的新东西(尤其「复查计划」整套功能量很大),这些没拍板前不能当定稿方案图;另外设备库缺「详情/绑定确认」页。
3. 后端:设备库、品牌/型号、每日打卡、提醒、站内消息铃铛、复查计划,test 分支上全都没有(只有厂商推送的旧设备表 + 门店结论已读回执),第2件基本是新建。
评审对象:/home/dev2/reports/shared/home-prototype-v04-20260928.html。用 Playwright 逐页签真渲染并截图(存 /tmp/proto-v04/*.png,共 8 张,都用 Read 看过)。原型是纯前端演示,数据/日期是固定假数据。
对照:总方案 home-redesign-master-plan-20260924.md、效果图 zhaoyang-home-6styles-20260921-flat1.html、代码 origin/test。
| 块 | 为什么可用 |
|---|---|
| 家长首页「今日护眼情况」4 格(离焦镜/红光仪/护眼灯/读写台)+ 「2/3 已记录类别·仅统计已绑设备」+ 读写台「未绑定·+添加设备」第三态 | 总方案 §七第4条要求补「还没绑设备」态,这里补上了;完成度只算已绑的,符合"没绑设备不算没记录" |
| 「修改今日记录 / 填写今日」+ 填写页「0=今日未用、留空=尚未记录、当天可改」 | 与已拍板「当天记错可以重填」一致 |
| 首页顶部三个入口「我的二维码 / 扫一扫 / 添加设备」 | 总方案 §七第5条要求补的入口 |
| 家长右上角铃铛+消息页(结论解读 + 日常记录提醒,每条标孩子,点开才算已读) | 与 9-24 长官定「家长端要做铃铛、门店提醒+解读都进铃铛」一致 |
| 门店「家长记录汇总」:全记了 3 / 部分 1 / 都没记 2,按孩子计数,无设备排除,均值只计已记录 | 完全对上「按孩子算、名单分三种、没绑设备不算」;§七第2条「已记录家长→孩子」也改了 |
| 门店「记录与提醒」页:按家分组勾选孩子→发送站内提醒→查看阅读回执;「每孩子每天最多一次」 | 对上「先在智脑里显示、门店看已读/未读、每孩子每天最多一次」 |
| 门店首页「快捷操作」里的「绑定家长」「本店码」、家长连接 18/5/3(区别于服务门店关系) | 总方案第1件+§七第8条的口径 |
| 平台设备后台:品牌 Logo 与型号分开维护、产品图上传、上下架 | 对上「品牌 logo/产品图后台上传,素材以后再传」;传图有现成做法可抄(app/api/admin_orgs_access_link.py:261 upload_hero_image,阿里云存储) |
| 画面配色:手机内主色 #2fa37c/#157c67/#f3faf6/#e3eee7 系,和 flat1 同一套;橙色提示条、蓝色标签(#6d8fd0)flat1 里也有 | 风格一致(整页外壳是深色评审背景,和 flat1 外壳同类,不算冲突) |
| # | 冲突点 | 出处 / 说明 |
|---|---|---|
| b1 | 眼轴同龄参考:flat1 在示范档案里画了 P97/P50/P3 参考带,原型改成灰色占位「参考数据尚未就绪,不会用示意参考带计算百分位」 | 总方案 §三「同龄排第几要做」+ §七第1条「随首页一起上」+ 长官 9-24「首页必须和 flat1 一样」。原型的克制在合规上没问题,但与"和效果图一样"冲突。需长官定:图上仍画示意带(标"示意"),还是保留占位。5411 行数据没到位前不能画真名次 |
| b2 | 检查卡/趋势卡被简化:flat1 每项有「较上次 ↑+25 度 / +0.06mm / −0.1」、「距上次检查已 46 天」、「建档以来眼轴 右+0.37 | 左+0.37」、三指标各自的"较上次"小结;原型全去掉。近视度数 225 度改成 −2.25 D「等效球镜」 |
| b3 | 4L 卡文案:flat1 有「建议 3 分钟×2次/天」「记录每天离焦镜佩戴时长」;原型改成"只记录实际使用情况",并写"不提供剂量或治疗建议" | 是合规意义上的改良,但属于与效果图的偏差,需长官确认;红光仪单位(次)只在门店汇总出现,家长填写页只看到离焦镜的「小时」页,红光仪/读写台的填写页原型没演示 |
| b4 | 门店待办/复查区改版:flat1 是「王家长 未读提醒 3 天 / 陈同学 复查提醒待发送」+「待跟进复查 去提醒」;原型改成「家长消息·查看阅读回执 / 复查计划·今日1人」+「复查待跟进 3 人」橙色横幅 + 「处理」。红光仪汇总 flat1 是「14 人次」,原型是「均值 2.0 次」 | 总方案 §七第7条:待跟进复查是复查到期提醒,「多久算该复查」第3件前要定。原型在没拍板前就自行定了一套 |
| b5 | 设备库页太单薄、缺页:只有「左侧 4L 分类 + 搜索框 + 一张卡(轻盈离焦镜 A1)」,卡上写「查看详情与绑定」但没有详情页/绑定确认页/我的设备(换绑、解绑)页,品牌 Logo 位是空的(灰底眼镜示意图,自己声明"不是实际商品") | 总方案 §三「小米之家式设备库」。作为第2件的核心页必须补:型号详情、绑定确认、已绑设备管理(换/解绑)、缺图状态 |
| b6 | 消息页留白:家长「消息通知」页底部「本家庭收到的提醒·暂无本次演示新提醒」整块空着,一大片空白;评审清单自己也承认「保存/提醒/回执仅在页面内模拟」 | 截图 messages.png。小问题,出图时收掉 |
补充:原型有「显示建设状态」开关,给每块标「已有相关代码 / 待建设 / 参考源待接入」,这些标注是 gpt-6 的自述,不可信(见下面第三节核对:它标了"已有相关代码"的块里,4L 打卡/设备库其实没有对应实现)。正式方案图不要带这套脚手架(见记忆 pitfall-mockup-scaffolding-leaks-into-product)。
查法:git grep ... origin/test,在 /home/dev2/doctor-ai-brain 只读。每个"没有"都带对照组(用同样写法查一个已知存在的串,命中才说明查法有效)。
| 原型功能块 | 现状 | 证据 |
|---|---|---|
| 设备库(品牌/型号/产品图表) | 没有 | 表名扫描 __tablename__ 含 device/checkin/reminder/notif/message/recheck/review_plan/followup 于 app/models,只命中 device_data、device_type_config(app/models/device.py:18、:43)和聊天/分享/企微消息表,没有品牌、型号表。对照组:同一条命令确实命中已知表 chat_messages(chat.py:37)。注意: device_data=厂商推送的使用数据,以家长手机号为键;device_type_config只有 device_type/display_name/is_active,是运营后台的"设备类型映射",不是孩子级别绑定,不能直接当设备库用 |
| 家长绑设备给孩子 | 没有 | 同上,无 child/patient 与设备关联表。对照组:patient相关记录在 parent_patients.py 真实存在(路由 :222 :416 :518 等) |
| 每日打卡(每孩子每天每类使用时长) | 没有 | checkin|check_in|punch|daily_record 在 app 里只命中 brand_code_claim_service.py 等无关文件(未逐一展开,但都不是打卡模型);models 下 daily 只命中 treatment_plan.py:22(护眼建议文字)、wecom_agent.py:193(企微日发送上限)。对照组:离焦镜 在 app 命中 4L 报告/标注等 8 个文件,查法有效 |
| 前端「今日护眼」条 | 有 mock 但已停用 | web/app/h5/chat/components/today-band.tsx(硬编码 mock:大路灯 6h/红光仪 12 次/离焦镜 8h),page.tsx:2618 是 {false && <TodayBand .../>},平板端也已移除。today-detail-sheet.tsx:116/:121/:273 有红光仪等写死文案。只能当视觉参考,数据全假,没有接口 |
| 「护眼灯」这个名字 | 代码里 0 命中 | 护眼灯 在 app、web 全 0;对照组 红光仪 命中 today-band.tsx、today-detail-sheet.tsx,读写台 命中 8 个 app 文件。历史 mock 用的是「大路灯/智能台灯」。总方案已定「护眼灯是大类」,命名要新定 |
| 平台设备后台(型号管理) | 有壳无内容 | web/app/(dashboard)/admin/device-types/page.tsx、admin/devices/page.tsx 存在;后端 app/api/admin_devices.py 有 /device-types 增改(:49 :60 :85)和 /devices/stats|trend|users(:158 起),但对象是厂商推送设备,没有品牌 Logo、型号、产品图、上下架 |
| 后台传图 | 可抄 | app/api/admin_orgs_access_link.py:261 upload_hero_image(PNG、上限 8MB、阿里云存储) |
| 家长切换孩子 | 有 | app/api/parent_patients.py:222 GET "" 列孩子;首页多孩子=前端接现成接口 |
| 家长「结论解读」已读回执 | 有(单条记录级) | app/models/refractive_record.py:175 store_conclusion_read_at;parent_patients.py:837 mark-read(注释 :844 写明"D9 只做已读/未读,不做通知");门店侧 refractive_record_service.py:1288 能读到已读时间 |
| 消息铃铛/统一站内消息 | 没有 | 没有 message/notification 类家长消息表(见第一行表名扫描);notification|inbox|站内信 只命中 dashboard/page.tsx、channel/minicup/page.tsx(与家长无关)。对照组:unread|read_at 命中 parent_patients.py:773-776 |
| 门店给家长发提醒 + 阅读回执 | 没有(每日记录提醒) | 无对应表/接口。微信推送有文件 app/services/wechat_push.py、app/models/push_log.py、app/clients/wechat_client.py,但我没打开确认是否真能发(记忆里记的是"订阅消息纯 stub,短信只注册过 1 个模板"),这是记忆印象,我这次没 verify。总方案定的是"先在智脑里显示",不依赖它 |
| 复查计划(日期/状态/变更记录/回执) | 没有 | next_visit|next_review|next_exam|review_date|复诊|下次复查 仅命中 app/models/flywheel.py:108 visit_type(初诊/复诊,是检查类型不是计划)。app/models/h5_chat.py:45 followup 是聊天里 AI 生成的"复查提醒"文本列。复查 字样虽命中 12 个文件,但都是 AI 提示词/业务文案。对照组:复诊 命中 flywheel.py:108,查法有效 |
| 我的二维码 / 扫一扫 / 本店码(第1件) | test 上已有 | 归属字段 app/models/flywheel.py:71-78 service_org_id;app/services/brand_code_claim_service.py、app/api/brand_code_claim.py;wx-scan 前端 web/app/h5/chat/lib/tests/wx-scan.spec.ts:198(scanQRCode)。首页里的入口按钮是否已放,我没逐页核对 |
| 眼轴同龄参考 | 数据没到 | 总方案 §四:5411 行数据未到位;原型也没有数据源,自己承认 |
| 门店端「家长记录汇总」聚合 | 没有 | 依赖打卡表,表都没有 |
小结:第2件(设备库+打卡+提醒)在后端是从零开始:至少要新建 品牌、型号(带图)、孩子-设备绑定、每日记录、提醒/消息(含已读) 5 类表和对应接口,再加前端 5-6 个页面。可复用的只有:传图做法、孩子列表接口、已读回执的写法、第1件的扫码。