对应方案文档 brand-partner-spec-v1-20260915.md(阶段 1 需求稿,已长官逐条拍板)· Phase 48A(扫码进门) / 48B(互扫绑定) / 48C(4L 展示区) · 本图为阶段 2 出图,供长官挑选第二组 4L 排版方案。
帧 1 · 授权落地页(改编自现网 seat-wx-auth-landing.tsx 组件结构,按钮/图标样式原样沿用;品牌 Logo + 名称区块为新增)
显示条件:仅扫描「品牌机构码」时出现品牌名 / Logo;扫「门店机构码」沿用现有门店文案(此帧不适用)
帧 2 · 授权成功后直接落地家长端首页(无需新增 UI:仍是现网 StoreBrandHero 组件 · GET /api/h5/home-branding 接口,区别只是这次绑定的机构记录属于品牌方而非门店)
显示条件:品牌方在设置页配置了 homepage_logo_url / hero_image_url 才显示对应图;未配置则退化成眼睛图标兜底(现网既有行为)
帧 3 · 老家长扫码:系统识别为存量用户,一次性提示找回原档案(提示条为新增)
显示条件:扫码得到的微信 unionid 命中已有 seat_bound_unionid(app/models/user.py:94-104)的家长子席位 → 合并到原账号并提示;未命中则视为全新家长,直接走帧 2,无提示条(规则 6 · 9-15 拍板)
位置示意:4L 展示区插入在「报告秒读」浮窗卡与「也许想问」之间(全部家长首页均展示本区,绑定与否只影响区内四格的灰/绿/黄状态,不影响本区是否出现)
优点:4 项一眼看全,横向紧凑;缺点:360px 内每格仅约 76px,图标+两行字略挤
优点:每格能放状态短语,信息量最大;缺点:占竖向空间最高(约 4 行卡)
优点:占地最矮(一行),与现有底部 chip 条同款风格,改动成本最低;缺点:4 项总宽度远超 360px 容器(实测仅前 2 项完整可见),第 3、4 项默认在视口外,需横滑才能看到
帧 1 · 家长端「我的二维码」(新增页面)
显示条件:家长端「我的」菜单常驻入口,任意家长可查看;码值 = 家长子席位标识,扫描方为门店端
帧 2 · 门店端扫码确认页(新增页面)
显示条件:门店端「扫一扫」扫到有效家长码后出现;若该家长当前无绑定门店,直接展示本帧(跳过帧 3 弹窗)
该家长已绑定「XX 视光」,转入本店后:本店将看到该家长的全部历史检查记录;「XX 视光」自此只保留其当初自己录入的记录(规则 10)
帧 3 · 转店确认弹窗(新增交互)
显示条件:仅当该家长 patients.service_org_id(新增字段,目前不存在)已指向另一机构时弹出;未绑定或已绑定本店则不弹,直接进帧 2 确认页
| 界面块 | 什么条件下显示 | 字段 / 接口现状 |
|---|---|---|
| 帧1 品牌 Logo/名称区 | 扫描对象是「品牌机构码」时显示;扫「门店机构码」不显示(沿用现有门店文案) | 新增:机构码需区分「品牌/门店」两种归属,目前机构码表本身未建(spec §5.1) |
| 帧2 品牌头图首页 | 品牌方在设置页配置 homepage_logo_url/hero_image_url 才出图,否则退化眼睛图标兜底 | 接口已有:GET /api/h5/home-branding(现网行为,无需改) |
| 帧3「已找回」提示条 | 微信 unionid 命中已存在 seat_bound_unionid 的家长子席位时一次性出现,未命中不出现 | 字段已有:app/models/user.py:94-104;判定逻辑需新增(48A 核心工作量) |
| 4L 展示区(三方案) | 所有家长首页均展示本区(不因是否绑定门店而整体隐藏);区内四格各自按「未绑定/已绑定/数据未接」三态渲染 | 新增:四类具体 device_type 尚未在 device_type_config 配置(app/models/device.py) |
| 帧1「我的二维码」 | 家长端「我的」菜单常驻,任意登录家长可见 | 新增页面 + 新增取码接口(复用家长子席位标识,非本次新建表) |
| 帧2 扫码确认页 | 门店端扫码扫到有效家长码后出现;该家长当前无绑定门店时直接显示本帧 | 展示字段仅 patients.name(脱敏姓名,已有,app/models/flywheel.py:28),未画后端给不出的字段 |
| 帧3 转店确认弹窗 | 仅当该家长 service_org_id 已指向另一机构时弹出;未绑定/已绑定本店时不弹 | 新增字段 patients.service_org_id(spec §5.1),目前物理不存在(grep 0 命中) |