详见 01-全局通用规则.html §1.2 小程序矩阵。
| 终端 | 名称 | 默认城市 | 城市切换 | 说明 |
|---|---|---|---|---|
| 小程序 1 | 卓越悦学 | 广州 | 可切换(按配置) | 主力小程序,覆盖广州及其他城市 |
| 小程序 2 | 卓越优学 | 深圳 | 不可切换(锁定深圳) | 深圳专属,因资金监管要求独立 |
源文件:diagrams/login-bindstudent-sequence.puml
模块说明:登录模块负责用户身份认证全流程。用户触发需登录操作后进入登录页,通过微信一键授权获取手机号,完成通行证匹配与绑定。
入口:游客态触发加购/下单/进入购物车等操作时拦截跳转 | 页面组成:登录页 → 手机号授权弹窗 → 协议页(用户协议/隐私协议/儿童隐私协议)
登录页无需接口数据,纯静态页。
| 状态 | 表现 |
|---|---|
| 未登录(默认) | 展示登录页全部元素 |
| 已登录 | 不应进入此页面(路由守卫跳转回来源页) |
| 操作 | 响应 |
|---|---|
| 点击「微信快捷登录」 | 判断是否已勾选协议:未勾选 → Toast"请先阅读并同意协议";已勾选 → 调用微信 getPhoneNumber,进入 1.2 |
| 手机号授权成功 | 见 1.2 |
| 登录成功后 | 判断是否已绑定学员:是 → 返回来源页;否 → 跳转 2.A(添加学员页) |
| 点击协议文字 | 跳转 1.3(协议页),根据点击的协议名称传参展示对应内容(用户协议 / 隐私协议 / 儿童隐私协议) |
| 物理返回 | 返回上一页(游客态继续浏览) |
| 场景 | 处理 |
|---|---|
| 登录接口报错 | Toast 提示(后端下发 message,前端不硬编码文案),保持当前页 |
| 网络异常 | 展示全局网络异常页(见 01 §6.1) |
— 无后台配置项。
wx.getPhoneNumber 触发。| 字段 | 来源 | 说明 |
|---|---|---|
| 手机号列表 | 微信账号绑定 | 微信侧维护,非我方控制 |
| 选中手机号 | 用户点选 | 用户选择的手机号作为登录凭证 |
| 操作 | 响应 |
|---|---|
| 点击某个手机号 | 授权成功 → 前端获取加密手机号数据 → 调用通行证登录接口 |
| 点击「不允许」 | 授权拒绝 → Toast"需要手机号才能登录",停留登录页 |
| 多手机号场景 | 用户选哪个号就用哪个号去匹配通行证 |
| 状态 | 表现 |
|---|---|
| 单手机号 | 仅展示一个手机号选项 |
| 多手机号 | 展示多个手机号供用户选择 |
| 场景 | 处理 |
|---|---|
| getPhoneNumber 接口失败 | Toast 提示(后端下发 message,前端不硬编码文案) |
| 用户多次拒绝授权 | 微信可能不再弹出,需引导用户到小程序设置中重新授权 |
— 无后台配置项(微信原生能力)。
| 字段 | 来源 | 说明 |
|---|---|---|
| 协议类型 | 页面传参 | 枚举:user_agreement / privacy / children_privacy |
| 协议内容 | 前端写死 | 三份协议正文硬编码在前端,无后台管理能力 |
不区分登录态,始终可访问。
| 操作 | 响应 |
|---|---|
| 滚动 | 正常滚动浏览 |
| 返回 | 返回登录页 |
| 场景 | 处理 |
|---|---|
| 富文本加载失败 | 展示“内容加载失败”提示 + 重试按钮 |
— 无后台配置项(协议内容当前为前端写死)。
模块说明:用户在小程序之间跳转、或小程序内打开 H5 页面时的登录补全逻辑。全程用户无感知,无额外 UI 交互。
账号打通机制:外部通行证系统统一手机号(不依赖 unionId) | 场景组成:跨小程序跳转 + H5 登录
无独立 UI 页面
后台静默处理,用户无感知
| 项目 | 说明 |
|---|---|
| 触发条件 | 用户从 A 小程序跳转到 B 小程序,B 当前无登录态 |
| 处理逻辑 | 自动静默登录(通过外部通行证统一手机号打通账号体系),登录后自动选中与 A 小程序一致的学员 |
| 用户感知 | 无感知,无登录页、无弹窗、无 Toast |
| 核心约束 | 登录账号 + 选中学员必须与来源小程序一致 |
| 项目 | 说明 |
|---|---|
| 触发条件 | 用户从 A 小程序跳转到 B 小程序,B 已登录但账号与 A 不一致 |
| 处理逻辑 | 用来源小程序(A)的登录态覆盖目标小程序(B),B 自动切换为 A 的当前账号 |
| 用户感知 | B 小程序自动切换账号,页面数据刷新为来源账号对应数据 |
| 核心约束 | 跳转时目标小程序账号必须与来源小程序保持一致(适用于网报→拼团场景) |
| 项目 | 说明 |
|---|---|
| 触发条件 | 小程序内通过 WebView 打开 H5 页面 |
| 处理逻辑 | 自动静默登录 H5,登录账号与选中学员必须与小程序当前一致 |
| 用户感知 | 无感知,H5 直接展示已登录态内容 |
| 核心约束 | 账号一致性为强制要求,不允许 H5 与小程序登录不同账号 |
| 实现方式 | 小程序通过 URL 参数或 JS Bridge 将 token + 学员信息传递给 H5 |
| 适用 H5 入口 | 入学诊断、调课、转班、转介绍(均通过此机制实现与小程序登录态同步) |
| 跳转类型 | Token 传递方式 | 说明 |
|---|---|---|
| 小程序 ↔ 小程序 | 通过 URL 参数携带加密 Token | 来源端将登录态加密后写入跳转 URL 的 query;目标端解析后自动登录,无需用户再次授权 |
| 小程序 → H5 | 通过 cookie 同域共享 Session | H5 与小程序后端处于同一主域,借助 cookie 复用已建立的会话;如不同域则降级为 URL query 携带加密 Token |
模块说明:登录成功后若未绑定学员,引导家长添加学员信息。支持两种方式:填表创建新学员,或通过手机号+姓名+验证码绑定已有学员。
入口:① 新用户登录后无学员自动跳入 ② 我的学员页点击「添加学员」 | 页面组成:添加新学员(Tab 1) + 添加已有学员(Tab 2) + 子页面(选择年级/选择城市/在读学校)
| 能力 | 优先级 | 说明 |
|---|---|---|
| 小程序绑定学生(短信验证码) | P0 | 小程序端完成学生绑定流程,通过短信验证码方式进行身份验证(流程与异常兜底详见 2.B) |
| 学员信息编辑 | P0 | 支持学员头像、生日、性别、年级等信息编辑 |
| 学校列表 | P0 | 在读学校、目标学校选择,需实现字母索引快速定位 |
| 绑定新学员 | P0 | 支持在小程序端绑定新的学员账号(见 2.A / 2.B) |
| 学员列表 | P0 | 展示已绑定的学员列表,支持切换 |
| 字段 | 来源 | 说明 |
|---|---|---|
| 年级选项 | 后台配置(年级枚举) | 固定选项列表,按学段分组 |
| 城市选项 | 后台配置(城市枚举) | 已开通城市列表 |
| 操作 | 响应 |
|---|---|
| 点击「确认」 | 表单校验 → 创建学员 → 成功后:新用户入口跳转首页 / 我的学员入口返回我的学员页并刷新 |
| 切换到「添加已有学员」Tab | 切换至 2.B 表单 |
| 物理返回 | 新用户入口:[待确认] 是否允许跳过;我的学员入口:返回我的学员页 |
| 场景 | 处理 |
|---|---|
| 创建学员接口失败 | Toast 提示(后端下发 message,前端不硬编码文案) |
| 城市/年级选项加载失败 | Toast 提示 + 重试 |
| 表单校验不通过 | 对应字段标红提示 |
| 配置项 | 说明 |
|---|---|
| 城市枚举列表 | 后台维护已开通城市 |
| 年级枚举列表 | 后台维护年级选项,含学段分组 |
调用方:2.A 表单中点击"年级"字段
| 操作 | 响应 |
|---|---|
| 点击年级选项 | 选中并返回上一页,填入所选年级 |
| 状态 | 表现 |
|---|---|
| 有当前年级 | 对应选项高亮 |
| 无选中 | 无高亮(新建学员场景) |
调用方:2.A 表单中点击"城市"字段
| 操作 | 响应 |
|---|---|
| 点击城市选项 | 选中并返回上一页,填入所选城市 |
| 状态 | 表现 |
|---|---|
| 有当前城市 | 对应选项高亮 |
| 无选中 | 无高亮(新建学员场景) |
调用方:学员相关表单中学校字段(在读学校 / 目标学校)点击调起,对应 P0 能力清单「学校列表」项
| 操作 | 响应 |
|---|---|
| 点击学校行 | 选中(右侧对勾标记)并返回上一页,回填所选学校 |
| 搜索框输入关键词 | 列表切换为搜索结果(关键词高亮);触发时机(实时/提交)待评审确认 |
| 状态 | 表现 |
|---|---|
| 已有在读学校 | 对应行显示橙色对勾 |
| 字段 | 来源 | 说明 |
|---|---|---|
| 手机号 | 用户输入 | 11位,学员在业务系统中已绑定的手机号 |
| 姓名 | 用户输入 | 学员真实姓名,与手机号联合匹配 |
| 验证码 | 短信下发 | 6位数字,发送至学员手机号 |
| 验证码有效期 | 后端配置 | 默认 5 分钟 |
| 获取验证码冷却 | 前端控制 | 60秒倒计时 |
| 操作 | 响应 |
|---|---|
| 点击「获取验证码」 | 校验手机号格式 → 发送验证码 → 按钮 60s 倒计时 |
| 点击「提交」 | 校验全部字段 → 绑定已有学员接口 → 成功后:新用户入口跳转首页 / 我的学员入口返回我的学员页 |
| 切换到「添加新学员」Tab | 切换至 2.A 表单 |
| 物理返回 | 同 2.A |
| 状态 | 表现 |
|---|---|
| 正常 | 空表单,填写后提交 |
| 已达上限(最多 5 个) | 不应进入此页(入口已置灰) |
| 获取验证码倒计时 | 「获取验证码」置灰显示剩余秒数 |
| 场景 | 处理 |
|---|---|
| 手机号+姓名未匹配到学员 | Toast 提示(后端下发 message,前端不硬编码文案) |
| 验证码错误/过期 | Toast 提示(后端下发 message,前端不硬编码文案) |
| 发送验证码失败 | Toast 提示(后端下发 message,前端不硬编码文案) |
| 验证码获取次数过多 | 弹出安全验证组件(网易易盾),通过验证后方可继续获取验证码。注:仅生产环境触发此限制(源码 captcha/index.js 有据) |
| 绑定接口失败 | Toast 提示(后端下发 message,前端不硬编码文案) |
| 学员已达上限 | Toast 提示(后端下发 message,前端不硬编码文案) |
| 该学员已被当前家长绑定 | Toast"该学员已绑定"(源码有据) |
| 新版图 | 对应环节 | 说明 |
|---|---|---|
| 1新用户-添加新学员 | 2.A 添加新学员(Tab 1) | 3.0 新版表单(姓名/性别/年级/城市) |
| 2新用户-完善信息-年级选择 | 2.A-1 选择年级 | 新用户完善信息语境下的年级选择 |
| 3选择地区 | 2.A-2 选择城市 | 同「选择城市」页,3.0 新版叫「选择地区」 |
| 4添加已有学员 | 2.B 添加已有学员(Tab 2) | 3.0 新版表单(手机号/姓名/验证码) |
| 5验证码填写 | 2.B 验证码交互态 | 获取验证码后填写 6 位数字,60s 倒计时 |
模块说明:全部学员页展示当前家长绑定的所有学员,支持切换当前学员、解绑学员、添加新学员。当前学员以金色卡片突出展示,其他学员以列表形式排列。
入口:个人中心(三期/05-我的)顶部用户区点击 | 展示形式:全屏新页面(带返回箭头)
| 维度 | 说明 |
|---|---|
| 来源 | 后台接口(会员库),返回当前家长绑定的所有学员列表 |
| 字段 | 学员ID、姓名、头像(URL)、城市、年级、学员编号 |
| 数量限制 | 最多关联 5 名学员 |
| 排序 | 当前选中学员置顶(金色卡片),其余按绑定时间排序 |
| 刷新时机 | 进入页面时拉取最新数据 |
| 场景 | 表现 |
|---|---|
| 仅1名学员 | 只展示当前学员卡片,无"其他学员"区块,底部仍有"+ 添加学员" |
| 已达5名上限 | 「+ 添加学员」按钮置灰,点击 Toast 提示(后端下发 message,前端不硬编码文案)(置灰 + Toast 口径 2026-07-28 测试评审确认) |
| 无学员(新注册) | 不应进入此页面(登录后强制进入绑定学员流程) |
| 操作 | 响应 |
|---|---|
| 点击设置⚙图标 | 跳转当前学员信息编辑页(修改头像/姓名/年级等) |
| 点击「复制」 | 复制学员编号到剪贴板,Toast提示"已复制" |
| 点击「点击切换」 | 切换当前学员为该学员,刷新页面(该学员变为金色卡片),同时首页/选课页数据联动刷新 |
| 左滑其他学员行 | 露出红色删除按钮(垃圾桶图标) |
| 点击删除按钮 | 弹窗确认"确认解除关联?解绑后,可使用该学员已绑定的手机号和姓名重新绑定"(取消/确定) |
| 确认解绑 | 调用解绑接口,成功后从列表移除该学员 |
| 点击「+ 添加学员」 | 跳转添加学员页(复用绑定学员流程) |
| 点击返回 | 返回个人中心页 |
| 场景 | 处理 |
|---|---|
| 学员列表接口失败 | 展示全局网络异常页(含重试按钮) |
| 解绑接口失败 | Toast 提示(后端下发 message,前端不硬编码文案) |
| 切换学员接口失败 | Toast 提示(后端下发 message,前端不硬编码文案),保持当前状态 |
| 头像加载失败 | 显示性别对应的默认头像(男生/女生各一套默认头像) |
| 配置项 | 说明 |
|---|---|
| 最大学员数 | 前端硬编码 5(上限变更需前端发版) |
| 默认头像 | 前端内置男生/女生默认头像资源 |
| 修订项 | 修订内容 | 期数 | 依据来源 | 日期 |
|---|---|---|---|---|
| 红框标注校准 | 按 PIL 图像测量 + 读图目检校准 2 处部件级红框位置:修正弹窗/toast/列表区域框错位,叠加弹窗图(输错 1/2)改框整组弹窗区,同页面不同状态截图确认沿用同参数 | 一期 | PIL 测量校准 2026-08-05 | 2026-08-05 |
| §2.C 流程图序号标注 | 2.C 新用户绑定学员流程 5 图新增序号徽标(1 添加新学员/2 年级选择/3 选择地区/4 添加已有学员/5 验证码填写),右栏对照表首列同步加 step-tag 序号对应(依 05 §3.2 用户裁定模式推广) | 一期 | 用户裁定 2026-08-05 | 2026-08-05 |
| 图组布局规则统一 | 依 00 V1.10 新布局规则:同层级多图(同图不同状态/图+弹窗/同流程步骤)一律横排,每张统一 280px 宽(uniform),容器横向滚动查看(细滚动条常显 + 右侧渐变提示防漏看);本页 3 个图组统一改造(其中 1 组竖排改横排),half/third 混宽与多图竖排旧规则废止 | 一期 | 用户裁定 2026-08-05 | 2026-08-05 |
| 异常兜底事实核查清理 | portal-vue 源码 grep 验证:§1.2/1.4/2.A/2.B 的杜撰 Toast 文案全部改通用表述「Toast 提示(后端下发 message,前端不硬编码文案)」,场景保留;易盾/「该学员已绑定」标注源码有据;2.A-3 在读学校移除 5 条无依据交互细节(搜索触发时机/×清除/索引条定位/无选中态/其他回填)并入红字待评审补全 ④~⑧,评审确认后写回 | 一期 | portal-vue 源码核查 2026-08-05 | 2026-08-05 |
| 新增 2.A-3 在读学校子页 | 登记「学员管理-选择学校」2 张设计稿图(字母索引列表 + 搜索结果高亮):承载 P0 能力清单「学校列表:在读学校、目标学校选择,字母索引」;含「其他」兜底项与选中对勾态;调用表单 / 搜索无结果空态 / 目标学校是否复用 3 点列入待评审补全 | 一期 | 网报3.0升级设计稿-20260804 + 用户口径 2026-08-05(一期学员绑定用图) | 2026-08-05 |
| 业务规则库接入 | 账号绑定、学员上限、主属关系与城市初始化等跨页口径改为引用 WB-ACCOUNT-001 / WB-CONFIG-001,本页保留登录与学员管理表现及验收口径 | 跨期 | 业务规则库首批提取 | 2026-08-05 |
| 网报3.0设计稿合入 | 新增 2.C 新用户绑定学员流程(网报3.0升级设计稿-20260804 新版对照,5 图):添加新学员 / 完善信息-年级选择 / 选择地区(同选择城市)/ 添加已有学员 / 验证码填写;业务规则仍以 2.A / 2.A-1 / 2.A-2 / 2.B 既有规则为准 | 一期 | 网报3.0升级设计稿-20260804 | 2026-08-05 |
| 期数目录拆分 | 自 三期/05-我的 并入「全部学员页」(现为 §四);页面更名「02-登录与学员绑定 → 02-登录与学员管理」;归属一期(M1 · 登录与学员管理,2026-06-25 技术可上线);期数语义重定义为开发里程碑(M1/M2/M3),旧期数徽标语义作废 | 一期 | 20260917网报三期功能梳理.xlsx | 2026-08-04 |
| 无学员状态规则 | 新增:登录后无学员时沿用 H5 逻辑,展示引导添加学员的提示与入口(绑定学员模块说明) | 一期 | 改动汇总 2.6 | 2026-07-26 |
| 学员管理 P0 能力清单 | 新增清单:学员信息编辑(头像/生日/性别/年级)、学校列表字母索引、绑定新学员、学员列表切换 | 一期 | 改动汇总 2.2~2.5 | 2026-07-26 |
| 小程序绑定学生 | 标注:短信验证码绑定流程(2.B)即「网报支持小程序绑定学生」,归属二期;异常兜底 Toast 文案与改动汇总对齐;二期同步实现绑定学生后跳转对应小程序 | 二期 | 改动汇总 2.1 / 9.1 / 6.3 | 2026-07-26 |
| 期数口径修正 | 「小程序绑定学生(短信验证码)」即 2.B 添加已有学员流程,确认为网报小程序自身绑定能力,归属一期(上行 2026-07-26「归属二期」标注作废);「TMS 分享学生绑定小程序码(区分优学/悦学)」与「绑定学生后跳转至对应小程序」归属二期 | 一期 | 2026-08-04 口径确认 | 2026-08-04 |
| 学员上限口径补充 | 上限统计包含 TMS 绑定的学员;历史已绑定超过 5 个学员的存量数据不做处理,维持现状(绑定学员模块说明) | 一期 | 2026-07-28 测试评审会 | 2026-07-28 |
| 矛盾检查修订 | 全量矛盾检查修复:unionId 口径统一为「外部通行证手机号」(前置说明);无学员时「自动跳入添加学员页」为主、首页/我的引导入口仅作异常兜底(绑定学员模块说明);顶部导航顺序对齐正文 DOM(登录→跨端登录→绑定学员) | 一期 | 全量矛盾检查 | 2026-07-30 |