对应方案文档 brand-partner-spec-v1-20260915.md
(阶段 1 需求稿,已长官逐条拍板)· Phase 48A(扫码进门)/ 48B(互扫绑定)/ 48C(4L 展示区)。
本版为审美方向重做:深色展板 + 白卡浮起 + 大留白,供长官挑选第二组 4L 排版方案。
帧 1 · 授权落地页(① 新增品牌名/标识区)
显示条件:扫到品牌机构码时出现品牌名;扫其他机构码沿用原有文案
帧 2 · 授权成功后直接进家长端首页(沿用现有页面,无需新增界面)
显示条件:品牌方配置了头图/标识才显示对应图;未配置则用默认图标
帧 3 · 老家长扫码:识别为存量用户,一次性提示找回原档案(② 新增提示条)
显示条件:微信身份命中已有档案时出现;未命中则视为新家长,直接进帧 2,无提示条
位置示意:4L 展示区插入在「报告秒读」浮窗卡与「也许想问」之间(③ 新增区块,全部家长首页均展示,绑定与否只影响区内四格状态)
已比选 2×2 网格与横滑胶囊两种排版:横滑版在 360px 手机宽度下实测仅前 2 项完整可见、第 3/4 项需横滑才可见;2×2 网格占竖向空间最高(约 4 行卡)。综合一屏可见完整度与紧凑度,最终选定横排四格。
帧 1 · 家长端「我的二维码」(④ 新增页面)
显示条件:家长端「我的」菜单常驻入口,任意家长可查看;这是孩子的档案码,由机构扫码识别
帧 2 · 机构端扫码确认页(⑤ 新增页面)
显示条件:机构端「扫一扫」扫到有效档案码后出现;若该儿童档案当前无绑定机构,直接展示本帧(跳过帧 3 弹窗)
该儿童档案已绑定「视宜生眼科」,转入「明视康视光中心」后:本机构将看到该儿童档案的全部历史检查记录;「视宜生眼科」自此只保留其当初自己录入的记录(规则 10)
帧 3 · 转入确认弹窗(⑥ 新增交互)
显示条件:仅当该儿童档案已指向另一机构时弹出;未绑定或已绑定本机构则不弹,直接进帧 2 确认页
| 界面块 | 什么条件下显示 | 字段 / 接口现状 |
|---|---|---|
| 帧1 品牌标识区 | 扫描对象是「品牌机构码」时显示;扫其他机构码不显示(沿用现有机构文案) | 新增机构码需区分「品牌/普通机构」两种归属,目前机构码表本身未建(spec §5.1) |
| 帧2 品牌首页头图 | 品牌方在设置页配置头图/标识才出图,否则退化默认图标兜底 | 接口已有: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 命中) |
帧 1 · 机构端「扫一扫」取景界面(⑦ 新增页面)
显示条件:机构工作台点击「扫一扫」入口后进入,取景框对准家长端二维码即自动识别
识别自该家长微信,名下共 2 份档案
帧 2 · 扫码识别后弹出该家长名下的孩子列表(⑧ 新增交互)
显示条件:扫码识别到家长身份即弹出;选已有档案直接进入绑定,选「新建」则走建档流程
帧 3 · 绑定完成,展示该孩子档案摘要(⑨ 新增页面)
显示条件:帧 2 选中的档案当前未绑定其他机构时,直接进入本帧;若该儿童档案已绑定别的机构(如视宜生眼科),本帧位置改为先弹「该儿童档案已绑定 视宜生眼科,确认转入本机构?」确认框,确认后再显示本帧
不新增菜单,直接在机构管理表格的操作里加一个「品牌码」入口,列表也新增一列「品牌码开通」看累计人数、可排序、可筛选;点击后不弹窗,直接进入这家机构的专属品牌码与开通名单整页(见下一帧)。原有的访问链接、编辑、席位、重新生成凭证、删除机构都不受影响(按 admin/orgs/page.tsx:874-880,926-976 核对,本帧已删去此前误画的两个真实页面没有的按钮)。
| 机构名称 | 联系人 | 机构创建时间 | API Key | 硬件推送 | 品牌码开通 | 状态 | 操作 |
|---|---|---|---|---|---|---|---|
| 瞳护光学 | 陈老师 13900001234 |
2026/9/15 | 8a21f0c3...9e7b | 未开通 | 3,482 | 启用 | 访问链接编辑席位品牌码重新生成凭证删除机构 |
| 晋城市眼康视力服务有限公司 | 牛海彦 13610669633 |
2026/9/15 | b4fb5812...3dd3 | 未开通 | 1,205 | 启用 | 访问链接编辑席位品牌码重新生成凭证删除机构 |
| 手机测试机构 | 王小二 15612307894 |
2026/9/9 | d8d9f8ed...b96e | 未开通 | 876 | 启用 | 访问链接编辑席位品牌码重新生成凭证删除机构 |
| 视宜生眼科 | 王芳 13712340000 |
2026/9/8 | c91a4f27...5b6c | 未开通 | 431 | 启用 | 访问链接编辑席位品牌码重新生成凭证删除机构 |
| 明视康视光中心 | 赵敏 13898761234 |
2026/9/6 | e2d9b710...44a1 | 未开通 | 未开启 | 启用 | 访问链接编辑席位品牌码重新生成凭证删除机构 |
| 李欣视光中心 | 李欣 13566781122 |
2026/9/3 | f7c3a982...0e9d | 未开通 | 未开启 | 启用 | 访问链接编辑席位品牌码重新生成凭证删除机构 |
列名与操作项已按真实页面 admin/orgs/page.tsx:874-880,926-976 逐项核对:表头改为机构名称 / 联系人 / 机构创建时间 / API Key / 硬件推送 / 品牌码开通(新增列,右上角标 11,可按数字排序)/ 状态 / 操作,真实页面没有的「密钥」「创建时间」旧文案已改回原样;操作列改为真实存在的访问链接 / 编辑 / 席位 / 品牌码(新增入口)/ 重新生成凭证 / 删除机构六项,此前误画、真实页面没有的两个按钮已删除。品牌码开通列:已开通机构显示累计人数,未开启机构显示浅灰「未开启」(示例见「明视康视光中心」一行,右上角标 12);筛选控件改为下拉「品牌码状态:全部 / 已开启 / 未开启」(右上角标 10)取代原「只看有品牌码的机构」药丸,十几家品牌一眼看完排名与开通状态。操作列「品牌码」入口所有行文案统一,交互按状态分叉:已开通机构点击「品牌码」不弹窗,直接进入下一帧的独立整页;未开启机构(同一示例行,右上角标 13)点击「品牌码」先弹出下一帧的开启确认弹窗,确认后才生成码并跳转到该机构的整页。真实表格 whitespace-nowrap + 外层 overflow-x-auto(page.tsx:870-871),操作项变多只会横向滚动,不会挤压换行,本帧窗口宽度同步从 960px 放宽到 1080px 以贴近实际显示。平台账号能看全部机构的码和名单,机构账号只能看自己这一家;名单展示头像、昵称与 openid,不展示手机号等其他微信身份信息
点上一帧未开启机构操作列的「品牌码」后,不直接生成码,先弹出本确认弹窗;点「确认开启」后系统才真正生成码、跳转到下一帧该机构的品牌码与开通整页;点「取消」则原地留在机构管理列表,不生成码、不计入开通数。
开启品牌码二次确认弹窗(右上角标 14,宽 420px,居中浮于机构管理列表上);正文三条要点:生成专属长期码、家长授权即入自动计数、按实际开通人数结算不设名额上限;确认后立即生成码并跳转到该机构的「品牌码与开通」整页
不是新菜单,是机构管理列表点击「品牌码」后直接进入的独立整页;同一套侧边栏,顶部带面包屑可返回机构管理。上半区放这家机构的专属品牌码、下载按钮与开通统计数字,下半区按昵称搜索、按状态/日期筛选、分页翻看全部品牌码开通人员,支持导出对账表。
| 用户 | openid | 开通时间 | 到期日 | 孩子档案 | 当前绑定机构 | 绑定时间 | 状态 |
|---|---|---|---|---|---|---|---|
妈妈_小鹿 | oX7gQ2xR...8kQb | 09-14 09:20 | 2027-09-14 | 1 | 总店 | 2026-09-14 | 有效 |
Cheer的爸爸 | oM4rT8nC...c2Vn | 09-13 18:02 | 2027-09-13 | 2 | 万达店 | 2026-09-13 | 有效 |
安安的守护者 | oP9wZ1bK...e7Ls | 09-10 14:11 | 2027-09-10 | 1 | 未绑定 | — | 有效 |
明镜止水 | oK2hN6dF...a4Rf | 09-02 08:40 | 2027-09-02 | 1 | 万达店 | 2026-09-02 | 有效 |
晨晨麻麻 | oT5jY3wQ...b9Wc | 08-29 20:15 | 2027-08-29 | 3 | 总店 | 2026-08-29 | 有效 |
小鱼干本人 | oL8qX4mZ...f1Dk | 08-25 11:03 | 2027-08-25 | 1 | 未绑定 | — | 有效 |
云朵的爸爸 | oR3mV7pS...h5Ng | 08-20 09:47 | 2027-08-20 | 2 | 万达店 | 2026-08-20 | 有效 |
糯米粒儿 | oW6bC2tH...j8Yt | 08-14 16:22 | 2027-08-14 | 1 | 总店 | 2026-08-14 | 有效 |
橙子妈妈 | oQ1sF9vN...k3Bp | 08-09 13:58 | 2027-08-09 | 1 | 未绑定 | — | 有效 |
安然如初 | oV4nH5jR...m7Qz | 08-03 10:31 | 2027-08-03 | 2 | 万达店 | 2026-08-03 | 有效 |
多多的天空 | oJ7tR2xW...p9Xc | 2025-07-28 19:05 | 2026-07-28 | 1 | 未绑定 | — | 已过期 |
壮壮外婆 | oN9wL6qD...q2Vd | 2025-07-15 15:44 | 2026-07-15 | 1 | 未绑定 | — | 已过期 |
点击列表内「品牌码」入口直接进入本整页(右上角标 15,本帧升级为完整独立页),同一套侧边栏 + 顶部面包屑「← 返回机构管理」;标题栏右上角新增次要按钮「停用品牌码」(右上角标 16,浅灰描边,与「导出对账表」并排,导出内容 = 当前筛选条件下的全部名单含 openid,导出格式:xlsx(2026-09-16 长官定))。上半区改为紧凑两栏布局(右上角标 17,取代原留白较大的弹窗式排布):左栏品牌码图缩至 200px 见方,下方并排「下载品牌码图片」「复制链接」两个小按钮(右上角标 18);右栏第一行为状态条:绿点「启用中」+ 开通时间 + 码链接 chip(右上角标 19),第二行为累计开通/本月新增/当前有效/30 天内到期四个卡片化数字(右上角标 20)。上半区与下方名单之间新增一条浅色分隔线(右上角标 21)。下半区名单表新增「openid」列(右上角标 22,值中间省略防撑爆表格)、「孩子档案」列(右上角标 23,该微信号下建档数量)、「绑定时间」列(右上角标 24,未绑定显示"—"),用户列头像改为彩色圆形样式区分不同用户,不做手机号列;窗口宽度由 900px 放宽到 1180px 以容纳八列(原两个时间列合并为「开通时间」一列);工具行仅保留昵称搜索、状态筛选(全部/有效/已过期/30 天内到期)、日期范围,不再重复放导出按钮;底部分页条按每页 20 条翻看全部 3,482 人。
标 25:右栏四个数字卡片下方补一块「近 30 天开通趋势」纯 CSS 柱状条,解决原两栏左 390 / 右 215 不等高的凑合问题;深绿标峰值柱、中绿标高于日均柱、浅绿标低于日均柱,纯展示,一期若来不及可先不做,不影响主流程
点上一帧标题栏「导出对账表」按钮后,下载到本地的 Excel 文件长什么样(这是文件预览,不是网页界面,用白底 + 细网格线模拟表格文件观感,顶部浅灰条为文件名);内容 = 当前筛选条件下的全部名单含 openid。
| 序号 | 微信昵称 | openid | 开通时间 | 到期日 | 当前绑定机构 | 状态 | 是否计费 |
|---|---|---|---|---|---|---|---|
| 1 | 妈妈_小鹿 | oX7gQ2xR...8kQb | 2026-09-14 | 2027-09-14 | 总店 | 有效 | 是 |
| 2 | Cheer的爸爸 | oM4rT8nC...c2Vn | 2026-09-13 | 2027-09-13 | 万达店 | 有效 | 是 |
| 3 | 安安的守护者 | oP9wZ1bK...e7Ls | 2026-09-10 | 2027-09-10 | 未绑定 | 有效 | 是 |
| 4 | 明镜止水 | oK2hN6dF...a4Rf | 2026-09-02 | 2027-09-02 | 万达店 | 有效 | 是 |
| 5 | 晨晨麻麻 | oT5jY3wQ...b9Wc | 2026-08-29 | 2027-08-29 | 总店 | 有效 | 是 |
| 6 | 小鱼干本人 | oL8qX4mZ...f1Dk | 2026-08-25 | 2027-08-25 | 未绑定 | 有效 | 是 |
| 7 | 云朵的爸爸 | oR3mV7pS...h5Ng | 2026-08-20 | 2027-08-20 | 万达店 | 有效 | 是 |
| 8 | 糯米粒儿 | oW6bC2tH...j8Yt | 2026-08-14 | 2027-08-14 | 总店 | 有效 | 是 |
| 9 | 橙子妈妈 | oQ1sF9vN...k3Bp | 2026-08-09 | 2027-08-09 | 未绑定 | 有效 | 是 |
| 10 | 安然如初 | oV4nH5jR...m7Qz | 2026-08-03 | 2027-08-03 | 万达店 | 有效 | 是 |
| 11 | 多多的天空 | oJ7tR2xW...p9Xc | 2025-07-28 | 2026-07-28 | 未绑定 | 已过期 | 否(已过期) |
| 12 | 壮壮外婆 | oN9wL6qD...q2Vd | 2025-07-15 | 2026-07-15 | 未绑定 | 已过期 | 否(已过期) |
导出对账表 · 文件预览(右上角标 26,导出格式:xlsx(2026-09-16 长官定);点上一帧标题栏「导出对账表」按钮后下载到本地的 Excel 文件;用白底 + 细网格线模拟表格文件观感,顶部浅灰条为文件名,与前面几帧的网页界面区分:无圆角、无阴影)。抬头区列出机构名称、统计周期、导出时间(导出文件抬头不含品牌码链接,与整页顶部品牌码 chip 区分);汇总条为本期新增 / 累计开通 / 当前有效 / 已过期四项,取自上一帧同口径数字。计费行(右上角标 27):2026-09-16 长官定:对账表只给开通个数,不放单价与金额。明细表 12 行数据与「品牌码与开通整页」名单表(右上角标 22-24)逐行一致,「开通时间」列取整到日(YYYY-MM-DD,不带时分)——页面名单显示到分钟,导出文件只到日;「是否计费」列:有效记录记「是」,已过期的多多的天空、壮壮外婆两行记「否(已过期)」,与底部合计「12 / 10 / 2」对应。
不影响机构管理原有的功能;名单里展示头像、昵称与 openid,不展示手机号等其他微信身份信息;不预先限定开通名额,按实际开通人数与机构结算。