Skip to main content

eHome App 端详细需求设计文档

M12 个人中心与国际化(对应需求:FR-2101~2106)

项目内容
所属项目eHome 智能家居硬件配套 APP + 云端后台定制开发项目
设计依据《eHome智能家居项目需求文档(PRD V1.1)》用户中心与全球化章节、第8章、NFR-04(可用性99.9%)/NFR-06(合规GDPR/CCPA/个保法)/NFR-07(国际化7语种+单位制);《eHome项目页面功能工时费用明细表》M12模块
范围说明本模块覆盖个人资料管理、账号安全与多因素认证、隐私中心与数据权利行使、APP全局设置(语言/单位/主题/通知)、关于与反馈、国际化基础设施(7语种资源管理+RTL适配+本地化测试);不包含家庭/房间/设备管理(属M02)、气象位置隐私(属M10)、OTA升级(属M09)、运营后台CMS(属独立后台项目,本模块仅消费其多语言资源)
编号衔接说明M01登录注册为本模块前置;M02家庭设置为单位/时区源(本模块提供全局覆盖入口);M06通知偏好在本模块集中管理;M10气象隐私撤回深链至本模块隐私中心;本文档FR编号按工时表M12行顺延为FR-2101~2106
优先级P0(MVP必须;个人中心是账号安全、合规权利行使、全球化体验的枢纽;无隐私中心则无法上架欧盟/加州市场;无国际化基础设施则7语种交付不可持续)
里程碑M2 完整功能期开发(依赖M01账号、M02家庭设置、M06通知、M10气象隐私;合规评审M1完成;7语种翻译资源M2前交付首批)
文档用途直接交付 UI 设计、Flutter 开发(APP端)、云端开发、本地化团队、法务合规、测试QA

需求编号映射(以工时表 M12 功能项为准):

需求编号功能项
FR-2101个人资料管理(头像/昵称/手机/邮箱/修改密码/账号绑定)
FR-2102账号安全与MFA(登录设备管理/会话控制/TOTP/短信二次验证/异常登录告警)
FR-2103隐私中心与数据权利(数据导出/删除/撤回同意/第三方授权管理/隐私政策版本化)
FR-2104APP全局设置(语言/单位制/主题/通知偏好/无障碍/减弱动效)
FR-2105关于与反馈(版本信息/开源许可/客服工单/应用内评分引导/诊断日志导出)
FR-2106国际化基础设施(7语种资源管线/RTL适配/本地化测试/缺失翻译回退策略)

1. 模块概述与设计原则

1.1 模块范围

序号页面/功能项需求编号类型优先级
1个人资料页FR-2101APP+云端P0
2账号安全页(含MFA与设备管理)FR-2102APP+云端P0
3隐私中心页FR-2103APP+云端+法务P0
4APP全局设置页FR-2104APP+云端P0
5关于与反馈页FR-2105APP+云端P0
6国际化基础设施(非页面,工程能力)FR-2106工程+本地化P0

边界与衔接说明:

  • 入口A:「我的」Tab → P01(个人中心首页);
  • 入口B:P01 →【个人资料】→ P02;【账号与安全】→ P03;【隐私中心】→ P04;【通用设置】→ P05;【关于eHome】→ P06;
  • 入口C:M01登录页【忘记密码】→ P02修改密码流程;
  • 入口D:M10-W07【撤回同意】→ P04隐私中心-数据权利;
  • 入口E:M06-A02【通知设置】→ P05通知偏好;
  • 出口:语言/单位/主题变更 → MQTT广播全局刷新(M02/M04/M08/M10等消费);隐私数据删除 → 联动M01注销+M02家庭退出+M10位置删除+M06通知清除;MFA启用 → M01登录流程增加二次验证步骤。

1.2 设计原则

  • 安全纵深防御:密码+MFA+设备管理+会话控制四层防护;敏感操作(改密/删号/导出)强制二次验证+冷却期;异常登录实时告警+一键踢出。
  • 合规即产品:隐私中心不是法律文本堆砌,而是用户可行使权利的自助工具;数据导出/删除/撤回同意三步可达、状态可追踪、结果可确认;隐私政策版本化+变更强提醒。
  • 全球化原生:语言/单位/主题/RTL/无障碍全部配置驱动,零硬编码;新语种接入仅需翻译资源文件+CMS配置;缺失翻译优雅回退英文+运营看板标记待补。
  • 设置即时生效:所有全局设置变更秒级广播,无需重启APP;家庭级设置(M02)与用户级设置(本模块)分层,用户级覆盖家庭级但明示"仅对您生效"。
  • 反馈闭环:客服工单携带诊断上下文(脱敏);应用内评分引导仅在成功场景后触发(避免差评);开源许可自动生成+版本号校验。
  • 最小权限与透明:第三方授权列表清晰展示权限范围+撤回入口;数据导出格式标准(JSON/CSV)+字段说明;删除操作不可逆但提供30天冷静期(防误操作)。

1.3 用户与前置条件

  • 用户状态:必须已登录(M01);未登录拦截跳转登录页,成功回跳来源页。
  • 合规前置:首次进入隐私中心展示合规摘要(同M10风格);欧盟/加州/中国用户按IP+账号注册地判定适用法规,展示对应条款。
  • 安全前置:修改密码/删除账号/导出数据需当前密码或MFA验证;新设备登录触发MFA(如已启用)。
  • 网络前置:资料修改/安全操作/隐私请求需网络;设置页离线可查看缓存值,修改需联网。
  • 翻译前置:7语种资源文件随APP发版;CMS动态文案(公告/活动)实时拉取;缺失key回退英文+控制台warn。

2. 页面结构与流程图

2.1 页面导航结构

入口A:我的Tab ──► P01
入口B:P01各入口 ──► P02/P03/P04/P05/P06
入口C:M01[忘记密码] ──► P02改密
入口D:M10-W07[撤回同意] ──► P04
入口E:M06-A02[通知设置] ──► P05

P01 个人中心首页
├─ 头像+昵称+账号标识(手机/邮箱掩码)
├─ [个人资料] ──► P02
├─ [账号与安全] ──► P03
├─ [隐私中心] ──► P04
├─ [通用设置] ──► P05
├─ [关于eHome] ──► P06
├─ [帮助与反馈] ──► P06(反馈Tab)
└─ [退出登录](二次确认)

P02 个人资料页
├─ 头像编辑(拍照/相册/裁剪/预览)
├─ 昵称(1~20字符,敏感词过滤)
├─ 手机号(绑定/换绑,短信验证)
├─ 邮箱(绑定/换绑,邮件验证)
├─ [修改密码](旧密码+新密码+确认,强度校验)
├─ 第三方账号绑定(微信/Apple/Google,解绑需保留至少一种登录方式)
└─ [保存](脏数据检测,离开拦截)

P03 账号安全页
├─ 登录密码(上次修改时间+[修改]→P02改密)
├─ 多因素认证(MFA)
│ ├─ TOTP authenticator(绑定/解绑,二维码+备用码)
│ └─ 短信二次验证(开关,手机号联动P02)
├─ 登录设备管理
│ ├─ 当前设备(标识"本机")
│ └─ 其他设备列表(设备名/IP/最后登录时间/地点+[踢出])
├─ 会话控制(自动登出时长:永不/7天/30天/90天,默认30天)
├─ 异常登录告警开关(默认开,经M06推送)
└─ 登录活动日志(最近30天,时间/IP/设备/地点/结果)

P04 隐私中心页
├─ 隐私政策(当前版本+历史版本列表+变更高亮)
├─ 数据权利行使
│ ├─ [下载我的数据](选择范围:资料/设备/场景/日志;格式JSON/CSV;邮箱接收)
│ ├─ [删除我的账号](30天冷静期+影响说明+二次验证+密码确认)
│ └─ [撤回同意](分项:位置/分析/个性化推荐;撤回即生效+联动模块)
├─ 第三方授权管理(已授权应用列表+权限范围+[撤销授权])
├─ Cookie与追踪(APP内WebView Cookie清理+分析SDK开关)
└─ 合规声明(GDPR/CCPA/个保法按地区展示)

P05 通用设置页
├─ 语言(跟随系统/手动7语种选择;变更后即时刷新+Toast提示)
├─ 单位制(温度℃/℉、风速km/h/mph/m/s、气压hPa/inHg;覆盖M02家庭设置,标注"仅对您生效")
├─ 外观(浅色/深色/跟随系统;即时切换)
├─ 通知偏好(总开关+分类开关:告警/场景执行/OTA/气象/营销;紧急告警穿透免打扰说明)
├─ 无障碍(字体大小缩放/读屏优化/减弱动效/高对比度模式)
├─ 数据与缓存(清除缓存/离线数据包管理)
└─ 高级(开发者选项/诊断日志导出/实验室功能P1)

P06 关于与反馈页
├─ Tab:关于 / 反馈
├─ 关于Tab
│ ├─ APP版本号+[检查更新](M01应用内升级)
│ ├─ 固件版本摘要(全家设备最低/最高版本)
│ ├─ 开源许可(列表+详情页)
│ ├─ 服务协议+隐私政策链接
│ └─ 版权信息
└─ 反馈Tab
├─ [联系客服](预填诊断信息→M10工单)
├─ [意见反馈](表单:类型/描述/截图/联系方式)
├─ [给eHome评分](仅当近30天无失败工单+使用>7天时展示)
└─ 常见问题(FAQ,CMS驱动,7语种)

2.2 核心状态机一:账号安全与MFA

[登录请求](M01)

├──(密码正确)──► [MFA检查]
│ │
│ ├──(未启用MFA)──► [登录成功] ──► 写会话+设备指纹+登录日志
│ │
│ └──(已启用MFA)──► [二次验证页]
│ │
│ ├──TOTP验证码正确──► [登录成功]
│ ├──短信验证码正确──► [登录成功]
│ ├──验证码错误(≤5次)──► 重试
│ ├──验证码错误(>5次)──► [锁定15min] ──► M06告警账号所有者
│ └──[使用备用码]──► 验证通过→消耗该备用码→登录成功

├──(密码错误)──► [失败计数]
│ ├──(≤5次)──► 提示重试
│ └──(>5次)──► [账号临时锁定15min] ──► M06告警

└──(新设备/IP异地)──► [风险评分]
├──(低风险)──► 正常流程
└──(高风险)──► 强制MFA(即使未启用)+M06告警"检测到异常登录尝试"

[MFA绑定流程]
├─ 选择方式(TOTP/短信)
├─ TOTP:生成密钥→展示二维码+备用码(10个,一次性)→用户输入验证码确认→绑定成功
└─ 短信:发送验证码→输入确认→绑定成功(需P02已绑定手机)

[设备踢出]
├─ 点击[踢出]→二次确认→DELETE /sessions/{sessionId}
├─ 目标设备下次请求返回401→强制重新登录
└─ 当前设备不可踢出(按钮隐藏)

2.3 核心状态机二:数据权利行使

[用户发起数据权利请求](P04)

├──[下载我的数据]
│ ├─ 选择范围+格式→POST /privacy/export
│ ├─ 服务端异步生成(≤24h)→完成后M06推送+邮件通知
│ ├─ 下载链接有效期7天+单次使用
│ └─ 请求频率限制:30天内最多3次

├──[删除我的账号]
│ ├─ 阅读影响说明(家庭解散/设备解绑/数据不可恢复)
│ ├─ 二次验证(MFA/密码)+短信确认码
│ ├─ POST /privacy/delete → 账号进入30天冷静期
│ │ ├─ 冷静期内登录→弹窗[恢复账号]/[确认立即删除]
│ │ └─ 冷静期满→自动执行永久删除
│ └─ 永久删除:匿名化PII+删除设备绑定+解散家庭+清除日志+通知第三方撤销授权

└──[撤回同意]
├─ 选择撤回项(位置/分析/个性化)
├─ POST /privacy/consent/withdraw → 即时生效
├─ 联动:位置→M10删除+场景停用;分析→SDK停止采集;个性化→推荐重置
└─ 撤回记录写审计日志


3. 页面级详细需求

P01 个人中心首页 + P02 个人资料页(FR-2101)

页面目标:身份信息中心化管理,修改流程安全便捷,脏数据防丢失。

页面元素(P01):

元素规格与规则
用户信息卡头像(圆形,64px)+昵称+账号标识(手机138**1234/邮箱a*@b.com);点击头像→P02
功能列表五项入口(资料/安全/隐私/设置/关于)+帮助反馈;每项右侧箭头;隐私中心带"NEW"角标(首次进入后消除)
退出登录底部红色文字按钮;点击→二次确认弹窗"确定退出登录?"+[取消]/[确定];确认后清除会话+跳转M01登录页

页面元素(P02):

元素规格与规则
头像编辑点击→ActionSheet[拍照][从相册选择][查看大图];裁剪器1:1固定比例;上传压缩≤500KB;预览圆形遮罩
昵称输入框1~20字符;实时敏感词过滤(本地词库+云端兜底);保存时服务端二次校验
手机号已绑定:显示掩码+[更换];未绑定:[绑定];更换/绑定流程:输入新号→短信验证码(60s节流)→确认;原手机号解绑需同时验证新号
邮箱同手机号逻辑;验证链接24h有效
修改密码旧密码+新密码+确认新密码;强度校验(≥8位,含大小写+数字+特殊字符);新密码不能与最近5次相同;成功后踢出其他所有设备+当前设备保持登录
第三方绑定微信/Apple/Google图标+状态(已绑定✓/未绑定);绑定→OAuth流程;解绑→二次确认"解绑后将无法使用该方式登录";至少保留一种登录方式(密码+手机/邮箱/第三方任一)
保存按钮底部固定;脏数据检测(任何字段变更激活);离开页拦截"有未保存的修改"+[保存]/[放弃]/[取消]

逻辑规则:

  1. 数据来源:GET /user/profile;修改PUT /user/profile(头像单独POST /user/avatar);密码PUT /user/password;第三方POST /user/oauth/bind|unbind;
  2. 敏感操作验证:改密/换绑手机/换绑邮箱/解绑第三方均需当前密码或MFA验证;验证失败3次锁定15min;
  3. 头像处理:客户端压缩+裁剪;服务端存储CDN+缩略图(64/128/256三档);旧头像异步清理;
  4. 昵称敏感词:本地DFA算法初筛(毫秒级);保存时云端AC自动机复核;命中→阻断+提示"包含不当词汇,请修改";
  5. 密码策略:bcrypt哈希+盐;强度前端实时反馈(弱/中/强色条);泄露库比对(Have I Been Pwned API,P1);
  6. 埋点:资料页访问率、头像修改率、昵称修改率、手机/邮箱绑定率、改密成功率、第三方绑定分布、脏数据拦截率。

验收要点:头像上传/裁剪/预览闭环;昵称敏感词双端校验;手机/邮箱换绑验证流程;改密强度校验+踢出其他设备;第三方绑定/解绑+至少一种登录方式保障;脏数据离开拦截;退出登录二次确认+会话清除。


P03 账号安全页(FR-2102)

页面目标:安全态势一目了然,MFA易启用易恢复,设备可控,异常可感知。

页面元素:

元素规格与规则
密码状态"上次修改:2024-03-15"+[修改]→P02改密;超90天未改橙色提示"建议定期修改密码"
MFA区域TOTP卡片:已绑定显示"已启用"+[管理](查看备用码/重新绑定/解绑);未绑定[启用]→绑定流程;短信验证卡片:开关+联动手机号显示
登录设备列表:设备名(iPhone 15 Pro)+IP+最后登录时间+地点(城市);当前设备标识"本机"不可操作;其他设备[踢出]→二次确认
会话控制单选:永不/7天/30天/90天;默认30天;说明"超时未使用将自动退出登录"
异常登录告警开关默认开;说明"检测到异地/新设备登录时推送通知";联动M06通道
登录活动最近30天列表:时间+IP+设备+地点+结果(成功/失败/MFA拦截);[查看全部]→分页加载

逻辑规则:

  1. TOTP绑定:RFC 6238标准;密钥Base32编码;二维码含otpauth URI;备用码10个SHA256哈希存储,展示明文一次,用后即焚;解绑需密码+当前TOTP验证码(防劫持);
  2. 设备指纹:device_id+UA+IP+地理位置哈希;新设备判定=指纹未见过 OR IP跨洲 OR 短时间多地登录;
  3. 踢出原子性:DELETE /sessions/{id} → Redis会话失效 → 设备下次请求401 → APP跳转登录页;踢出失败回滚+Toast;
  4. 异常告警:风险评分模型(IP信誉+设备指纹+行为序列);高分事件触发M06推送+写登录日志;告警24h去重;
  5. 会话续期:活跃操作刷新TTL;后台超阈值不续期;多设备会话独立;
  6. 埋点:MFA启用率、TOTP vs 短信占比、备用码使用率、设备踢出频次、会话时长分布、异常告警触发率、登录活动页访问率。

验收要点:TOTP绑定/验证/解绑/备用码全流程真机验证(Google Authenticator/Authy兼容);短信验证联动P02手机号;设备列表实时性+踢出即时生效;会话控制TTL准确;异常登录注入测试(模拟异地IP)→告警到达;登录活动30天完整性。


P04 隐私中心页(FR-2103)

页面目标:合规权利自助行使,流程透明可追踪,删除不可逆但有冷静期。

页面元素:

元素规格与规则
隐私政策当前版本号+生效日期;[查看历史版本]→列表(版本号+变更日期+变更摘要高亮);重大变更首次进入强提醒弹窗
数据下载[下载我的数据]→选择范围复选框(个人资料/设备信息/场景配置/操作日志/气象数据)+格式单选(JSON/CSV)→确认→提交成功提示"数据准备中将通过邮件通知,请耐心等待"
账号删除[删除我的账号]红色按钮→影响说明全屏页(列出将丢失的数据+家庭解散+设备解绑)→[继续删除]→MFA/密码验证+短信确认码→提交→冷静期提示"账号将在30天后永久删除,期间登录可恢复"
撤回同意分项开关:位置数据(联动M10)/使用分析/个性化推荐;每项说明撤回影响;关闭即生效+Toast"已撤回"+联动模块刷新
第三方授权列表:应用名+授权时间+权限范围(只读/读写)+[撤销]→二次确认;空态"暂无第三方授权"
Cookie与追踪[清除WebView Cookie]按钮;分析SDK开关(默认开,关闭后停止埋点上报)
合规声明按用户地区展示GDPR/CCPA/个保法对应条款摘要+完整链接

逻辑规则:

  1. 数据导出:异步任务队列;生成ZIP加密(密码短信发送);S3预签名URL 7天有效;文件大小上限500MB,超限拆分多包;
  2. 账号删除:30天冷静期Redis标记;冷静期内登录→拦截页[恢复]/[立即删除];立即删除需再次验证;永久删除Worker:PII匿名化+设备解绑+家庭解散+日志清除+第三方webhook通知撤销;
  3. 撤回联动:位置撤回→调用M10 DELETE /weather/location+停用气象场景;分析撤回→Analytics SDK setEnabled(false)+清除本地缓存;个性化撤回→推荐模型重置+清除画像标签;
  4. 隐私政策版本化:CMS管理;major版本变更强制弹窗;minor版本更新P04顶部NEW角标;历史版本PDF存档;
  5. 审计:所有权利行使操作写审计日志(userId/action/timestamp/IP/result);保留2年;监管调阅接口M12后台;
  6. 埋点:隐私页访问率、数据下载请求量/完成率、删除申请量/冷静期恢复率/最终删除率、撤回各项转化率、第三方撤销率、政策版本查看率。

验收要点:数据下载全流程(提交→邮件通知→下载解密→内容完整性);账号删除冷静期真机验证(30天模拟+恢复+立即删除);撤回三项联动生效(M10位置删除/分析停采/推荐重置);第三方授权列表+撤销;政策历史版本+变更高亮;合规声明按地区展示;审计日志完整。


P05 通用设置页 + P06 关于与反馈页(FR-2104 + FR-2105)

P05 通用设置页

页面目标:全局偏好集中管理,变更即时生效,分层覆盖关系透明。

页面元素:

元素规格与规则
语言下拉选择:跟随系统/中文简体/中文繁体/English/Deutsch/Français/Русский/Español;变更后全局刷新+Toast"语言已切换为XX";缺失翻译回退英文+设置项旁⚠️图标
单位制温度℃/℉、风速km/h/mph/m/s/Bft、气压hPa/inHg/mmHg;每项旁注"覆盖家庭设置,仅对您生效";变更MQTT广播
外观三选一:浅色/深色/跟随系统;即时切换无闪烁
通知偏好总开关+五类子开关(告警/场景执行/OTA/气象/营销);紧急告警标注"穿透免打扰";营销默认关;变更同步M06
无障碍字体缩放滑块(0.8x~1.5x);读屏优化开关;减弱动效开关;高对比度模式开关;变更即时生效
数据与缓存当前缓存大小+[清除缓存](二次确认);离线数据包列表+大小+[删除]
高级开发者选项(仅内测版);[导出诊断日志]→生成加密ZIP+分享;实验室功能(P1灰度特性)

逻辑规则:

  1. 设置存储:用户级设置存云端/user/settings+本地Hive缓存;家庭级设置存M02;用户级覆盖家庭级时UI明示;
  2. 即时广播:PUT /user/settings成功→MQTT user/settings/{userId}推送→APP全局SettingsProvider刷新→各页面Consumer重建;
  3. 语言切换:Flutter Localizations.delegate热重载;CMS动态文案重新拉取;缺失key fallback英文+console.warn+运营看板标记;
  4. 无障碍:MediaQuery.textScaleFactor绑定字体缩放;Semantics标签全覆盖;减弱动效禁用所有AnimationController;高对比度覆盖主题色板;
  5. 诊断日志:脱敏(去除PII/Token/坐标);AES加密;文件大小上限10MB;分享系统ShareSheet;
  6. 埋点:各项设置变更率、语言分布、单位覆盖使用率、主题分布、通知开关分布、无障碍功能使用率、缓存清理频次、诊断日志导出率。

P06 关于与反馈页

页面元素:

元素规格与规则
关于TabAPP版本号+[检查更新](M01升级流程);固件版本摘要;[开源许可]→列表页(名称+版本+许可证全文);服务协议+隐私政策外链;版权©2024 eHome
反馈Tab[联系客服]→预填诊断信息(APP版本/OS/设备型号/最近错误码)跳转M10工单;[意见反馈]表单(类型下拉/描述textarea/截图上传≤5张/联系方式可选);[给eHome评分]按钮(条件展示);FAQ列表(CMS驱动,搜索+分类)
评分引导条件近30天无失败工单 AND 使用天数>7 AND 未评过 AND 最近一次操作成功;每日最多展示1次;点击→跳转应用商店;关闭后30天内不再展示

逻辑规则:

  1. 开源许可:构建时自动生成NOTICE文件;版本号与pubspec.lock校验;缺失许可阻断CI;
  2. 反馈表单:POST /feedback;图片上传OSS预签名;提交成功Toast"感谢反馈,我们将尽快处理";重复提交60s节流;
  3. FAQ:GET /faq?lang=&category=;缓存1h;搜索本地模糊匹配+云端兜底;
  4. 埋点:检查更新点击率、开源许可查看率、客服跳转率、反馈提交率/类型分布、评分引导曝光/点击/评分结果、FAQ搜索热词/无结果率。

验收要点(P05/P06):语言切换即时刷新+缺失翻译回退+⚠️标识;单位变更MQTT广播生效;主题切换无闪烁;通知偏好同步M06;无障碍四项功能真机验证(读屏/缩放/减弱动效/高对比度);诊断日志脱敏+加密;版本号+开源许可准确;反馈表单提交+图片上传;评分引导条件精确触发;FAQ搜索+7语种。


4. 国际化基础设施(FR-2106)

4.1 7语种资源管线

环节规格
资源文件格式ARB (Application Resource Bundle) for Flutter; JSON key-value; plural/gender/select ICU syntax
语种清单zh-Hans, zh-Hant, en, de, fr, ru, es
翻译工作流开发提交英文母版ARB → Crowdin/Phrase集成自动同步 → 本地化团队翻译 → 审校 → 合入main分支 → CI校验
缺失翻译策略运行时fallback en;console.warn('MISSING_I18N_KEY', key, locale);运营看板聚合缺失key按语种排序;P05设置页⚠️标识
动态文案CMS管理(公告/活动/FAQ/模板市场);API返回{locale: content} map;缺失locale回退en+标记待翻译
RTL适配ar/fa/he预留(P2);Flutter Directionality组件包裹;镜像布局测试矩阵;图标/手势方向感知
本地化测试伪本地化(pseudo-localization) CI自动化:字符串长度+30%+特殊字符注入→UI溢出检测;每语种真机冒烟测试(关键路径截图比对)
日期/数字格式intl package;DateFormat/NumberFormat按locale;货币符号跟随地区;时区显示跟随家庭(M02)
复数/性别规则ICU MessageFormat;俄语/德语复杂复数规则全覆盖;测试用例覆盖zero/one/two/few/many/other

4.2 工程规范

  1. 禁止硬编码字符串:所有UI文案必须引用AppLocalizations.current.xxx;lint规则强制;
  2. Key命名规范:module_page_element_descriptor(如 profile_avatar_edit_title);禁止缩写;
  3. 参数化句式:避免字符串拼接;使用ICU select/plural(如 "when {device} opens" 而非 "when " + device + " opens");
  4. 上下文注释:ARB description字段提供截图+使用场景+变量说明;翻译团队可读;
  5. CI门禁:arb_lint(格式/key重复/缺失description)+ pseudo_localization_test + screenshot_comparison(每语种关键页);失败阻断合并;
  6. 运营看板:缺失翻译TOP50/语种覆盖率/伪本地化失败数/截图diff数;每周同步本地化团队。

5. 通用交互与视觉规范(UI设计输入)

  1. 双主题:浅色/深色/跟随系统三模式;所有颜色语义化(surface/onSurface/error等);深色模式对比度WCAG AA;高对比度模式额外色板。
  2. 组件清单:用户信息卡、功能列表项(图标+标题+副标题+箭头)、头像裁剪器、密码强度条、MFA二维码+备用码卡片、设备列表项(踢出按钮)、隐私政策版本列表、数据导出范围复选框、删除冷静期倒计时、撤回同意开关组、语言/单位下拉、通知分类开关、无障碍滑块、诊断日志分享Sheet、开源许可列表、反馈表单、评分引导卡片、FAQ折叠面板。
  3. 动效规范:主题切换200ms交叉淡入;语言切换全局rebuild无动画;设置开关iOS风格弹性;删除/撤回等危险操作按钮按压反馈;评分引导卡片滑入300ms;全部受"减弱动效"控制。
  4. 多语言:7语种资源文件完备;德/法/俄长文本预留1.5倍空间;RTL预留镜像布局;日期/数字/货币locale格式;复数规则全覆盖。
  5. 无障碍:所有控件Semantics label;字体缩放0.8x~1.5x响应式布局(不截断);读屏焦点顺序合理;减弱动效全局生效;高对比度模式色板;颜色不作为唯一信息载体。
  6. 响应式:平板宽屏P01/P05左导航+右内容分栏;P02/P03/P04表单最大宽度600px居中;P06关于/反馈双栏。
  7. 品牌一致性:图标系统与M02/M04统一;危险操作色(error)全局一致;成功/警告/信息色语义化;字体栈支持7语种(CJK/Latin/Cyrillic)。

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

  1. 状态管理:Riverpod;UserProfileProvider(Future+缓存);SettingsProvider(Stream+MQTT广播监听);AuthProvider(会话状态+MFA状态);PrivacyTaskProvider(异步任务状态轮询)。
  2. 国际化:flutter_localizations + intl;AppLocalizations代理热重载;LanguageNotifier切换locale+持久化;缺失key FallbackDelegate回退英文+warn;
  3. MQTT:复用M02连接层;订阅 user/settings/{userId}(设置变更)、security/alert/{userId}(异常登录告警);QoS1;断连HTTP轮询兜底。
  4. 本地缓存:Hive存储用户资料缓存(TTL 5min)、设置项(即时读取)、MFA备用码(加密存储,仅绑定时刻展示一次后删除)、诊断日志临时文件;账号注销联动清除。
  5. 安全:密码传输HTTPS+TLS1.3;TOTP密钥Keychain/Keystore加密存储;生物识别local_auth;诊断日志AES加密+脱敏正则;Sentry上报排除PII。
  6. 深链路由:ehome://profile、ehome://security、ehome://privacy、ehome://settings、ehome://about、ehome://feedback;M06推送携带深链。
  7. 性能:设置页首屏≤200ms;语言切换rebuild≤500ms;头像裁剪内存优化(compute isolate);FAQ搜索debounce 300ms;虚拟滚动长列表。
  8. 无障碍:MediaQuery.textScaleFactor绑定;Semantics全覆盖;ExcludeSemantics装饰器避免冗余;HighContrastMediaQuery监听;
  9. 埋点:ProfileAnalytics封装,事件profile_*;安全指标(MFA启用率/异常登录率/设备踢出率);合规指标(数据下载完成率/删除转化率/撤回率);国际化指标(语言分布/缺失key数/评分转化率)。

7. 云端需求(用户与合规服务)

7.1 接口清单

接口方法说明
/user/profileGET/PUT用户资料查询/修改
/user/avatarPOST头像上传(multipart)
/user/passwordPUT修改密码(旧密码验证+强度校验+踢出其他会话)
/user/oauth/bind|unbindPOST第三方账号绑定/解绑
/user/mfa/totpPOST/DELETETOTP绑定(返回密钥+备用码)/解绑
/user/mfa/smsPOST短信验证绑定/开关
/user/sessionsGET/DELETE登录设备列表/踢出指定会话
/user/settingsGET/PUT用户级设置查询/修改
/privacy/policyGET隐私政策当前版本+历史列表
/privacy/exportPOST/GET数据导出请求/状态查询
/privacy/deletePOST账号删除申请(进入冷静期)
/privacy/delete/recoverPOST冷静期内恢复账号
/privacy/consent/withdrawPOST撤回同意(分项)
/privacy/third-partyGET/DELETE第三方授权列表/撤销
/privacy/auditGET合规审计日志查询(监管调阅)
/feedbackPOST意见反馈提交
/faqGETFAQ列表(lang+category)
/i18n/missingPOST缺失翻译key上报(APP运行时收集)
(MQTT下行)user/settings设置变更广播
(MQTT下行)security/alert异常登录告警推送
(内部)合规Worker数据导出异步生成/账号删除冷静期调度/第三方撤销webhook
(内部)风控引擎登录风险评分/异常检测/MFA强制触发
(内部)i18n看板缺失翻译聚合/语种覆盖率/伪本地化结果

7.2 关键策略

  1. 安全:密码bcrypt+盐;TOTP RFC6238;会话Redis TTL+滑动续期;设备指纹FNV哈希+IP地理库;风险评分模型(IP信誉+行为序列+设备指纹);敏感操作限流(改密5次/h,导出3次/30d);
  2. 合规:数据导出ZIP加密+S3预签名7天;账号删除30天冷静期+永久删除Worker(PII匿名化+级联清理);撤回同意即时生效+联动模块API;审计日志AES加密+2年保留+监管调阅RBAC;
  3. 国际化:CMS多语言内容{locale: content}结构;缺失locale回退en+标记;翻译资源CDN分发+版本校验;RTL布局配置驱动;
  4. 性能SLA:/user/profile P99≤200ms;设置广播端到端P90≤1s;数据导出≤24h完成;账号删除Worker准时执行;i18n资源CDN命中率≥99%;
  5. 运营看板:MFA启用趋势、异常登录热力图、数据权利行使漏斗、语言分布饼图、缺失翻译TOP50、评分引导转化漏斗、反馈类型词云;异常告警(删除率突增/MFA绕过/导出失败堆积)。

8. 验收标准核对表

需求验收标准本设计落点
FR-2101资料修改闭环;头像裁剪压缩;敏感词双端校验;改密踢出;第三方绑定保障P02;/user/profile;/user/password
FR-2102TOTP全流程+备用码;设备踢出即时生效;会话TTL准确;异常登录告警P03;/user/mfa;/user/sessions;风控引擎
FR-2103数据下载完整可用;删除冷静期+恢复;撤回三项联动;第三方撤销;审计完整P04;/privacy/*;合规Worker
FR-2104语言即时切换+缺失回退;单位MQTT广播;主题无闪烁;通知同步;无障碍四项P05;/user/settings;MQTT广播
FR-2105版本号+开源许可准确;反馈表单+图片;评分引导条件精确;FAQ 7语种P06;/feedback;/faq
FR-21067语种资源管线;伪本地化CI;RTL预留;缺失翻译看板;复数规则覆盖第4章;CI门禁;i18n看板

QA测试要点(专项):

  1. 安全攻防:密码爆破锁定;TOTP重放攻击拦截;会话劫持踢出验证;异常登录注入(异地IP/新设备/高频失败)→告警到达;MFA绕过测试(直接调API)→403;
  2. 合规真机:数据下载全范围+JSON/CSV内容校验;账号删除30天冷静期模拟(时间加速)+恢复+永久删除后数据残留扫描;撤回位置→M10验证删除+场景停用;撤回分析→抓包验证SDK停采;审计日志完整性;
  3. 国际化矩阵:7语种关键路径截图比对(无溢出/截断);伪本地化字符串+30%长度UI验证;俄语/德语复数规则边界值;日期/数字/货币格式按locale;RTL布局镜像(P2预留验证);缺失key回退英文+⚠️标识+看板标记;
  4. 设置联动:语言切换全局刷新≤500ms;单位变更MQTT广播→M04/M08/M10消费验证;主题切换无闪烁;通知偏好→M06推送验证;无障碍字体缩放1.5x布局不破;减弱动效全局禁用动画;
  5. 反馈闭环:反馈表单提交+图片上传OSS;诊断日志脱敏验证(grep PII/Token);评分引导条件组合测试(满足/不满足各维度);FAQ搜索准确率;
  6. 性能压测:/user/profile P99≤200ms(100并发);设置广播端到端P90≤1s;语言切换rebuild≤500ms;数据导出大文件(500MB)生成≤24h;i18n资源CDN命中率≥99%;
  7. 兼容性:iOS 13+/Android 7.0+真机;折叠屏/平板分栏;7语种系统语言下APP启动无崩溃;辅助功能TalkBack/VoiceOver全流程;
  8. 边界异常:头像上传超大文件→压缩/拒绝;昵称超长/特殊字符→校验拦截;TOTP时钟偏移±5min容差;冷静期内多次登录→恢复弹窗稳定;网络中断设置修改→回滚+Toast;CMS动态文案缺失locale→回退en。

9. 依赖与风险

说明责任/时点
M01 账号体系登录/注册/会话管理前置;MFA集成登录流程M1 已交付;M2 MFA联调
M02 家庭设置单位/时区源;用户级覆盖分层M1 已交付
M06 通知渠道异常登录告警/数据导出完成/删除确认/撤回通知M2 并行
M10 气象隐私位置撤回联动M2 联调
合规法律评审GDPR/CCPA/个保法条款落地;隐私政策/撤回文案法务签字法务 M1 评审完成
本地化团队7语种翻译资源交付节奏;术语表统一;审校SLA本地化 M2 前首批交付
翻译管理平台Crowdin/Phrase集成;CI同步;缺失key看板DevOps M1 搭建
TOTP兼容性Google Authenticator/Authy/Microsoft Authenticator测试矩阵QA M2 验证
数据导出成本大文件生成存储+CDN流量;配额与费用监控运维 M1 容量规划
账号删除级联复杂度家庭解散/设备解绑/第三方撤销事务一致性架构 M1 评审;M2 联调
语言切换性能7语种资源文件大小;rebuild耗时;内存占用性能 M2 优化
RTL适配(P2)ar/fa/he布局镜像;图标方向;手势反转UI M3 预留
评分引导合规Apple/Google商店政策;诱导评分风险产品 M1 评审
开源许可合规许可证兼容性;NOTICE文件准确性;CI阻断法务+DevOps M1

以上为 M12 个人中心与国际化(FR-21012106)完整详细需求设计:个人资料与安全四层防护、MFA与设备管理、隐私权利自助行使与合规审计、全局设置即时广播、关于反馈闭环、7语种资源管线与国际化工程规范均已落点;与 M01/M02/M06/M10 文档格式及衔接协议一致(MQTT广播复用、合规联动、通知通道共享),可直接交付 UI 与开发。至此 eHome APP 端核心模块(M01M12)详细需求设计全部完成,可作为整体交付基线。如需补充运营后台(M12后台侧)、语音生态(M11)或任何模块深化,可随时提出。