Skip to main content

eHome App 端详细需求设计文档

M01 账号体系(对应需求:FR-101~105)

项目内容
所属项目eHome 智能家居硬件配套 APP + 云端后台定制开发项目
设计依据《eHome智能家居项目需求文档(PRD V1.1)》5.1节、第8章、NFR-03/04;《eHome项目页面功能工时费用明细表》M01模块(序号1~9)
优先级P0(MVP必须,微信登录FR-104为P1)
里程碑M1 MVP开发(账号为基础前置模块)
文档用途直接交付 UI 设计(1人天)与 Flutter 开发(13人天)、云端开发(10人天)、测试QA(3人天)

1. 模块概述与设计原则

1.1 模块范围

本模块覆盖工时表 M01 的全部 9 个页面/功能项:

序号页面/功能项需求编号类型
1启动页与加载页APP
2手机号注册/登录页(验证码/倒计时/协议弹窗)FR-101APP+云端
3邮箱注册/登录页(密码+验证码双模式)FR-102APP+云端
4第三方登录(Apple/Google/Facebook)FR-103APP+云端
5微信登录(国内渠道包)FR-104(P1)APP+云端
6账号认证服务与令牌管理FR-101~105云端
7修改密码页与服务FR-105APP+云端
8账号注销与数据删除流程FR-105APP+云端
9登录注册流程UI设计第8章UI

1.2 设计原则

  • 简约扁平化:对标 Govee Home 简洁交互风格;主色调品牌蓝(色值待甲方品牌规范 Q9 确认后替换,设计稿先用占位色)。
  • 关键操作不超过3步(PRD 8.1):登录/注册统一采用"验证码一键登录"模式,注册与登录合一,不区分注册流程。
  • 全页面适配深色/浅色双主题(FR-211):账号页为首批适配页面。
  • 文案 100% 走多语言资源文件:禁止硬编码(PRD 8.2),7语种:简中/繁中/英/德/法/西/日。
  • 合规前置:首次启动必须先同意隐私政策方可发起任何数据采集;Apple 登录符合 App Store 审核要求(提供第三方登录时必须同时提供 Sign in with Apple)。

1.3 用户与角色

  • 终端用户(主账号):注册账号、绑定设备、管理家庭。
  • 家庭成员(共享用户):独立注册账号后被主账号邀请(邀请流程属 M02,本模块仅提供账号注册能力)。

2. 页面结构与流程图

2.1 页面导航结构

APP启动
├─ 首次启动 → P01 启动页 → 隐私政策弹窗 ─拒绝→ 退出/仅浏览受限模式
│ └─同意→ P02 登录引导页
├─ 非首次且已登录且令牌有效 → 直接进入首页(M04)
└─ 非首次未登录/令牌失效 → P02 登录引导页

P02 登录引导页
├─ 手机号登录 → P03 手机号注册/登录页 → P04 验证码输入页
├─ 邮箱登录 → P05 邮箱注册/登录页(双模式)→ P06 邮箱验证码输入页
├─ Apple / Google / Facebook 一键登录(免验证码)
├─ 微信一键登录(仅国内渠道包)
├─ 忘记密码 → P07 找回密码流程(复用P03/P04验证码能力)→ P08 重置密码页
└─ 第三方登录成功但未绑定手机号/邮箱 → P09 账号补充绑定页

个人中心(M12)入口
├─ 修改密码 → P10 修改密码页
└─ 设置-账号安全 → P11 注销账号页 → P12 注销确认页 → P13 注销冷静期/完成页

2.2 核心状态机(账号认证)

[未登录]

├──(登录成功)──────────────────────► [已登录(令牌有效)]
│ │
│ ├──(令牌过期+刷新成功)──► [已登录(令牌有效)]
│ ├──(令牌过期+刷新失败)──► [未登录] → 跳转P02
│ ├──(主动退出)──────────► [未登录]
│ ├──(异地登录保护触发)──► [需二次验证]
│ │ ├─(验证通过)► [已登录]
│ │ └─(验证失败)► [未登录]
│ └──(发起注销)──────────► [冷静期(可撤销)]
│ │
│ ├──(用户撤销)► [已登录]
│ └──(期满执行)► [已注销(数据删除)]

└──(第三方登录成功但未绑定手机/邮箱)──► [P09 账号补充绑定页]

├──(完成绑定)► [已登录]
└──(暂不绑定)► [已登录(受限)]


3. 页面级详细需求

P01 启动页与加载页(工时表序号1,Flutter 1人天)

页面目标:品牌展示 + 冷启动初始化。

元素规格
品牌 LOGO居中,甲方提供素材(Q9);LOGO 下方产品名"eHome"+ 一句 slogan(多语言)
版本号底部小字显示,如"V1.0.0 (Build xx)"
背景浅色主题白色/深色主题深灰,支持品牌图切换(由后台配置,一期可纯色)

逻辑规则

  1. 冷启动展示时长 ≤2秒(含初始化:读取本地令牌、语言/主题配置、SDK初始化、Sentry初始化)。
  2. 初始化完成后路由决策:
    • 首次启动(本地无隐私同意记录)→ 隐私政策弹窗(见P01-a);
    • 已同意隐私 + 本地令牌有效 → 直接进首页;
    • 已同意隐私 + 无令牌/令牌失效且刷新失败 → P02 登录引导页。
  3. 热启动(后台切前台)不重复展示启动页,仅校验令牌有效性。
  4. 加载失败(无网络):启动页展示"网络异常"提示 + "重试"按钮,不允许未同意隐私政策即发起网络请求。

P01-a 隐私政策弹窗(合规硬性要求,NFR-04)

  • 首次启动必现,不可跳过。
  • 内容:《用户协议》《隐私政策》可点击链接跳转 WebView 阅读,摘要说明收集的个人信息类型(手机号/邮箱/设备标识/位置——位置仅气象功能使用)。
  • 按钮:【同意并继续】主按钮 /【不同意】次按钮。
  • 【不同意】→ 二次挽留弹窗(说明不同意将无法使用)→ 仍不同意则退出 APP 或进入无数据采集的受限模式(仅浏览协议页面)。
  • 未同意前禁止调用任何采集设备信息的 SDK(推送、第三方登录 SDK 延迟初始化)。

验收要点:首次启动必现隐私弹窗;同意记录本地持久化;启动到路由决策 ≤2s。


P02 登录引导页(登录方式聚合页)

页面目标:统一入口,聚合全部登录方式,突出验证码一键登录。

布局(自上而下)

  1. 顶部:品牌 LOGO + "欢迎使用 eHome"(多语言)。
  2. 主按钮区(一级):【手机号登录/注册】品牌蓝填充大按钮;【邮箱登录/注册】描边按钮。
  3. 分割线:"或使用以下方式登录"(多语言)。
  4. 第三方登录图标区(二级,圆形图标横排):Apple(仅iOS,首位)、Google、Facebook、微信(仅国内渠道包)。
  5. 底部:《用户协议》《隐私政策》链接 + 已读勾选框(勾选状态与P01一致则默认勾选)。

交互规则

  1. 未勾选协议时点击任何登录方式 → Toast 提示"请先阅读并同意用户协议和隐私政策",协议文案高亮抖动。
  2. 第三方图标按渠道包动态渲染:海外包 = Apple+Google+Facebook;国内包 = 手机号+邮箱+微信(Apple仅iOS)。
  3. 页面右上角【跳过】不开放(账号为设备绑定前提,必须登录才能使用)。
  4. 语言跟随系统,若与7语种不匹配则默认英语。

验收要点:渠道包登录方式配置正确;Apple 登录在 iOS 端展示且符合审核要求(FR-103)。


P03 手机号注册/登录页(FR-101,序号2,APP 2.5人天 + 云端1.25人天 + QA 0.5人天)

页面目标:手机号 + 短信验证码,注册登录合一。新用户首次登录进入引导页(PRD验收标准)。

页面元素

元素规格与规则
导航左上角返回箭头
标题"手机号登录/注册"(多语言)
区号选择器下拉选择国际区号,默认按SIM卡/系统地区自动识别;支持搜索;支持主流地区手机号
手机号输入框仅数字键盘;按所选区号规则校验长度(前端本地校验);输入满位数自动启用"下一步"按钮
【下一步】按钮未通过格式校验时置灰;点击后进入 P04 并自动触发发送验证码
协议区复用 P02 勾选状态

逻辑规则

  1. 手机号格式本地校验失败 → 输入框下方红色错误文案"请输入正确的手机号",不发请求。
  2. 点击【下一步】→ 请求云端"发送短信验证码"接口 → 成功后跳转 P04 自动开始倒计时。
  3. 云端风控(防刷):同一手机号60秒内不可重复发送;每日上限10条;同IP/设备每小时上限;超限返回错误码;连续失败触发图形验证码挑战。
  4. 号码被冻结(后台 FR-401)→ 登录后提示"账号已被限制,请联系客服"。

P04 验证码输入页

页面元素

  1. 标题:"输入验证码",副标题显示"验证码已发送至 +86 138****8888"(脱敏)。
  2. 6位验证码分格输入框(自动读取系统短信填充;数字键盘)。
  3. 倒计时区:"60s 后重新发送"→ 结束变为可点击【重新发送】。
  4. 【更换手机号】文字链 → 返回 P03。
  5. 登录成功前展示 loading,禁止重复提交。

逻辑规则

  1. 输满6位自动提交校验。
  2. 验证码有效期5分钟;错误→清空+提示;连续错误5次→作废强制重获。
  3. 校验通过:已注册用户→登录成功跳首页;新用户→自动建号+登录→进入新用户引导页(2~3屏轮播,可跳过,标记云端持久化)。
  4. 令牌过期自动刷新无感处理。

异常与边界(QA重点):无网络提交、验证码过期、倒计时中杀进程重进(倒计时本地持久化)、多设备同号码并发登录、区号切换后位数校验。


P05 邮箱注册/登录页(FR-102,序号3,APP 2.5人天 + 云端1.25人天 + QA 0.5人天)

页面目标:支持"邮箱验证码"与"邮箱+密码"两种方式(PRD验收标准),注册登录合一。

页面元素

元素规格与规则
方式切换 Tab【验证码登录】/【密码登录】,默认验证码;切换保留已输入邮箱
邮箱输入框邮箱键盘;本地正则校验;合法后启用下一步
(密码Tab)密码输入框可见/隐藏切换(眼睛图标)
(密码Tab)忘记密码文字链 → P07
主按钮验证码Tab:【下一步】→ P06;密码Tab:【登录/注册】

验证码模式:格式错误→红色提示;点击下一步→发送邮件验证码(6位,10分钟有效)→ P06(同P04布局,脱敏邮箱,60秒重发);新用户自动建号+引导页;频控同短信。

密码模式:正确→登录;未注册→统一提示"邮箱或密码错误"(防枚举);错误5次锁定15分钟;密码强度校验:8~32位、含字母+数字、实时强度条(弱红/中黄/强绿)、禁止与邮箱前缀相同、禁止纯数字连续重复。


第三方登录:Apple / Google / Facebook(FR-103,序号4,APP 3人天 + 云端2人天 + QA 0.5人天)

页面形态:无独立页面,P02图标触发 + P09补充绑定页。

交互流程

  1. 点击图标→调起系统授权→全屏loading。
  2. 客户端提交凭证至云端校验:首次→自动建号(昵称取第三方,Apple隐藏邮箱时生成默认昵称,头像取第三方或默认)+引导页;非首次→直接登录。
  3. 取消授权→静默返回P02;失败→Toast+Sentry上报。
  4. 登录成功后检测账号绑定状态:若手机号与邮箱均为空 → 强制跳转 P09;若已绑定任一 → 正常进入首页。

P09 账号补充绑定页(第三方登录后置流程)

页面目标:确保第三方登录账号至少拥有一种可用于找回/注销的身份凭证,满足合规与安全要求。

页面元素

  1. 标题:"完善账号信息"(多语言)。
  2. 说明文案:"为保障账号安全与后续找回,请绑定手机号或邮箱"。
  3. 【绑定手机号】主按钮 → 跳转 P03/P04 流程(场景参数=bind,成功后返回本页并刷新状态)。
  4. 【绑定邮箱】次按钮 → 跳转 P05/P06 流程(场景参数=bind,成功后返回本页并刷新状态)。
  5. 【暂不绑定】文字链(灰色小字)→ 弹窗二次确认"未绑定可能导致账号丢失且无法注销,确定跳过?"→ 确认后进首页,账号标记为"受限"状态。

受限状态规则

  • 可正常使用基础功能(查看设备、控制设备);
  • 不可执行敏感操作:添加新设备、创建家庭、邀请成员、修改密码、注销账号;
  • 每次进入受限功能页 → 拦截弹窗引导补绑;
  • 个人中心账号卡片显示黄色警示标签"账号未完善"。

绑定成功反馈:Toast"绑定成功" + 解除受限状态 + 云端更新账号完整度标记。

验收要点:第三方首次登录无绑定必现P09;绑定流程复用P03~P06且场景参数正确传递;受限状态拦截逻辑完整;暂不绑定二次确认不可省略。


微信登录(FR-104,P1,序号5,APP 1人天 + 云端0.5人天 + QA 0.25人天)

范围:仅国内渠道包(开关控制,海外包隐藏入口且不初始化SDK)。

流程:未安装→Toast提示;已安装→跳转授权→返回提交code→建号/登录→首次进引导页→检测绑定状态,无手机/邮箱→P09补充绑定(国内强引导,暂不绑定选项弱化或不展示);取消静默返回;失败Toast+Sentry。

优先级:P1,M2交付;UI与渠道开关逻辑M1一并实现。


P07/P08 忘记密码与重置密码(FR-105)

流程:P05密码Tab【忘记密码】→输入邮箱/手机→发验证码→验证通过→P08重置密码(新密码+确认,强度校验同P05,两次不一致提示,不得与旧密码相同)→成功Toast→强制新密码重新登录(全端旧令牌吊销);第三方无密码账号入口文案为"设置密码"。


P10 修改密码页(FR-105,序号7,APP 1人天 + 云端1人天 + QA 0.25人天)

入口:个人中心→账号与安全→修改密码。

元素:原密码、新密码、确认新密码(均带眼睛图标)+【确认修改】。

规则:原密码错误→提示,连续5次当日禁止;新密码强度同P05;新旧相同→提示;成功→吊销除当前设备外全部令牌;第三方无密码→隐藏原密码框显示"设置密码";成功后Toast+安全通知。


P11~P13 账号注销与数据删除(FR-105,序号8,APP 2人天 + 云端2人天 + QA 1人天)

入口:个人中心→账号与安全→注销账号(iOS必须提供,App Store审核要求)。

P11 注销说明页:列出后果(永久删除不可恢复、解绑、数据删除范围含2年时序数据、设备恢复出厂、15天冷静期可撤销、GDPR/国内合规依据);前置校验阻断(主账号且有成员→先转移/移除;OTA进行中→等待;冻结→联系客服;受限账号→先完成P09绑定);底部【申请注销】红色警示按钮/【放弃】。

P12 注销确认页:身份二次验证(短信/邮箱/密码,第三方无密码强制绑定验证);勾选"已知晓后果";提交→P13。

P13 注销生效/冷静期页:展示正式注销日期;【撤销注销】冷静期内可撤;【退出登录】不撤销;冷静期内重新登录弹窗询问是否撤销。

云端删除:冷静期到期删除/匿名化PII、解除关系、删时序数据;日志留存(不含PII);后台同步"已注销"状态。


异地登录保护(FR-105验收标准)

策略:云端记录设备指纹+IP归属地;触发条件=新设备+IP归属地与30天常用不一致;动作=放行+安全通知(邮箱/手机),异常行为叠加时强制二次验证码验证;APP配合推送跳转账号安全页;个人中心【登录设备管理】列表支持移除设备(吊销令牌)。


4. 通用交互与视觉规范(UI设计输入,序号9)

  1. 双主题:浅色/深色两套设计稿;token化颜色;跟随系统(FR-211)。
  2. 组件清单:大按钮三态、描边按钮、第三方圆形图标、分格验证码框、倒计时、密码框(眼睛)、强度条、协议勾选、Toast、全屏loading、二次确认弹窗、区号选择器(含搜索)。
  3. 表单规则:错误就近红色12px+关键Toast;聚焦自动上滚避键盘;提交防重复(loading+禁用)。
  4. 键盘:手机号数字、邮箱邮箱、验证码数字自动聚焦、密码不联想不缓存。
  5. 多语言:德/法预留1.4倍文本空间,提供最长文案示例;RTL本期不涉及。
  6. 动效:转场系统默认;验证码错误抖动;倒计时渐变。

5. 客户端技术要求(Flutter)

  1. 兼容 iOS 13+ / Android 7.0+(NFR-06)。
  2. 令牌存储:iOS Keychain / Android Keystore封装,加密存储(NFR-03);不落盘明文密码。
  3. 全链路TLS(NFR-03),禁明文HTTP;证书校验不可关闭。
  4. 短信自动填充:Android SMS Retriever / iOS系统能力。
  5. 渠道包:登录方式开关由构建变体控制,同一套代码。
  6. SDK延迟初始化:隐私同意前不初始化微信/Google/Facebook/推送SDK。
  7. Sentry(NFR-10):登录失败/SDK异常/刷新失败上报,不携带手机号/邮箱明文。

6. 云端需求(序号6:账号认证服务与令牌管理,2人天)

6.1 接口清单

接口说明
POST /auth/sms/send发送短信验证码(区号+手机号、场景login/bind/reset/cancel、风控挑战参数)
POST /auth/email/send发送邮箱验证码(同上场景参数)
POST /auth/login/code验证码登录/注册(返回令牌+isNewUser)
POST /auth/login/password邮箱密码登录
POST /auth/login/thirdparty第三方登录(渠道+凭证,返回令牌+isNewUser+needBind)
POST /auth/token/refresh刷新令牌
POST /auth/logout退出登录(吊销当前令牌)
POST /auth/password/reset重置密码(验证码凭证+新密码)
POST /auth/password/change修改密码(旧+新,登录后调用)
POST /auth/bind补充绑定手机号/邮箱(验证码凭证+绑定类型,登录后调用)
GET /auth/account/status查询账号完整度与受限状态
GET /auth/devices登录设备列表
DELETE /auth/devices/{id}移除设备(吊销指定令牌)
POST /account/cancel申请注销
POST /account/cancel/revoke撤销注销

6.2 令牌与安全策略

  1. 双令牌:AccessToken 2h + RefreshToken 30d滑动续期;401静默刷新,失败跳登录。
  2. 改密/重置→吊销全部(重置)或除当前外(修改)。
  3. 多设备上限5台,超限挤掉最旧+推送。
  4. 验证码:短信5min/邮箱10min;60s重发+日上限+IP/设备风控+图形挑战;错5次作废。
  5. 密码:加盐哈希(bcrypt/argon2),禁明文/可逆加密(NFR-03)。
  6. 防枚举:统一错误文案。
  7. 复用IoT平台账号体系(云端-0.5人天)。
  8. 账号完整度标记:thirdparty_only / bound_phone / bound_email / full;受限状态由完整度驱动。

6.3 合规(NFR-04)

  • 登录日志最小化留存;GDPR注销触发删除/匿名化,数据可携带权二期;国内合规注销入口+隐私政策版本化(重大变更重弹窗)。

7. 验收标准核对表(对齐 PRD 5.1)

需求PRD验收标准本设计落点
FR-101主流地区手机号;60秒倒计时防频繁;新用户首次进引导页P03区号选择器;P04倒计时+云端频控;P04新用户引导页
FR-102邮箱验证码/密码双方式;密码强度校验P05双Tab;强度条与规则
FR-103三渠道一键登录自动建号;Apple符合审核第三方自动建号;Apple首位+隐藏邮箱;P09补充绑定
FR-104国内渠道包微信授权登录微信登录+渠道开关,P1排期M2;P09国内强引导
FR-105改密、注销(含数据删除GDPR/国内合规)、异地保护P10、P11~P13冷静期+云端删除、异地策略;P09受限拦截

QA测试要点(3人天):多区号边界、验证码频控并发、双主题×7语种走查、第三方授权各分支、P09绑定/暂不绑定/受限拦截全流程、渠道包矩阵、令牌静默刷新、注销全流程(含受限账号阻断)、密码强度与锁定。


8. 依赖与风险

说明责任/时点
品牌LOGO与蓝色值(Q9)UI高保真前置,先用占位甲方M0提供
云平台选型(Q1)影响令牌方案细节M0确认
第三方开发者账号Apple/Google/Facebook/微信资质甲方配合(PRD第12章)
短信/邮件服务商国际通道覆盖范围M0确定
隐私政策/注销文案法务审核合规验收前置甲方/双方法务,M1前定稿

以上为 M01 账号体系完整详细需求设计,页面、交互、校验、异常、接口、验收均已闭环,可直接交付UI与开发。如确认无误,可按同样格式继续输出 M02 家庭与设备管理(FR-111~116)。