网报小程序 — 登录与学员绑定 — 产品需求说明书

版本 V1.4 更新 2026-07-28 涉及期数一期二期 全局规则引用:01-全局通用规则.md
前置说明 全局

0.1 双小程序架构

详见 01-全局通用规则.md §1.2 小程序矩阵。

终端名称默认城市城市切换说明
小程序 1卓越悦学广州可切换(按配置)主力小程序,覆盖广州及其他城市
小程序 2卓越优学深圳不可切换(锁定深圳)深圳专属,因资金监管要求独立
两个小程序共享同一套后端服务和用户体系,仅 openID 不同,unionId 打通。

0.2 用户体系架构

外部通行证 openID1 卓越悦学 openID2 卓越优学 n:1 unionId 1:1 家长手机号 1:1 家长 memberid 通行证 id 会员库 N:M 家长 memberid 学员 memberid N:M 多对多 姓名 年级 手机号 性别 生源校 业务系统 1:1 悦学-成长学员编号 tms、网报、拼团 悦学-亲子学员编号 evip、悦智学 全日制学员编号 tms、鲸准教 家长信息 学员信息 系统间调用
  • 同一家长在两个小程序中产生不同 openID,通过 unionId 统一映射到同一个家长 memberid
  • 家长与学员为 N:M 多对多关系
  • 可能存在家长未绑定任何学员的情况(新用户)

0.3 登录与绑定学员时序图

源文件:diagrams/login-bindstudent-sequence.puml

用户登录与绑定学员时序图
登录 3个页面

模块说明:登录模块负责用户身份认证全流程。用户触发需登录操作后进入登录页,通过微信一键授权获取手机号,完成通行证匹配与绑定。

入口:游客态触发加购/下单/进入购物车等操作时拦截跳转  |  页面组成:登录页 → 手机号授权弹窗 → 协议页(用户协议/隐私协议/儿童隐私协议)

1.1 登录页
登录页设计稿

界面结构

  • 顶部:品牌 Logo + 品牌名称
  • 中部:「微信快捷登录」按钮(主按钮)
  • 底部:勾选框 + 协议链接文案(“已阅读并同意《用户协议》《隐私协议》《儿童隐私协议》”)

数据规则

登录页无需接口数据,纯静态页。

状态说明

状态表现
未登录(默认)展示登录页全部元素
已登录不应进入此页面(路由守卫跳转回来源页)

交互规则

操作响应
点击「微信快捷登录」判断是否已勾选协议:未勾选 → Toast"请先阅读并同意协议";已勾选 → 调用微信 getPhoneNumber,进入 1.2
手机号授权成功见 1.2
登录成功后判断是否已绑定学员:是 → 返回来源页;否 → 跳转 2.A(添加学员页)
点击协议文字跳转 1.3(协议页),根据点击的协议名称传参展示对应内容(用户协议 / 隐私协议 / 儿童隐私协议)
物理返回返回上一页(游客态继续浏览)

异常与兜底

场景处理
登录接口报错Toast"登录失败,请重试",保持当前页
网络异常展示全局网络异常页(见 01 §6.1)

配置项清单

— 无后台配置项。


1.2 手机号授权弹窗
手机号授权弹窗设计稿
微信原生 UI 弹窗(非自定义页面),由 wx.getPhoneNumber 触发。

界面结构

  • 顶部:小程序名称 + 图标
  • 标题:"申请获取并验证你的手机号"
  • 用途标签:"登录"
  • 手机号列表:展示用户微信绑定的手机号(可能有多个)
  • 底部按钮:「不允许」
  • 底部链接:"管理号码"

数据规则

字段来源说明
手机号列表微信账号绑定微信侧维护,非我方控制
选中手机号用户点选用户选择的手机号作为登录凭证

交互规则

操作响应
点击某个手机号授权成功 → 前端获取加密手机号数据 → 调用通行证登录接口
点击「不允许」授权拒绝 → Toast"需要手机号才能登录",停留登录页
多手机号场景用户选哪个号就用哪个号去匹配通行证

状态说明

状态表现
单手机号仅展示一个手机号选项
多手机号展示多个手机号供用户选择

异常与兜底

场景处理
getPhoneNumber 接口失败Toast"获取手机号失败,请重试"
用户多次拒绝授权微信可能不再弹出,需引导用户到小程序设置中重新授权

配置项清单

— 无后台配置项(微信原生能力)。


1.3 协议页
协议页设计稿

界面结构

  • 标题栏:根据传参动态显示「用户协议」/「隐私协议」/「儿童隐私协议」
  • 正文区:富文本滚动展示协议内容
三份协议共用同一个页面模板,通过参数区分加载不同内容。

数据规则

字段来源说明
协议类型页面传参枚举:user_agreement / privacy / children_privacy
协议内容前端写死三份协议正文硬编码在前端,无后台管理能力

状态说明

不区分登录态,始终可访问。

交互规则

操作响应
滚动正常滚动浏览
返回返回登录页

异常与兄底

场景处理
富文本加载失败展示“内容加载失败”提示 + 重试按钮

配置项清单

— 无后台配置项(协议内容当前为前端写死)。

跨端登录 无UI·静默逻辑

模块说明:用户在小程序之间跳转、或小程序内打开 H5 页面时的登录补全逻辑。全程用户无感知,无额外 UI 交互。

账号打通机制:外部通行证系统统一手机号(不依赖 unionId)  |  场景组成:跨小程序跳转 + H5 登录

核心前提:两个小程序使用同一套外部通行证系统(以手机号为唯一标识匹配用户),并共享同一套后端服务与用户体系。该前提是跨端静默登录可行的技术基础。
跨端登录规则
🔗

无独立 UI 页面

后台静默处理,用户无感知

本模块描述用户在小程序之间跳转、或小程序内打开 H5 页面时的登录补全逻辑。账号打通基于外部通行证统一手机号。

场景一:跨小程序跳转(新小程序未登录)

项目说明
触发条件用户从 A 小程序跳转到 B 小程序,B 当前无登录态
处理逻辑自动静默登录(通过外部通行证统一手机号打通账号体系),登录后自动选中与 A 小程序一致的学员
用户感知无感知,无登录页、无弹窗、无 Toast
核心约束登录账号 + 选中学员必须与来源小程序一致

场景二:跨小程序跳转(新小程序已登录且账号不一致)

项目说明
触发条件用户从 A 小程序跳转到 B 小程序,B 已登录但账号与 A 不一致
处理逻辑用来源小程序(A)的登录态覆盖目标小程序(B),B 自动切换为 A 的当前账号
用户感知B 小程序自动切换账号,页面数据刷新为来源账号对应数据
核心约束跳转时目标小程序账号必须与来源小程序保持一致(适用于网报→拼团场景)

场景三:小程序内打开 H5 页面

项目说明
触发条件小程序内通过 WebView 打开 H5 页面
处理逻辑自动静默登录 H5,登录账号与选中学员必须与小程序当前一致
用户感知无感知,H5 直接展示已登录态内容
核心约束账号一致性为强制要求,不允许 H5 与小程序登录不同账号
实现方式小程序通过 URL 参数或 JS Bridge 将 token + 学员信息传递给 H5
适用 H5 入口入学诊断、调课、转班、转介绍(均通过此机制实现与小程序登录态同步)

技术实现要点

  • 跨小程序账号打通基于外部通行证系统统一手机号(通行证以手机号为唯一标识匹配用户,不依赖 unionId 是否已绑定)
  • 两个小程序共享同一套后端服务和用户体系,同一手机号即为同一用户
  • 跳转时携带加密的来源信息(当前登录 token + 选中学员 memberId)
  • 目标小程序启动时检测来源参数,识别为跨端跳转场景后执行静默登录流程
  • H5 登录通过小程序 WebView 的 URL query 或 postMessage 传递凭证

Token 传递与会话共享机制

跳转类型Token 传递方式说明
小程序 ↔ 小程序通过 URL 参数携带加密 Token来源端将登录态加密后写入跳转 URL 的 query;目标端解析后自动登录,无需用户再次授权
小程序 → H5通过 cookie 同域共享 SessionH5 与小程序后端处于同一主域,借助 cookie 复用已建立的会话;如不同域则降级为 URL query 携带加密 Token

跨小程序学员上下文传递

  • 跨小程序跳转时,当前选中的学员信息(学员 memberId 等关键标识)随登录态一并传递给目标应用
  • 目标端完成静默登录后,自动切换到该学员,确保来源端与目标端的"当前学员"完全一致
  • 若目标端未绑定该学员(极端情况),按场景一/场景二的兜底逻辑处理,并以来源端账号为准
绑定学员 双Tab + 子页面

模块说明:登录成功后若未绑定学员,引导家长添加学员信息。支持两种方式:填表创建新学员,或通过手机号+姓名+验证码绑定已有学员。

入口:① 新用户登录后无学员自动跳入  ② 我的学员页点击「添加学员」  |  页面组成:添加新学员(Tab 1) + 添加已有学员(Tab 2) + 子页面(选择城市/年级)

学员上限:单个家长账号最多绑定 5 个学员(与首页多孩切换上限对齐),上限统计包含 TMS 绑定的学员。达到上限后,「添加学员」入口置灰,绑定接口报错时 Toast 提示"学员数量已达上限"。历史已绑定超过 5 个学员的存量数据不做处理,维持现状(2026-07-28 测试评审确认)。
无学员状态规则(2026-07-26 修订)一期登录后账号下未绑定任何学员时,沿用 H5 既有逻辑——在首页/我的等页面展示引导添加学员的提示与入口(提示文案示意:"添加孩子信息,获取个性化学习推荐"),点击进入本模块添加学员;不做静默拦截、不锁定城市切换。

学员管理 P0 能力清单 一期

能力优先级说明
小程序绑定学生(短信验证码)P0小程序端完成学生绑定流程,通过短信验证码方式进行身份验证(流程与异常兜底详见 2.B)二期
学员信息编辑P0支持学员头像、生日、性别、年级等信息编辑
学校列表P0在读学校、目标学校选择,需实现字母索引快速定位
绑定新学员P0支持在小程序端绑定新的学员账号(见 2.A / 2.B)
学员列表P0展示已绑定的学员列表,支持切换
期数说明:「小程序绑定学生」开发状态待启动,归属二期(改动汇总 2.1 / 9.1);「绑定学生后跳转至对应小程序」同属二期(改动汇总 6.3)。其余 P0 能力随一期交付。
2.A 添加新学员(Tab 1)
添加新学员设计稿
本模块为双Tab页面,支持「添加新学员」和「添加已有学员」两种方式。
入口:① 新用户登录成功后无学员自动跳入;② 我的学员页点击「添加学员」。

界面结构

  • Tab栏:「添加新学员」(当前) | 添加已有学员
  • 表单:学员姓名(必填)、性别(必填)、在读年级(必填,跳转 2.A-1)、所在城市(必填,跳转 2.A-2)
  • 底部:「确认」按钮

数据规则

字段来源说明
年级选项后台配置(年级枚举)固定选项列表,按学段分组
城市选项后台配置(城市枚举)已开通城市列表

交互规则

操作响应
点击「确认」表单校验 → 创建学员 → 成功后:新用户入口跳转首页 / 我的学员入口返回我的学员页并刷新
切换到「添加已有学员」Tab切换至 2.B 表单
物理返回新用户入口:[待确认] 是否允许跳过;我的学员入口:返回我的学员页

异常与兜底

场景处理
创建学员接口失败Toast"提交失败,请重试"
城市/年级选项加载失败Toast 提示 + 重试
表单校验不通过对应字段标红提示

配置项清单

配置项说明
城市枚举列表后台维护已开通城市
年级枚举列表后台维护年级选项,含学段分组

2.A-1 选择年级
选择年级设计稿

调用方:2.A 表单中点击"年级"字段

界面结构

  • 标题栏:「选择年级」
  • 年级列表:分组展示(小学 / 初中 / 高中),单选

交互规则

操作响应
点击年级选项选中并返回上一页,填入所选年级

状态说明

状态表现
有当前年级对应选项高亮
无选中无高亮(新建学员场景)

2.A-2 选择城市
选择城市设计稿

调用方:2.A 表单中点击"城市"字段

界面结构

  • 标题栏:「选择城市」
  • 城市列表:展示已开通城市

交互规则

操作响应
点击城市选项选中并返回上一页,填入所选城市

状态说明

状态表现
有当前城市对应选项高亮
无选中无高亮(新建学员场景)

2.B 添加已有学员(Tab 2)
添加已有学员设计稿

界面结构

  • Tab栏:添加新学员 | 「添加已有学员」(当前)
  • 表单:手机(必填,学员已绑定手机号)、姓名(必填,学员真实姓名)、验证码(必填,6位)
  • 「获取验证码」按钮(验证码输入框右侧)
  • 底部:「提交」按钮
  • 底部文案:"获取个性化学习推荐,保存孩子成长记录"

数据规则

字段来源说明
手机号用户输入11位,学员在业务系统中已绑定的手机号
姓名用户输入学员真实姓名,与手机号联合匹配
验证码短信下发6位数字,发送至学员手机号
验证码有效期后端配置默认 5 分钟
获取验证码冷却前端控制60秒倒计时

交互规则

操作响应
点击「获取验证码」校验手机号格式 → 发送验证码 → 按钮 60s 倒计时
点击「提交」校验全部字段 → 绑定已有学员接口 → 成功后:新用户入口跳转首页 / 我的学员入口返回我的学员页
切换到「添加新学员」Tab切换至 2.A 表单
物理返回同 2.A

状态说明

状态表现
正常空表单,填写后提交
已达上限(最多 5 个)不应进入此页(入口已置灰)
获取验证码倒计时「获取验证码」置灰显示剩余秒数

异常与兜底

场景处理
手机号+姓名未匹配到学员Toast"未找到对应学员,请确认信息"
验证码错误/过期Toast"验证码错误或已过期"
发送验证码失败Toast"发送失败,请稍后重试"
验证码获取次数过多弹出安全验证组件(网易易盾),通过验证后方可继续获取验证码。注:仅生产环境触发此限制
绑定接口失败Toast"绑定失败,请重试"
学员已达上限Toast"学员数量已达上限"
该学员已被当前家长绑定Toast"该学员已绑定"
2026-07-26 修订 二期:本流程即「网报支持小程序绑定学生」(短信验证码验证),开发状态待启动,归属二期;二期同步实现绑定学生后跳转至对应小程序。异常兜底 Toast 文案以上表为准(与改动汇总 2.1 对齐:发送失败/验证码错误过期/学员达上限)。
修订记录(V1.4 / 2026-07-28)
修订项修订内容期数依据来源日期
无学员状态规则新增:登录后无学员时沿用 H5 逻辑,展示引导添加学员的提示与入口(绑定学员模块说明)一期改动汇总 2.62026-07-26
学员管理 P0 能力清单新增清单:学员信息编辑(头像/生日/性别/年级)、学校列表字母索引、绑定新学员、学员列表切换一期改动汇总 2.2~2.52026-07-26
小程序绑定学生标注:短信验证码绑定流程(2.B)即「网报支持小程序绑定学生」,归属二期;异常兜底 Toast 文案与改动汇总对齐;二期同步实现绑定学生后跳转对应小程序二期改动汇总 2.1 / 9.1 / 6.32026-07-26
学员上限口径补充上限统计包含 TMS 绑定的学员;历史已绑定超过 5 个学员的存量数据不做处理,维持现状(绑定学员模块说明)一期2026-07-28 测试评审会2026-07-28
期数徽标说明一期 二期 三期,仅标注本次修订涉及内容。