U8 Chat 2.0 · 登录密码(密码登录 / 设置密码 / 忘记密码)产品需求文档(PRD)
| 项目 | 内容 |
|---|
| 文档版本 | v1.0(2026-09-22)· 新增功能:给账号加一条可选的、后设置的登录密码 |
| 功能模块 | ① 登录页(新增「密码登录」入口)② 我的 → 隐私和安全 → 登录密码 |
| 适用端 | iOS / Android(同一个 App,一套规则)。Web / Desktop 本期不做,原因见第九章 |
| 演示页 | 同目录 index.html(18 屏可点击:A 登录与注册 5 屏 · B 设置与修改密码 6 屏 · C 忘记密码 5 屏 · D 通知与总览 2 屏)。它的作用=给 UI 设计的「流程 + 入口」清单;版式细节以 UI 为准(见决策 23) |
| 设计稿 | Figma 6dsI4eKdAoZr4RP0uILIBq(U8 Chat 2.0)· PAGE「iOS端」:SECTION「登录注册」1092:61746(1 个画板「登录」1092:66063)与 SECTION「我的-隐私和安全」803:143913(5 个画板,入口页 802:128996)。⚠️ 登录画板的主体是实机截图的位图,矢量部分只有右上角新增的「网络诊断」入口 —— 所以本次做法是:已有画板 1:1 照做(一句文案都不自造),只新增「密码登录」入口与「登录密码」行;设计稿没画的页面在交付物里逐屏标注「设计稿未画 · 文案本次自拟」。⚠️ 这份设计图=「目标状态」(我们要做成这样),但它不全 —— 有一部分功能是以前的 UI 同事做的,图纸不在其中,所以「设计图里没有 ≠ 这个页面没做过」;哪些页面已经开发完成,一律由产品确认(2026-09-23 产品澄清) |
| 参照产品 | Telegram(Password / Two-Step Verification 的形态)—— 但明确不采用它的 2FA,理由见第三章 |
| 一句话需求 | 账号体系不变(手机号首次登录即注册);新增后设置的登录密码,设置后可用「手机号 + 密码」登录;忘记密码走短信验证码重置;本期不额外做两步验证(2FA) |
本 PRD 做了什么:这个功能的界面工作量不大(登录页多一个入口、设置里多一行),真正要写清的是三件事 —— ① 密码与验证码是什么关系(两条平行的登录方式,不是两步验证);② 忘记密码怎么自救(本期没有客服);③ 密码的规则、错误次数、锁定,以及重置后的设备处置。分别落在第三、七、八章。
与既有交付物的关系:验证码参数(5 位 / 5 分钟 / 30s 重发 / 错误 5 次锁 24 小时)与「修改手机号」统一;系统通知由官方账号「U8 Chat」承载、验证码走哪条通道、新设备登录通知全部沿用「设备管理」6.9.1,本 PRD 不重新定义。
演示页怎么用:index.html 共 18 屏,左栏可按「核心路径(P0)/ 规则与状态(P1)」筛屏;手机屏上的虚线框就是可点的地方,鼠标悬停会显示它跳到哪一屏。
本次范围(2026-09-23 产品明确):只做 密码登录 + 忘记密码;密码登录的前提=手机号已注册登录、且用户自己设置过密码(没有默认密码)。已经开发完成的页面(登录验证码页、手机号位数校验弹窗)不再画;与本次无关的元素(网络诊断入口、国家编码能否点等)既不做标注也不做解释(开发有疑问产品会自己解答)。演示页说明栏只写本次新增的内容。
演示版与设计稿的关系(2026-09-23 产品澄清,重要):本演示与 PRD 都是「UI 设计之前的输入」 —— 作用是告诉 UI「这个功能有哪些流程、有哪些页面、从哪儿进」,并给出每个页面的规则与文案建议。已有的 Figma 画板(登录页、我的-隐私和安全)照做;还没画的页面由本演示给出建议稿。最终视觉以 UI 设计为准,因此按钮摆放、间距一类版式细节不作为评审与验收项。
一、背景与目标
1.1 背景
U8 Chat 的账号体系里手机号就是账号:注册、登录、加好友、找回都围绕它。原本唯一的登录方式是「手机号 + 验证码」,并且新用户手机首次登录即完成注册 —— 没有独立的注册流程,用户在这一步看不到「注册」两个字。这套逻辑本次保持不变。
本次新增的是一条平行的登录方式:登录密码。
- 定位:手机不在身边 / 收不到验证码时的备用入口;常用设备上更快的登录路径;服务端侧多一道不依赖短信通道的凭证。
- 形态:密码是后设置的、可选的(产品原话:「密码是后设置的」)—— 不强制、不弹窗打断,入口放在「我的 → 隐私和安全 → 登录密码」,由用户在已登录状态下自己设。
1.2 现状问题(本次要解决的)
| # | 问题 | 后果 |
|---|
| 1 | 只有验证码一条路 | 短信收不到就登不进来:境外卡、短信被拦截、运营商故障、换机未同步、手机不在身边。账号下有活跃设备时,验证码还只发到已登录设备的会话里,手机不在身边同样拿不到 |
| 2 | 密码是「后设置」的,却没有入口 | 没有地方设置、也没有地方能看出「我到底设过没有」 |
| 3 | 忘记密码无路可走 | 本期没有客服功能;只做密码登录不做找回,忘记密码的用户会永久失联 |
| 4 | 密码与验证码的关系没有定义 | 会不会变成 Telegram 那样的两步验证?要不要每次登录输两个凭证?不定义就会被各端各做一套 |
1.3 目标
业务目标
- 在不改变账号体系、不增加注册流程的前提下,把「收不到验证码就登不进来」这个单点问题补掉。
- 为后续的风控与账号安全能力留下挂钩点:密码 + 设备 + 通知三条线索。
用户目标
- 想设密码的人能找到地方设置,并且明确知道「设了之后验证码登录依然可用」;
- 忘记密码的人能自己救回来(本期靠短信验证码);
- 输错密码的人知道还能试几次、什么时候能再试、还有哪条路能走。
1.4 成功指标(上线首月,目标值需先取基线再锁定)
| 指标 | 目标 |
|---|
| 密码设置率(已登录用户中设置过登录密码的占比) | ≥ 20% |
| 密码登录成功率(进入密码登录页 → 登录成功) | ≥ 85% |
| 忘记密码流程完成率(进入「忘记密码」→ 重置成功) | ≥ 60% |
| 与密码相关的用户反馈 / 工单 | 目标 0(本期无客服,只能靠文案与自助页兜住) |
二、范围
2.1 本期做
- 登录页新增「密码登录」入口 + 密码登录页(含密码错误 / 次数超限锁定 / 该号未设置密码三种结果)
- 「我的 → 隐私和安全」新增「登录密码」行,含设置 / 修改 / 关闭
- 忘记密码:短信验证码 → 设置新密码 → 用新密码登录
- 「没收到验证码?」自助排查页(无客服口径)
- 系统通知沿用官方账号「U8 Chat」:新用户首次登录 / 登录验证码 / 新设备登录(密码登录也发)
- 密码规则校验、密码错误次数与锁定
2.2 本期不做(明确划出)
| 不做的事 | 原因 |
|---|
| 登录 / 注册的验证码页 | 已开发完成,本次不重复设计(演示里也不再画)—— 见决策 24 |
| 两步验证(2FA) | 已决策不做,完整论证见第三章 |
| 邮箱 / 好友辅助找回 | 账号体系只有手机号,没有邮箱;没有可用的好友关系链做辅助验证 |
| 密码提示(hint)、密保问题 | 没有找回通道配套,做了也救不回人;反而给撞库者提供线索 |
| 账号申诉与人工找回(需客服) | 本期没有客服功能。这是下一期的第一优先级(见 3.5) |
| 强制设置密码 / 首次登录弹窗引导设置 | 密码定位是可选的备用入口,强制会挡住只想用验证码的绝大多数用户 |
| 密码有效期 / 定期强制改密 | 没有客服兜底时,任何「到期必须改」的规则都会制造失联用户 |
| 生物识别(Face ID / 指纹)解锁应用 | 属「应用锁」,随全局排期 |
| 资金密码 / 支付密码的任何改动 | 与登录密码是两套东西,归属资产模块(设备管理亦已决策不做资金密码二次验证) |
| Web / Desktop 的密码登录 | 见第九章 |
| 深色模式、大字号无障碍适配 | 随全局一起排期 |
三、核心决策:做了密码登录,为什么不再单独做两步验证(2FA)★
这一章正面回答产品提出的问题:「有了密码登录,是不是就可以不做两步验证了?」
结论:可以不做的,本期也建议不做。 下面按「概念 → 能力 → 代价 → 兜底 → 触发条件」说清。
3.1 先把三个容易混的东西分开
| 概念 | 是什么 | U8 里对应什么 |
|---|
| 登录方式 | 进入账号的一道门。多道门之间是「选一道走」 | ① 验证码登录 ② 密码登录 ③ 扫码登录(②为本期新增) |
| 两步验证(2FA) | 同一次登录里要求两种不同因子(知识 + 持有)= 「一道门上加两道锁」 | 本期不做。Telegram 的 Two-Step Verification 就是它:验证码之后还要再输密码 |
| 敏感操作二次验证 | 登录之后做高危操作时再确认一次身份 | 已有:换绑手机号先验旧号;本 PRD 新增:改密码 / 关密码要验当前密码;设备管理已决策不做资金密码 / Face ID |
关键区别:密码登录与验证码登录是两条平行的路(二选一),不是同一条路上的两道关卡。所以「做了密码登录」不等于「已经做了两步验证」—— 两者解决的不是同一个问题。但正因为密码提供了第二条独立的进门路径,2FA 的必要性反而下降(见 3.3、3.4)。
3.2 2FA 能防什么
2FA 的收益只有一条:当第一个因子泄露时,攻击者仍然需要第二个因子。
| 攻击场景 | 2FA 有没有用 |
|---|
| 密码被撞库 / 泄露,攻击者拿密码登录 | 有用(还差一条验证码) |
| 验证码被截获(短信劫持、诱导转发、木马读短信) | 有用(还差密码)—— 前提是攻击者不知道密码 |
| 手机被偷但已解锁、App 处于已登录状态 | 没用(攻击者直接就是"已登录"状态) |
| 用户被诱导,自己把验证码念给了骗子 | 没用(登录是在用户自己的设备上完成的) |
而 U8 的现实是:主登录方式就是验证码。攻击者要进门,通常得先控制手机号(补卡 / 换绑)或控制一台已登录设备 —— 这两件事 2FA 都拦不住。真正拦得住、且事后能止损的是「登录通知 + 远程注销」(见 3.4)。另外,验证码作为第二因子,本身并不比密码更"硬":短信可以被劫持,而手机号还可能被补卡。
3.3 2FA 的代价(本期尤其不该做的理由)
| 代价 | 具体到 U8 |
|---|
| 忘记密码 = 永久失联 | 2FA 意味着密码成为登录的必经凭证。本期没有客服、没有申诉、没有账号找回(修改手机号 PRD 也明确本期不开免验证口子)—— 忘记那个密码的用户没有任何路可以走。这是最硬的一条反对理由:在找回通道上线之前,不该引入"用户可能忘掉、且无法找回"的必填凭证 |
| 抵消「备用入口」的价值 | 密码的定位是「手机不在身边时用」。若密码登录仍要求验证码,那么手机不在身边时这条路同样走不通 —— 功能白做 |
| 登录变重 | 每台设备、每次登录都要过两道。对绝大多数只是换手机的用户,这是纯粹的摩擦 |
| 支持成本 | 本期没有客服,任何"卡在登录"的用户都无处求助,只能卸载 |
3.4 U8 已有的兜底(覆盖面比 2FA 更广)
| 兜底 | 作用 | 归属 |
|---|
| 新设备登录通知 | 每一次新的登录(验证码 / 密码 / 扫码)都给其它在线端发一条通知,事后可发现 | 设备管理 6.9.1(本期沿用;密码登录也发) |
| 设备管理里远程注销 | 发现异常后一键掐断任意设备的会话 | 设备管理(已有交付物) |
| 扫码登录 + 手机端确认 | 电脑上登录必须由手机端确认,等于给桌面端加了一道"持有手机"的因子 | 设备管理 6.8 |
| 密码错误锁定 | 提高密码被暴力破解的成本 | 本 PRD 8.2 |
| 敏感操作二次验证 | 换绑手机号先验旧号;改密码 / 关密码验当前密码 | 修改手机号交付物 + 本 PRD |
一句话:U8 的安全投入放在「登录之后」(可见、可止损),而不是「登录那一刻」(不可见、一旦忘记就锁死)。在只有手机号一个账号体系、且没有客服的阶段,这是更划算的一侧。
同时要点明:「二次验证」这个需求并不等于 2FA。产品希望的那种"关键操作再确认一次"的能力,已经通过上表最后一行被满足了,只是它不叫两步验证。
3.5 什么情况下应该回头做 2FA(触发条件,写下来备查)
出现以下任意一条,重新评估:
- 客服 / 账号申诉通道上线(忘记密码能被人工救回)—— 这是最前置的条件;
- 数据上出现「密码被撞库后成功登录」的真实案例;
- 密码登录成为主要登录方式(占比 > 50%);
- 监管或合规要求。
如果将来做,建议形态是「可选开启」的 2FA:默认关闭,用户主动开启;开启时要求绑定手机号并生成一组恢复码(Recovery Code),并明确告知「忘记密码只能靠恢复码或人工核验」。不要做成默认强制。
四、名词定义
| 名词 | 定义 |
|---|
| 登录密码 | 用户自选的、用于登录的密码。与资金密码 / 支付密码无关,两者互不影响 |
| 验证码登录 | 手机号 + 验证码。5 位数字 / 5 分钟有效。账号下有活跃设备时,验证码改走官方账号会话(不走短信) |
| 密码登录 | 手机号 + 登录密码。不发验证码,不受「验证码只发已登录设备」的限制 |
| 首次登录即注册 | 手机号在库里不存在时,验证码验证通过即创建账号并登录,用户无感知、页面上不出现「注册」 |
| 官方账号 U8 Chat | 承载系统通知的官方会话(带认证标识、可聊天),三条消息见 7.7 |
| 重置票据 | 忘记密码流程中,验证码校验通过后签发的一次性凭证(10 分钟有效,用后作废) |
| 活跃设备 | 账号下当前有效(未注销、未过期)的登录会话 |
五、用户与场景
| 场景 | 描述 | 走哪条路 | 关键诉求 |
|---|
| A · 换新手机(短信收得到) | 新设备登录 | 验证码登录 | 保持现状,别变复杂 |
| B · 手机不在身边 | 在别的设备上要登录 | 密码登录 | 只要密码就能进 |
| C · 想给账号加一道锁 | 已登录,去设置密码 | 设置登录密码(B1→B2) | 知道设了之后还能用验证码 |
| D · 忘了密码 | 密码登录这条路走不通 | 忘记密码(C1→C4) | 用手机号能救回来 |
| E · 密码可能泄露 | 怀疑被别人知道 | 改密码(B4)/ 重置(C1) | 改完能把设备踢掉 |
| F · 手机号也停用了 | 任何验证码都收不到 | ⚠️ 无路可走 | 本期只能自助提示(C5),下一期账号找回 |
六、功能总览
┌───────────────────────────────────────────────┐
│ 登录页(A1) │
│ 手机号 + 验证码 ← 默认(原样保留) │
│ 「密码登录」 ← 本次新增 │
└───────┬──────────────────────┬────────────────┘
│ │
验证码路(原样保留) 密码路(本次新增)
│ │
┌─────────────────▼──────────┐ ┌────────▼────────────────────┐
│ 验证码页:已开发完成 │ │ 密码登录页(A3) │
│ · 没有账号 → 自动注册+登录 │ │ · 密码错 → A4(还剩几次) │
│ · 有账号 → 直接登录 │ │ · 错太多 → A5(锁 15 分钟)│
│ │ │ · 没设过 → A6(回验证码) │
│ (不在本次演示范围) │ │ · 忘记密码 → C1 │
└─────────────────────────────┘ └─────────────────────────────┘
└─────────────────────────────┘
已登录侧(B) 忘记密码(C)
┌───────────────────────────────┐ ┌────────────────────────────────────┐
│ 我的 → 隐私和安全(B1) │ │ 忘记密码(C1) │
│ 「登录密码」= 未设置 / 已设置 │ │ → 短信验证码(C2) │
│ ├ 设置(B2 → B3) │ │ → 设置新密码(C3) │
│ ├ 修改(B4 → B5) │ │ → 重置成功(C4) │
│ └ 关闭(B6) │ │ → 其它设备上的登录全部失效 │
└───────────────────────────────┘ │ 收不到短信 → 自助排查(C5) │
└────────────────────────────────────┘
共用兜底(D):官方账号 U8 Chat 的新设备登录通知(D1)· 设备管理里远程注销 · 扫码登录
6.1 页面清单
| 屏 | 名称 | 说明 | 优先级 |
|---|
| A1 | 登录页 · 验证码登录(默认) | 底部新增「密码登录」入口 | P0 |
| A3 | 登录页 · 用密码登录 | 本次核心新增页 | P0 |
| A4 | 密码错误(弹窗) | 给出剩余次数 | P0 |
| A5 | 错误次数过多 · 暂时锁定(弹窗) | 15 分钟,验证码登录不受影响 | P1 |
| A6 | 该账号还没有设置登录密码(弹窗) | 直接回验证码登录 | P1 |
| B1 | 我的 → 隐私和安全 | 「登录密码」入口 | P0 |
| B2 | 设置登录密码 | 双输入 + 规则说明 | P0 |
| B3 | 设置成功(弹窗) | 说明忘记可用短信重置 | P0 |
| B4 | 修改登录密码 | 验当前密码 + 关闭入口 | P0 |
| B5 | 修改成功(弹窗) | 明确「其它设备不被踢」 | P0 |
| B6 | 关闭登录密码(确认弹窗) | 两按钮 | P1 |
| C1 | 忘记密码 · 发送验证码 | 号码只展示 + 中间四位脱敏 | P0 |
| C2 | 输入验证码短信(重置) | 复用同一套验证码页 | P0 |
| C3 | 设置新密码 | 规则与 B2 逐字一致 | P0 |
| C4 | 重置成功(弹窗) | 其它设备登录失效 | P0 |
| C5 | 没收到验证码?(自助排查) | 两条自查 + 无客服口径的标注 | P1 |
| D1 | 官方账号 U8 Chat | 三条系统通知 | P0 |
| D2 | 登录方式总览 | 流程梳理(也是 2FA 结论的图示) | P0 |
七、需求详述
7.1 登录页与「首次登录即注册」#A1(P0)
入口:App 启动后未登录 → 直接落在登录页。这一页的默认方式不变,仍是验证码登录。
| 元素 | 内容 | 规则 |
|---|
| 标题 | 手机号登录 | 照 Figma 画板「登录」1092:66063 |
| 副标题 | 未注册的用户,验证后将自动注册账号并登录 | 照画板;「首次登录即注册」就落在这句话里 |
| 右上角 | 网络诊断 | 画板已有,本次不改 |
| 国家 / 地区行 | 🇨🇳 中国 | 可以切换,且是已经开发好的功能 —— 本次不画、不标注(2026-09-23 产品确认) |
| 号码行 | 11 位数字;空时显示占位 000 0000 0000 | 位数不对在点「继续」时就地拦(与既有登录页一致,不在本次演示);不发码、不消耗次数 |
| 主按钮 | 继续 | 空输入时置灰(照画板),输入 11 位后变紫 |
| 底部 | ○ 登录即代表同意用户协议和隐私政策 | 照画板 |
| ★ 本次新增 | 密码登录(放在同意条款行下方居中,进 A3) | 画板之外唯一的新增 |
验证码登录 = 首次登录即注册(本次不变)
登录验证码页(输入 5 位验证码那一屏)已经开发完成,本演示与 UI 都不再重复画(2026-09-23 产品确认);下面这段讲的是服务端判定,仍然成立。
用户输入手机号 → 点「继续」→ 发验证码
→ 输入验证码 → 服务端校验
├─ 手机号在库里不存在 → 创建账号 → 登录成功 → 该设备收到「新用户首次登录」欢迎消息
└─ 手机号已存在 → 直接登录
| 规则 | 说明 |
|---|
| 触发条件 | 验证码校验通过,且该手机号没有账号 |
| 用户可见的差异 | 没有。页面上不出现「注册」,也不出现「欢迎注册」 |
| 需要用户额外填的信息 | 没有。昵称、头像等资料一律后续在「我的 → 编辑资料」补 |
| 新用户第一台设备的验证码通道 | 短信(账号下没有活跃设备) |
| 登录成功后的可见证据 | 官方账号会话里的「新用户首次登录」欢迎消息(见 7.7) |
⚠️ 不要为了"密码功能"在登录页加「注册」按钮或「密码登录 / 注册」两个 Tab —— 那会把一个无感的自动注册变成用户要做的选择题。
按设计稿还原(2026-09-23 拿到画板后):登录页 1:1 照 Figma 画板「登录」(1092:66063)—— 标题「手机号登录」· 副标题「未注册的用户,验证后将自动注册账号并登录」· 国家行「🇨🇳 中国」· 号码行 +86 + 占位 000 0000 0000(带下拉尖角)· 灰色「继续」· 底部「○ 登录即代表同意用户协议和隐私政策」· 右上角「网络诊断」,逐字逐项照画板。按钮空输入时置灰(画板画的就是这个状态),输入 11 位号码后变紫。
★ 本次唯一的新增:同意条款行下方一行居中的紫色「密码登录」入口(走进 A3)。画板上既有元素的位置与文案一处未动。(入口放在哪儿是建议,最终由 UI 定。)
7.2 密码登录 #A3 #A4 #A5 #A6(P0)
入口:登录页底部「密码登录」(A1 → A3)。唯一入口,不在别处再放。
⚠️ 不支持「默认密码」:系统不提供任何默认密码,也不允许"没设置过密码就直接用密码登录"。密码只能由用户自己设置(B1 → B2);没设过密码时,点「登录」一律走 A6(提示用验证码登录)。这是本功能的硬前提(2026-09-23 产品明确)。
| 元素 | 内容 | 规则 |
|---|
| 标题 | 手机号登录 | 与登录页同一标题 |
| 副标题 | 输入手机号与密码 | 建议文案,最终以 UI 为准 |
| 国家行 / 号码行 | 🇨🇳 中国 · +86 + 11 位号码 | 与登录页一致 |
| 密码行 | 掩码圆点 + 右侧「显示」 | 可切明文自查 |
| 主按钮 | 登录 | 空输入置灰,输入后变紫 |
| 底部条款行 | ○ 登录即代表同意用户协议和隐私政策 | 与登录页一致 |
| ★ 底部两排链接 | 上排「忘记密码?」 → C1 / 下排「验证码登录」 → A1 | 忘记密码是密码登录唯一的自救口,不能藏进设置;两排而不是一行,避免误点 |
点「登录」的结果分支
| # | 条件 | 表现 | 屏 |
|---|
| 1 | 手机号 + 密码正确 | 直接登录成功(与验证码登录完全一致);所有其它在线端收到「新设备登录」通知 | D1 |
| 2 | 手机号存在、密码错误 | iOS 弹窗「密码错误,请重新输入(还可以尝试 4 次)」→ 点「好」保留手机号、清空密码 | A4 |
| 3 | 错误次数达到阈值 | iOS 弹窗「密码错误次数过多,请 15 分钟后再试。你也可以用验证码登录。」 | A5 |
| 4 | 手机号存在,但从未设置过密码 | iOS 弹窗「这个账号还没有设置登录密码,请用验证码登录。」→ 点「好」回 A1 且带入手机号 | A6 |
| 5 | 手机号位数不对 | iOS 弹窗给出提示,不发请求(与既有登录页一致,不在本次演示) | — |
| 6 | 手机号不存在 | ⚠️ 与 A6 同一提示「这个账号还没有设置登录密码」—— 不泄露"该号码未注册" | A6 |
规则
- 不发验证码:密码登录与验证码通道无关,因此不受「验证码只发已登录设备」的限制 —— 这正是它作为备用入口的价值。
- 新设备上直接放行(已拍板):不要求第二因素,风险由「新设备登录通知 + 设备管理远程注销」承担。
- 不做「记住密码 / 记住我」勾选框(2026-09-22 已拍板):登录态默认记住(与验证码登录一致);要退出走「我的 → 退出登录」。
- 不改动登录页的默认方式:默认永远是验证码登录。
- 密码字段不做长度预校验:位数/规则只在服务端判定,客户端只负责拦截"空密码"。
7.3 设置登录密码 #B1 #B2 #B3(P0)
入口路径:我的 → 隐私和安全 → 登录密码。入口页 1:1 照 Figma 画板「我的-隐私和安全」(802:128996):卡片一 = 已拉黑的用户(2)/ 锁定码&Face ID(关闭)/ 登录密码(本次新增) / 资金密码(已设置)/ 密保问题(未设置);卡片二 = 手机号(不允许任何人);卡片三 = 注销账号(红字)。
★ 本次唯一的新增:在「锁定码&Face ID」与「资金密码」之间插入一行「登录密码」(绿色钥匙图标),值两态 未设置 / 已设置;其余每一行都是画板原样。(行放在哪儿是建议,最终由 UI 定。)
| 元素 | 内容 | 规则 |
|---|
| 行右侧值 | 未设置(灰)/ 已设置 | 未设置 → 进 B2;已设置 → 进 B4 |
| 卡片说明 | 登录密码用于收不到验证码时登录账号,也可以在常用设备上快速登录。设置后验证码登录依然可用。 | 「设置后仍可用验证码」这句必须留 |
| 本页不放的行 | 两步验证 / 密码提示 / 密保问题 / 邮箱 | 不做就不画(见 2.2、第三章) |
| 占位行 | 应用锁(未启用)、设备 | 分别是全局排期与他人已交付功能,点了给提示、不跳屏 |
B2 设置页
| 元素 | 内容 |
|---|
| 标题 / 说明 | 设置登录密码 / 设置后,你可以用「手机号 + 密码」登录 U8 Chat。密码只保存在服务器,我们不会以任何方式向你索要。 |
| 输入 | 密码 + 确认密码(双输入)。默认隐藏(掩码),右侧眼睛图标可切明文 |
| 规则文案 | 6–18 位,至少包含字母和数字;不能与手机号相同 |
| 按钮 | 完成(不做置灰,点了再校验) |
| 失败反馈 | iOS 弹窗:不符合规则 / 两次输入不一致(文案见第十章) |
B3 成功弹窗:紫圆 ✓ +「登录密码已设置」+「现在可以用手机号 + 密码登录 U8 Chat。忘记密码时可以通过短信验证码进行重置。」+「完成」→ 回 B1(该行值变「已设置」)。
- 设置密码不产生新登录,因此不发「新设备登录」通知。
- 设置成功后不发账号安全通知(2026-09-22 已拍板):设置密码没有产生新登录,通知会变成噪音。
7.4 修改登录密码 #B4 #B5(P0)
| 元素 | 内容 | 规则 |
|---|
| 输入 | 当前密码 + 新密码 + 确认新密码。默认隐藏(掩码),右侧眼睛图标可切明文 | 必须先验当前密码 —— 手机在别人手里且未锁屏时,这是唯一挡得住的一道 |
| 当前密码错误 | iOS 弹窗「当前密码不正确」 | 不计入 A4 / A5 的登录错误计数(那套只针对登录) |
| 新密码规则 | 与 B2 逐字一致 | 同一规则在两处写法不同是最容易被当 bug 上报的问题 |
| 后果说明 | 修改后所有会话(含本机)全部退出,需要用新密码重新登录 | 比换绑更严:改密码是敏感操作,全清最安全;与 C4 重置密码的口径一致 |
| 按钮 | 完成 | |
| 底部 | 红色「关闭登录密码」→ B6 | 密码可选项必须可关 |
B5 成功弹窗:紫圆 ✓ +「登录密码已更改」+「为保护账号安全,其它设备上的登录已全部退出。请用新密码重新登录。」+「去登录」→ A3(密码登录页)。
- 本机也被登出,所以唯一出口是把用户送回登录页,而不是回「隐私和安全」。
7.5 关闭登录密码 #B6(P1)
| 项 | 规则 |
|---|
| 入口 | 修改密码页(B4)底部的红色「关闭登录密码」 |
| 形式 | iOS 两按钮确认弹窗:取消 | 关闭 |
| 文案 | 关闭后将只能用验证码登录,确定要关闭登录密码吗? |
| 前置校验 | 必须同时校验当前密码(用 B4 已输入的那一次),否则拿到手机的人可以一键把密码关掉 |
| 关闭后 | 服务端清掉密码 → 回 B1(行值变「未设置」)→ 结果弹窗「登录密码已关闭」 |
| 通知 | 不发「新设备登录」通知(没有产生新登录);不发短信通知(2026-09-22 已拍板) |
| 影响 | 其它设备上的登录不受影响(关密码不等于登出) |
7.6 忘记密码 #C1 #C2 #C3 #C4 #C5(P0)
入口:密码登录页的「忘记密码?」(A3)。唯一入口 —— 登不进来的人进不去设置页。
A3 忘记密码? → C1 发送验证码(号码只读)
→ C2 输入验证码短信(5 位 / 5 分钟)
→ 校验通过 → 签发一次性重置票据(10 分钟)
→ C3 设置新密码(双输入)
→ C4 重置成功(其它设备登录全部失效)→ 去登录(回 A3)
→ 收不到短信 → C5 自助排查 → 重新发送(回 C2)
| 屏 | 关键规则 |
|---|
| C1 | 号码只展示、不可改(从 A3 带过来,中间四位脱敏)—— 不做成输入框;点「发送验证码」走短信(这条流程不依赖活跃设备)。本页不放「没收到验证码?」 —— 那时还没发码,那颗链接属于 C2 |
| C2 | 与换绑、登录同一套验证码页(气泡 + 号码 + 5 方框 + 浮动键盘 + 30s 重发),号码同样中间四位脱敏;多一行「← 没收到验证码?」 |
| C3 | 新密码 + 确认新密码,规则与 B2 逐字一致;不允许返回改手机号(票据与号码绑定,返回即作废) |
| C4 | 紫圆 ✓ +「登录密码已重置」+「请用新密码登录。为保护账号安全,其它设备上的登录已全部失效。」+「去登录」→ A3 |
| C5 | 两条自查(信号与短信拦截 / 号码是否填对)—— 原「等 60 秒后重发」已删(用户会主动重发,不必教);按钮「知道了」回到 C2。号码停用 / 丢失怎么办不作为用户文案 —— 页面上只留一条标注(给开发 / UI 看),文字放在演示页右侧说明栏 |
规则
- 只走短信:忘记密码的用户可能没有任何活跃设备,因此这条流程不能把验证码发到官方账号会话(与登录、换绑的通道规则不同,这是有意为之)。
- 不泄露号码是否注册:该号码不存在时,同样提示「验证码已发送」。
- 重置票据:10 分钟有效、一次有效;过期或复用 → 「本次操作已超时,请重新验证手机号」。
- 重置后注销该账号其它所有设备(2026-09-22 已拍板):重置密码通常意味着用户怀疑账号出了问题,保留其它会话等于把风险留着。(换绑手机号采用「不强制下线」,因为那是正常使用中的用户 —— 两处口径不同是有意的。)
- 被下线的设备不推送,下次打开 App 时提示「登录已失效,请重新登录」。
- 不做冷却规则(如"重置后 N 小时内不能再改"):没有客服,误伤没法救。
7.7 系统通知与安全兜底 #D1(P0)
承载方式沿用「设备管理」6.9.1,不重新定义:官方账号「U8 Chat」,带认证标识、像用户一样出现在会话列表、可聊天,状态显示「客服」。
| # | 消息 | 触发 | 发给谁 |
|---|
| ① | 新用户首次登录(欢迎 + 立规矩) | 新注册用户登录第一台设备 | 该设备自己 |
| ② | 登录验证码 | 新设备用「手机号 + 验证码」登录时 | 已登录的活跃设备(无活跃设备时走短信) |
| ③ | 新设备登录 | 账号产生一次新的登录(会话) —— 含密码登录、扫码登录;同一台设备退出后重新登录也算 | 所有其它在线端 |
本次新增带来的变化
- 密码登录不发验证码:不产生 ②;登录成功时产生 ③。
- 「③ 新设备登录」的文案里,兜底出口只有「我的 → 设备」终止会话(不含「修改登录密码」,也不含「联系客服」—— 2026-09-23 拍板)。
- 三处验证码场景(登录 / 换绑 / 忘记密码)的短信文案统一,且都不出现「联系客服」。
| 场景 | 验证码通道 |
|---|
| 登录(新用户第一台设备 / 账号下无活跃设备) | 短信 |
| 登录(账号下有活跃设备) | 官方账号 U8 Chat 会话(留「改用短信」兜底) |
| 换绑手机号(验旧号 / 验新号) | 短信 |
| 忘记密码 | 短信(本期没有"改用官方账号会话"的分支,因为用户可能没有任何活跃设备) |
八、规则与边界
8.1 密码规则
| 项 | 规则 | 说明 |
|---|
| 长度 | 6–18 位 | |
| 字符 | 至少包含字母和数字,允许符号 | 不要求大小写混合 + 特殊字符:这类规则会挡住普通人,本期靠锁定与登录通知承担安全 |
| 禁止 | 不能与手机号相同 | 客户端与服务端都校 |
| 保存 | 只存哈希(服务端);客户端不落盘 | 明文只在设置/登录的请求体里出现 |
| 显示 | 默认掩码,可切明文 | |
| 强度条 | 不做 | 对「8 位以上 + 字母数字」这条规则没有增量信息 |
| 密码提示 hint | 不做 | 见 2.2 |
8.2 密码错误与锁定
| 项 | 规则 |
|---|
| 计数维度 | 按手机号累计(不是按设备)。换设备不清零,否则等于没锁 |
| 连续错误 | 连续 5 次 → 锁定 15 分钟 |
| 再次触发 | 解锁后再连续错 5 次 → 锁定 24 小时 |
| 锁定期内 | 即使密码正确也不放行;但验证码登录始终可用 |
| 记录清零 | 一次成功登录后计数清零 |
| 提示 | 弹窗必须同时给时长与出路(「你也可以用验证码登录」) |
| 申诉 | 本期不做(没有客服),到期自动解锁 |
| 通知 | 锁定/解锁都不发通知 |
与换绑的差异:换绑是「错误 5 次/小时 → 锁 24 小时」。密码登录是高频入口,误伤成本更高,所以起跳更短(15 分钟);24 小时档留给"反复触发"。
8.3 验证码参数(全站统一,与「修改手机号」一致)
| 项 | 值 |
|---|
| 位数 | 5 位数字(方框 5 个) |
| 有效期 | 5 分钟 |
| 重发冷却 | 30 秒(界面显示「30s后再试」,归零后变「重新发送验证码」) |
| 错误上限 | 5 次 / 小时 |
| 超限后果 | 锁定 24 小时,到期自动解锁;本期不做申诉 |
| 提交方式 | 输满 5 位自动提交(无确认按钮) |
2026-09-22 已拍板:验证码位数全站统一 5 位(登录 / 换绑 / 忘记密码共用同一套验证码服务,见 决策 20)。任何一处要改位数,三处必须同时改。
8.4 状态对照表(一屏看全)
| 场景 | 判定 | 用户看到 | 屏 | 是否计数 | 是否通知 |
|---|
| 密码正确 | 校验通过 | 直接进会话列表 | — | 清零 | 给其它端发「新设备登录」 |
| 密码错误(未超限) | 校验失败 | iOS 弹窗 + 剩余次数 | A4 | +1 | 否 |
| 密码错误(超限) | 达阈值 | iOS 弹窗 + 锁定时长 | A5 | 开始锁定 | 否 |
| 锁定期内尝试 | 服务端拒 | 同 A5 | A5 | 不累计 | 否 |
| 该号未设置密码 | 账号无密码 | iOS 弹窗 + 回验证码登录 | A6 | 不计数 | 否 |
| 手机号不存在 | 账号不存在 | 同 A6 文案 | A6 | 不计数 | 否 |
| 手机号位数不对 | 客户端校验 | iOS 弹窗 | — | 不计数 | 否 |
| 设置密码成功 | 校验通过 | 结果弹窗 | B3 | — | 否(已拍板不发) |
| 修改密码成功 | 校验通过 | 结果弹窗 | B5 | — | 所有会话(含本机)退出 → 回登录页 |
| 关闭密码成功 | 校验通过 | 结果弹窗 | — | — | 否(已拍板不发) |
| 重置密码成功 | 校验通过 | 结果弹窗 | C4 | — | 其它端登录失效 |
| 重置票据过期 | 超 10 分钟 | 弹窗「本次操作已超时」 | — | — | 否 |
8.5 多端并发与中断
同一账号允许在多端同时保持登录(2026-09-22 已拍板,沿用现状);密码变更不强制登出其它端(见 7.4)。
| 场景 | 处理 |
|---|
| 两台设备同时改密码 | 先提交者生效;后提交者按"当前密码不正确"处理(它的当前密码已失效)。不引入"改密码进行中"的锁 |
| 重置密码进行中,另一台设备改密码 | 重置流程以重置票据为准;重置成功后,另一台设备的登录会失效(8.6 / C4) |
| 设置密码时 App 被杀 | 无副作用(设置是单次提交);重进 B1 看到「未设置」 |
| 重置流程中途返回 | 票据作废,需从 C1 重新开始 |
| 密码登录过程中网络中断 | Toast「网络解析失败,请切换网络后重试」(沿用客户端现有文案);不计入错误次数 |
8.6 与扫码登录、设备管理的关系
| 关系 | 规则 |
|---|
| 扫码登录 | 不变。扫码登录不经过登录页,也不需要密码;它产生「新设备登录」通知 |
| 设备管理 | 不变。密码登录成功后,新设备会出现在设备列表里;发现异常可在设备管理里注销 |
| 换绑手机号 | 不要求输入登录密码(换绑靠"验旧号验证码",见修改手机号交付物)。换绑成功后,密码保留不变,登录手机号也跟着变。2026-09-22 已拍板:不在换绑成功页加「登录密码不变」的提示(换绑交付物本次不改) |
| 注销登录 | 与密码无关;退出登录后再次登录仍需凭证(验证码或密码) |
| 资金密码 | 两套东西,互不影响 |
8.7 号码与账号边界
| 场景 | 规则 |
|---|
| 手机号被换绑后旧号 | 旧号 + 旧密码不能登录(账号已跟随新号);旧号能否重新注册为新账号 → 见「修改手机号」待确认项(建议冷却 30 天) |
| 同一手机号在不同端 | 一套密码,全局生效;密码变更后立即生效(下一次登录用新密码) |
| 密码设置前的历史设备 | 不受影响,不会被强制登出 |
九、跨端行为
| 端 | 本期 |
|---|
| iOS / Android | 做。同一套规则、同一套文案、同一套锁定策略(服务端统一判定) |
| Web / Desktop | 本期不做密码登录 |
Web / Desktop 为什么不做
- Web / Desktop 的登录已经被扫码登录覆盖(设备管理 6.8:电脑端出二维码 → 手机端确认授权),用户不会因为"Web 上没有密码登录"而登不进来;
- Web 上的密码输入与「扫码 + 手机端确认」是两套安全模型,混在一起会出现「电脑上输密码就直接进,不需要手机确认」的绕过路径 —— 这会削弱设备管理刚建立的那道确认;
- Web 端的登录页是另一套实现(不在本次的原型与设计范围内),不做更干净。
跨端一致性要求(给研发):验证码参数、密码错误计数与锁定、错误码语义必须由服务端统一,各端只负责展示。任何一端自行放宽校验,都会让另外两端的锁定失效。
十、文案(可直接落地)
A · 登录与注册
| 屏 | 位置 | 文案 |
|---|
| A1 | 说明 | 输入手机号,我们会发送一条含验证码的短信。还没有账号的手机号将自动注册。 |
| A1 | 标题 / 副标题 / 条款行 / 新增链接 | 手机号登录 / 未注册的用户,验证后将自动注册账号并登录 / ○ 登录即代表同意用户协议和隐私政策 / 密码登录(本次新增) |
| A3 | 标题 / 副标题 | 手机号登录 / 输入手机号与密码(建议文案) |
| A3 | 密码行 / 按钮 / 两排链接 | 眼睛图标 / 登录 / 上排「忘记密码?」· 下排「验证码登录」 |
| A4 | 弹窗 | 密码错误,请重新输入(还可以尝试 4 次) /「好」 |
| A5 | 弹窗 | 密码错误次数过多,请 15 分钟后再试。你也可以用验证码登录。 /「好」 |
| A6 | 弹窗 | 这个账号还没有设置登录密码,请用验证码登录。 /「好」 |
B · 设置与修改密码
| 屏 | 位置 | 文案 |
|---|
| B1 | 行 | 登录密码 → 未设置 / 已设置 |
| B1 | 卡片说明 | 登录密码用于收不到验证码时登录账号,也可以在常用设备上快速登录。设置后验证码登录依然可用。 |
| B2 | 标题 / 说明 | 设置登录密码 / 设置后,你可以用「手机号 + 密码」登录 U8 Chat。密码只保存在服务器,我们不会以任何方式向你索要。 |
| B2 | 输入 / 规则 / 按钮 | 密码 + 确认密码(默认隐藏,右侧眼睛图标切明文) / 6–18 位,至少包含字母和数字;不能与手机号相同。 / 完成 |
| B2 | 弹窗(规则不符) | 密码需为 6–18 位,且至少包含字母和数字 /「好」 |
| B2 | 弹窗(两次不一致) | 两次输入的密码不一致,请重新输入 /「好」 |
| B3 | 弹窗 | 登录密码已设置 / 现在可以用手机号 + 密码登录 U8 Chat。忘记密码时可以通过短信验证码进行重置。 / 完成 |
| B4 | 标题 / 说明 | 修改登录密码 / 先输入当前密码,再设置新密码。 |
| B4 | 后果 | 修改后其它设备上的登录会全部退出,你自己也要用新密码重新登录。 |
| B4 | 弹窗(当前密码错) | 当前密码不正确,请重新输入 /「好」 |
| B4 | 底部 | 关闭登录密码(红色) |
| B5 | 弹窗 | 登录密码已更改 / 为保护账号安全,其它设备上的登录已全部退出。请用新密码重新登录。 / 去登录 |
| B6 | 弹窗 | 关闭后将只能用验证码登录,确定要关闭登录密码吗? / 取消 | 关闭 |
| B6 | 结果弹窗 | 登录密码已关闭 / 完成 |
C · 忘记密码
| 屏 | 位置 | 文案 |
|---|
| C1 | 标题 / 说明 | 忘记密码 / 我们将发送验证码到你的登录手机号。(已精简,原来两句) |
| C1 | 号码(居中展示)/ 按钮 | +86 183 **** 8215 / 发送验证码 |
| C2 | 标题 | 输入验证码短信 |
| C3 | 标题 / 说明 / 输入 | 设置新密码 / 验证通过。请设置新的登录密码,之后用新密码登录 U8 Chat。 / 新密码 + 确认新密码(默认隐藏) |
| C4 | 弹窗 | 登录密码已重置 / 请用新密码登录。为保护账号安全,其它设备上的登录已全部失效。 / 去登录 |
| C5 | 标题 / 说明 | 没收到验证码? / 按顺序检查这两点,多数情况是短信被拦截了。 |
| C5 | 两条自查 | 1 看手机有没有信号,并检查短信拦截、垃圾短信箱;2 核对你填的号码是不是 +86 183 8215(登录手机号本身,中间四位脱敏)。 |
| C5 | 标注(不面向用户) | 如果这个手机号已经停用或丢失,收不到短信就没办法重置密码。账号找回(申诉 + 人工核验)正在开发中,请留意后续版本更新。 |
| C5 | 按钮 | 知道了(回 C2 验证码页,不触发重发) |
通用(沿用客户端现有文案,不新造)
| 场景 | 文案 |
|---|
| 网络异常 | 网络解析失败,请切换网络后重试(Toast) |
| 服务端错误 | 服务器内部错误(Toast) |
| 重置票据过期 | 本次操作已超时,请重新验证手机号 /「好」 |
| 多端并发重置 | 这个账号正在另一台设备上重置密码,请稍后再试 /「好」 |
| 风控限制 | 账号暂时被限制,请稍后重试(文案里不出现「联系客服」) |
十一、接口与埋点
11.1 接口
| # | 接口 | 入参 | 出参与关键错误 |
|---|
| 1 | 发送验证码 | phone + scene(login / rebind_old / rebind_new / reset_pwd) | 成功即返回;EXCEED_LIMIT(超频)、LOCKED(锁定中) |
| 2 | 验证码登录 / 注册 | phone + code | 成功返回 token + is_new_user(客户端不展示,仅用于埋点与决定是否发欢迎消息) |
| 3 | 密码登录 | phone + password | 成功返回 token;错误:PASSWORD_WRONG(带 remain_try)、PASSWORD_LOCKED(带 unlock_at)、NO_PASSWORD_SET、PHONE_NOT_FOUND(客户端与 NO_PASSWORD_SET 同表现) |
| 4 | 设置密码 | 登录态 + new_password + confirm | 成功;错误:PASSWORD_WEAK / SAME_AS_PHONE |
| 5 | 修改密码 | 登录态 + current_password + new_password | 成功;错误:PASSWORD_WRONG(不计入登录锁定) |
| 6 | 关闭密码 | 登录态 + current_password | 成功 |
| 7 | 重置-发码 | phone | 与 #1 的 reset_pwd 同源;无论号码是否注册都返回成功 |
| 8 | 重置-校验 | phone + code | 成功返回 reset_token(10 分钟、一次有效);错误:CODE_WRONG / CODE_EXPIRED |
| 9 | 重置-提交 | reset_token + new_password + request_id | 幂等(request_id 去重,防重复提交);成功后注销该账号其它所有会话 |
两条硬约束(给研发)
- 重置-提交接口的号码必须从
reset_token 取,客户端不得传号码(否则可越权改任意账号的密码); - 「设置密码 / 修改密码 / 关闭密码」接口必须校验当前密码或登录态 + 二次校验,不得只认登录态(否则拿到已解锁手机即可改密码)。
11.2 埋点
| 事件 | 触发 | 关键字段 |
|---|
login_page_view | 打开登录页 | default_tab=code |
login_switch_password | 点「密码登录」 | |
login_switch_code | 点「用验证码登录」 | |
password_login_submit | 点「登录」 | result(success / wrong / locked / no_password / phone_invalid) |
password_setting_click | B1 点「登录密码」行 | current_state(unset / set) |
password_set_success | 设置成功 | |
password_change_success | 修改成功 | |
password_disable_confirm | 确认关闭 | |
forgot_password_start | 点「忘记密码?」 | |
forgot_password_reset_success | 重置成功 | duration_ms |
no_code_help_view | 打开 C5 | |
password_rule_rejected | 规则校验失败 | reason(weak / mismatch / same_as_phone) |
十二、验收标准
- 未登录打开 App 落在登录页,默认仍是验证码登录;底部有「密码登录」入口。
- 新用户手机号首次登录即注册:号码不存在时,验证码验证通过后直接登录成功,页面上不出现「注册」字样,且该设备收到官方账号的「新用户首次登录」消息。
- 已设置过密码的账号:手机号 + 正确密码 → 直接登录成功;其它在线端收到「新设备登录」通知。
- 密码错误时给 iOS 弹窗,文案含剩余次数;点「好」后手机号保留、密码清空。
- 连续错 5 次锁定 15 分钟;锁定期内即使密码正确也不放行;验证码登录始终可用。
- 从未设置过密码的账号走密码登录 → 弹窗「这个账号还没有设置登录密码,请用验证码登录」,点「好」回登录页并带入手机号。
- 手机号不存在的提示与 #6 完全一致(不泄露号码是否注册)。
- 「我的 → 隐私和安全 → 登录密码」行的值随之正确变化:未设置 / 已设置。
- 设置密码:双输入一致且符合规则才能成功;成功后弹窗明确「忘记密码时可以通过短信验证码进行重置」,返回后行值变「已设置」。
- 修改密码:必须输对当前密码;当前密码错误走独立文案,不计入登录错误次数。改成功后所有会话(含本机)退出,弹窗「去登录」把用户送回登录页;另:设置 / 修改 / 重置三处的密码输入框默认隐藏(掩码),右侧眼睛图标可切明文。
- 关闭密码:必须校验当前密码;确认弹窗为「取消 | 关闭」两按钮;关闭后行值回到「未设置」,且其它设备不被登出。
- 忘记密码:号码只读;走短信验证码(即使该账号有活跃设备);校验通过后才能设置新密码。
- 重置成功:该账号其它所有设备上的登录失效;被下线的设备下次打开提示「登录已失效,请重新登录」。
- 重置票据:10 分钟有效、一次有效;过期或复用给「本次操作已超时,请重新验证手机号」。
- 「没收到验证码?」页存在,三条自查 + 停用/丢失的说明齐全,全站文案不出现「联系客服」。
- 密码相关的所有弹窗、按钮在浅色背景下白字可读(对比度 ≥ 3.4)。
- 演示页
index.html 的 18 屏全部可点、无死链;筛选「核心路径 / 规则与状态」计数正确。
十三、决策与待确认
13.1 已决策(产品已拍板,开发可直接依此执行)
| 编号 | 决策 |
|---|
| 决策 1 | 密码后设置、不强制、不做首次登录弹窗引导;入口在「我的 → 隐私和安全 → 登录密码」 |
| 决策 2 | 保留「新用户手机首次登录即注册」,登录页不出现「注册」按钮 |
| 决策 3 | 密码登录与验证码登录是两条平行的登录方式(二选一),不叠加 |
| 决策 4 | 本期不做两步验证(2FA),理由与未来触发条件见第三章 |
| 决策 5 | 在新设备上用密码登录直接放行,不要求第二因素;风险由「新设备登录通知 + 设备管理远程注销」承担 |
| 决策 6 | 忘记密码只走短信验证码(不依赖活跃设备) |
| 决策 7 | 验证码参数与「修改手机号」统一:5 位 / 5 分钟 / 30s 重发 / 错误 5 次锁 24 小时 |
| 决策 8 | 系统通知沿用官方账号「U8 Chat」;密码登录也发「新设备登录」通知 |
| 决策 9 | 本期没有客服:全站文案不出现「联系客服」,自助路径由 C5 承担 |
| 决策 10 | 版式与零件复用「修改手机号」已定稿口径(iOS 系统弹窗、二级页圆形返回、验证码页版式) |
| 决策 11 | 重置登录密码后,注销该账号其它所有设备(2026-09-22 拍板)。被下线的设备不推送,下次打开提示「登录已失效,请重新登录」 |
| 决策 12 | 登录密码规则=6–18 位,且至少包含字母和数字;不能与手机号相同(不要求大小写混合与特殊字符)(2026-09-22 拍板) |
| 决策 13 | 密码错误阈值=连续 5 次错 → 锁 15 分钟;解锁后再连续 5 次 → 锁 24 小时;锁定期内验证码登录不受影响(2026-09-22 拍板) |
| 决策 14 | 换绑手机号成功后不加「登录密码不变」的提示(2026-09-22 拍板,换绑交付物不改) |
| 决策 15 | 修改 / 关闭登录密码时必须校验当前密码;关闭密码不发通知(2026-09-22 拍板,按建议) |
| 决策 16 | 设置登录密码成功后不发账号安全通知(2026-09-22 拍板,按建议) |
| 决策 17 | 重置密码时不校验新密码是否与旧密码相同(允许相同)(2026-09-22 拍板,按建议) |
| 决策 18 | 密码登录页不做「记住密码 / 记住我」;登录态默认记住,退出走「我的 → 退出登录」(2026-09-22 拍板,按建议) |
| 决策 19 | 允许同一账号在多端同时保持登录(沿用现状);密码变更不强制登出其它端(2026-09-22 拍板) |
| 决策 20 | 验证码位数全站统一 5 位(登录 / 换绑 / 忘记密码)。「修改手机号」PRD 里「验证码位数与登录统一」这一待确认项据此闭环(2026-09-22 拍板) |
| 决策 21 | 登录页 1:1 照 Figma 画板「登录」1092:66063,只在同意条款行下方新增一行「密码登录」入口;画板上既有元素与文案一处不动(2026-09-23 拍板) |
| 决策 22 | 「我的-隐私和安全」1:1 照 Figma 画板 802:128996,只在「锁定码&Face ID」与「资金密码」之间新增「登录密码」行;其余行原样(2026-09-23 拍板) |
| 决策 25 | 本功能只做「密码登录 + 忘记密码」:密码登录前提=手机号已注册登录 且用户自己设置过密码,没有默认密码,没设过一律走 A6;已开发完成的页面(登录验证码页、手机号位数校验)不再画;与本次无关的元素(网络诊断、国家编码能否点…)不做标注也不解释(2026-09-23 拍板) |
| 决策 27 | 修改登录密码成功后,注销该账号所有会话(含本机) —— 用户需用新密码重新登录;成功弹窗的按钮是「去登录」→ A3(2026-09-23 拍板,口径与 C4 重置密码一致) |
| 决策 28 | 设置 / 修改 / 重置密码的输入框默认隐藏(掩码),右侧眼睛图标可切明文(2026-09-23 拍板) |
| 决策 30 | 设计图=目标状态,但不全(部分功能由以前的 UI 同事做过、图纸不在其中)—— 「设计图里没有」不等于「没做过 / 不存在」;哪些页面已开发完成一律由产品确认(2026-09-23 拍板) |
| 决策 29 | 登录页的「国家/地区可以切换」,但那是已经开发好的功能 —— 本次演示不画、不标注(2026-09-23 产品确认) |
| 决策 26 | 演示页说明栏只写本次新增的内容:不解释既有功能、不解释与本次无关的元素(2026-09-23 拍板) |
| 决策 24 | 登录验证码页已开发完成,本次演示与 UI 都不再画它;「新用户手机首次登录即注册」的逻辑不变,写在登录页副标题里(2026-09-23 拍板) |
| 决策 23 | 本演示与 PRD 是「UI 设计之前的输入」:以「有哪些流程、哪些页面、从哪儿进」为准;已有画板 1:1 照做,未画的页面给建议稿;最终视觉以 UI 为准,按钮摆放等版式细节不作为评审与验收项(2026-09-23 拍板) |
13.2 待确认(不阻塞开发)
(2026-09-23 补充) 登录页的「国家/地区」可以切换(产品已确认,是已开发好的功能)—— 本次不画;早期本 PRD 曾擅自写成「固定 +86、不可点」,已撤。
版式类问题不再列在这里 —— 入口摆哪儿、按钮放哪,本演示给建议、最终以 UI 设计为准(见决策 23)。下表只剩流程与内容类的 2 条。
| # | 问题 | 建议 |
|---|
| ① | 客服 / 账号申诉上线后,C5 是否补「账号找回」入口? | 建议补,并把 C5 作为下一期账号找回的接入点 |
| ② | 设计稿未画的页面(A3、B2–B6、C1–C5)的文案由本演示建议(例:A3 副标题「输入手机号与密码」);版式由 UI 定、不需要回填 | 建议文案照本演示执行;要改文案直接提,改动很小 |
十四、与其它交付物的关系 / 相对现状改了什么
14.1 与其它交付物的边界
| 交付物 | 本次是否改动 | 说明 |
|---|
设备管理 | 不改 | 验证码通道规则、新设备登录通知、官方账号「U8 Chat」全部沿用;密码登录已在其口径里("含扫码、密码登录") |
修改手机号 | 不改 | 验证码页版式与参数、iOS 弹窗、圆形返回被本次复用;换绑流程本身不动 |
文件夹 / 表情回复 | 不改 | 与登录无关 |
| 底部 Tab 口径 | 不改 | 本次的「隐私和安全」是二级页,不涉及 Tab |
14.2 相对现状改了什么
- 登录页多一个入口:「密码登录」(默认仍是验证码登录)。
- 新增密码登录页及其三种结果(密码错 / 锁定 / 未设过密码)。
- 「我的 → 隐私和安全」多一行「登录密码」(未设置 / 已设置),含设置、修改、关闭三条路径。
- 新增忘记密码流程(短信验证码 → 设置新密码 → 重置后其它设备失效)。
- 新增自助排查页「没收到验证码?」(因为本期没有客服)。
- 安全兜底补一句:新设备登录通知 / 换绑后的安全提示里,出口从"改密码"变为可落地的「我的 → 隐私和安全 → 登录密码」。
- 明确不做:两步验证(2FA)、邮箱找回、密码提示、账号申诉(第三章 + 2.2)。
14.3 相对设计稿改了什么
| 画板 | 本 PRD 的改动 |
|---|
登录 1092:66063 | 只新增一处:同意条款行下方一行居中的紫色「密码登录」入口。其余(标题「手机号登录」、副标题、国家行、号码行、灰色「继续」、同意条款行、右上角「网络诊断」)逐字照画板 |
我的-隐私和安全 802:128996 | 只新增一处:在「锁定码&Face ID」与「资金密码」之间插入「登录密码」行(绿色钥匙图标,值「未设置」)。其余 6 行 + 「注销账号」照画板 |
| 设计稿未画 | A3 密码登录页、B2–B6 设置 / 修改 / 关闭密码、C1–C5 忘记密码、A4–A6 错误弹窗 —— 版式沿用登录页与换绑的零件,文案由本演示建议(供 UI 参考)。按决策 23,这些页面只要「流程 + 入口 + 规则」对了就达到目的,视觉以 UI 为准 |
14.4 设计图里有哪些相关画板(2026-09-23)
产品给的 UI 设计稿是 Figma 文件 「U8 Chat」umRiEY84pJQmfomeNkbjOf · PAGE「iOS端」1:218 —— 与「修改手机号」用的「U8 Chat 2.0」6dsI4eKdAoZr4RP0uILIBq 不是同一个文件。逐屏核对结果:
| 我们建议的屏 | 这份设计图里有没有 | 位置 / 说明(⚠️ 图纸不全,「没有」不代表没做过) |
|---|
| A1 登录页 | ✅ 已有 | iOS 2.0 画布里的「登录」8673:84289 —— 与本 PRD 用的底图是同一张(截图位图 + 右上角「网络诊断」) |
| ~~A2 登录验证码页~~ | ✅ 已开发完成 | 产品 2026-09-23 明确:这一页已经开发完了,本演示与 UI 都不再画。UI 稿里另有 iOS 旧画布的两屏「登录-输入验证码」4884:65979 / 4947:66162(旧版:紫色「‹ 返回」文字 + 右下「重新获取 / 23s 后再试」+「← 修改手机号」),仅供参考 |
| B1 我的-隐私和安全 | ✅ 已有 | iOS 2.0 里的「我的-隐私和安全」6659:102208(与 14.3 用的 802:128996 是同一设计) |
| A3 密码登录页 | ❌ 还没有 | 全文件搜不到任何「密码登录 / 用密码登录」画板 |
| B2–B6 设置 / 修改 / 关闭登录密码 | ❌ 还没有 | 只有资金密码的同名画板(首次设置 / 重置 / 修改资金密码,共 9 屏),而那是 6 位圆点 + 数字键盘的形态,与「6–18 位含字母」的文本密码不同 |
| C1–C5 忘记密码 | ❌ 还没有 | 无任何「忘记密码 / 重置登录密码」画板 |
| A4–A6 错误弹窗 | ❌ 还没有 | — |
结论:这份设计图里没有「登录密码」相关的任何画板。但如信息表所说,设计图不全(老 UI 同事做的功能不在里面),所以不能据此断定"UI 没做过这套流程" —— 已开发完成的部分由产品确认(例:登录验证码页就是产品确认已开发完、本次不画的)。本演示与 PRD 的价值是:给 UI 一份「要画哪些页面、从哪儿进、每页什么规则」的清单。已有设计的两个页面我们按它 1:1 还原并在其上各加一处入口;其余 18 屏是建议稿,UI 出图后以 UI 为准(决策 23)。
顺带核到的其它画布内容(不在本次范围,仅供参考):我的-更改手机号 11 屏(=「修改手机号」交付物)、资金密码 系列 9 屏、web端扫码登录后-移动端接收到「登录确认」、被注销设备端-退出登录、以及首页 / 资产 / 群聊等大量既有画板。
十五、附录:演示页索引(index.html,18 屏)
| 屏 | 名称 | 分组 | 优先级 | 对应本文 |
|---|
| A1 | 登录页 · 验证码登录(默认) | A · 登录与注册 | P0 | 7.1 |
| A3 | 登录页 · 用密码登录 | A · 登录与注册 | P0 | 7.2 |
| A4 | 密码错误(弹窗) | A · 登录与注册 | P1 | 7.2 |
| A5 | 错误次数过多 · 暂时锁定(弹窗) | A · 登录与注册 | P1 | 8.2 |
| A6 | 该账号还没有设置登录密码(弹窗) | A · 登录与注册 | P1 | 7.2 |
| B1 | 我的 → 隐私和安全(登录密码入口) | B · 设置与修改密码 | P0 | 7.3 |
| B2 | 设置登录密码 | B · 设置与修改密码 | P0 | 7.3 |
| B3 | 设置成功(弹窗) | B · 设置与修改密码 | P0 | 7.3 |
| B4 | 修改登录密码 | B · 设置与修改密码 | P0 | 7.4 |
| B5 | 修改成功(弹窗) | B · 设置与修改密码 | P0 | 7.4 |
| B6 | 关闭登录密码(确认弹窗) | B · 设置与修改密码 | P1 | 7.5 |
| C1 | 忘记密码 · 发送验证码 | C · 忘记密码 | P0 | 7.6 |
| C2 | 输入验证码短信(重置密码) | C · 忘记密码 | P0 | 7.6 |
| C3 | 设置新密码 | C · 忘记密码 | P0 | 7.6 |
| C4 | 重置成功(弹窗) | C · 忘记密码 | P0 | 7.6 |
| C5 | 没收到验证码?(自助排查) | C · 忘记密码 | P1 | 7.6 |
| D1 | 官方账号 U8 Chat(三条消息) | D · 通知与总览 | P0 | 7.7 |
| D2 | 登录方式总览(三条路 + 兜底) | D · 通知与总览 | P0 | 第三章 / 第六章 |
主流程演示顺序:A1(点「继续」后是已开发完成的验证码页,不进演示)· A1 → A3 → A4 / A5 / A6(密码登录的三种结果)· A3 → C1 → C2 → C3 → C4(忘记密码)· B1 → B2 → B3 / B4 → B5 / B6(设置与修改)。