Skip to main content

eHome App 端详细需求设计文档

M02 家庭与设备管理(对应需求:FR-111~116)

项目内容
所属项目eHome 智能家居硬件配套 APP + 云端后台定制开发项目
设计依据《eHome智能家居项目需求文档(PRD V1.1)》5.2节、第8章、NFR-01/02/03/06;《eHome项目页面功能工时费用明细表》M02模块
范围说明本模块不包含设备配网/添加向导流程(蓝牙扫描、Wi-Fi配网、AP配网、配网结果与诊断),该部分属 M03 设备配网(FR-121~125)另行设计;本模块仅定义"添加设备"入口的跳转关系
优先级P0(MVP必须;成员权限细分为P1项,见页面标注)
里程碑M1 MVP开发(依赖 M01 账号体系交付;与 M03 配网、M04 首页联调)
文档用途直接交付 UI 设计、Flutter 开发(APP端)、云端开发、测试QA

1. 模块概述与设计原则

1.1 模块范围

本模块覆盖 FR-111~116 的全部页面/功能项:

序号页面/功能项需求编号类型优先级
1家庭管理页(创建/重命名/删除/切换,多家庭上限10个)FR-111APP+云端P0
2创建/编辑家庭页(含房间管理:增删改/排序/预设房间)FR-111APP+云端P0
3设备列表与分组展示(按家庭/房间分组、排序、空态)FR-112APP+云端P0
4设备信息与设置页(重命名/更换房间/更换图标/网络信息)FR-113APP+云端P0
5家庭成员管理(邀请码/链接邀请、移除、转让、角色权限)FR-114APP+云端P0(权限细分P1)
6设备移除与解绑流程(身份验证、恢复出厂、离线待清除)FR-115APP+云端P0
7设备离线状态处理与固件版本信息展示FR-116APP+云端P0
8家庭与设备管理流程UI设计第8章UIP0

边界说明:首页 [+添加设备] 按钮为 M02 定义的入口,点击后跳转 M03 设备添加向导(型号选择、蓝牙扫描、Wi-Fi配网、配网结果页均在 M03 范围内);M03 配网成功后回调 M02 完成设备归入家庭/房间与列表刷新。

1.2 设计原则

  • 简约扁平化:对标 Govee Home / 米家 的"家庭-房间-设备"三级信息架构;主色调沿用品牌蓝(M01 同源占位色,待 Q9 品牌规范替换)。
  • 家庭为中心:所有设备必须归属某个家庭;新用户首次登录由云端自动创建"我的家"默认家庭,零感知。
  • 权限最小化:成员默认可控制设备、不可管理成员/删除家庭;管理员/成员两级角色(细粒度房间权限为 P1,本期不实现但数据结构预留)。
  • 状态实时性(NFR-02):设备在线/离线状态基于 MQTT 上下线事件推送,APP 前台页面同步延迟 ≤3s。
  • 双主题 + 7语种:全页面适配深色/浅色(FR-211);文案 100% 走多语言资源文件(简中/繁中/英/德/法/西/日),禁止硬编码。
  • 服务端强校验:所有写操作的角色/权限/上限校验以云端为准,不信任客户端。

1.3 用户与角色

  • 主账号(管理员):创建家庭者或被转让者。拥有家庭内全部权限:重命名/删除家庭、房间管理、移除任意设备、邀请/移除成员、转让管理员。
  • 普通成员:被邀请加入家庭。可查看设备状态、控制设备、修改设备名称/房间/图标;不可移除他人绑定的设备、不可管理成员、不可编辑/删除家庭。
  • 设备:eHome 系列硬件,SN 全局唯一,同一时刻只归属一个家庭的一个房间;设备的绑定/解绑动作分别由 M03(绑定)与本模块(解绑)驱动。

2. 页面结构与流程图

2.1 页面导航结构

底部Tab[首页](M04承载,本模块定义数据与分组规则)
├─ 顶部家庭切换器 → Q01 家庭管理页
│ ├─ [+创建家庭] → Q02 创建/编辑家庭页(创建模式)
│ ├─ 点击家庭卡片 → 切换家庭(关闭本页回首页刷新)
│ ├─ 管理员编辑入口 → Q02(编辑模式,含房间管理)
│ └─ [成员管理] → Q06 家庭成员管理页
│ ├─ [+邀请成员] → Q07 邀请页(邀请码/分享链接)
│ ├─ 点击成员 → Q08 成员详情/权限/移除页
│ └─ [转让管理员](仅管理员可见)
└─ [+添加设备] → 跳转 M03 设备添加向导(不在本模块范围)

设备列表项长按 或 设备详情页[设置](M03设备详情页入口)
├─ Q04 设备信息与设置页(重命名/房间/图标/网络信息/固件版本)
│ └─ [移除设备] → Q05 移除确认页(身份验证)→ 解绑+恢复出厂 → 回首页刷新
└─ 离线设备 → 列表置灰 + 点击提示离线原因与排查引导(FR-116)

2.2 核心状态机一:设备绑定关系(本模块视角)

[已绑定·在线]

├──(MQTT离线事件/心跳超时)──► [已绑定·离线]
│ │
│ ├──(恢复上线)──► [已绑定·在线]
│ └──(离线>5分钟)──► 展示离线排查卡片(FR-116)
│ └─[重新配网] → 跳转M03(保留绑定关系)

├──(成员发起移除+身份验证通过)──► [解绑中]
│ │
│ ├──(设备在线:云端解绑+下发恢复出厂指令+设备ACK)──► [未绑定(出厂态)]
│ └──(设备离线:云端解绑+标记"待清除"→设备下次上线自动执行并回报)──► [未绑定(出厂态)]

├──(管理员删除家庭)──► 家庭内全部设备进入[解绑中](同上处理)

└──(OTA升级中·M09联动)──► [已绑定·升级锁定]

└──(升级完成/失败)──► [已绑定·在线]
※ 升级锁定期间禁止移除设备(FR-116)

2.3 核心状态机二:家庭与成员

[家庭存在]

├──(管理员生成邀请)──► [邀请待接受(24h有效)]
│ │
│ ├──(被邀请方接受)──► [成员已加入(普通成员)]
│ │ │
│ │ ├──(被管理员移除)──► [已退出]
│ │ ├──(主动退出家庭)──► [已退出]
│ │ └──(被转让)──► [管理员]
│ │
│ └──(过期24h/管理员作废)──► [邀请失效]

├──(管理员删除家庭)──► [家庭已删除](设备全解绑、成员全移出、推送通知)

└──(仅剩1名管理员且其注销账号·M01)──► 需先转让管理员或删除家庭,否则注销被阻断


3. 页面级详细需求

Q01 家庭管理页(FR-111)

页面目标:多家庭集中管理,支持创建、重命名、删除、切换;家庭数量上限 10 个。

页面元素:

元素规格与规则
顶部导航返回箭头 + 标题"家庭管理"(多语言)
家庭卡片列表每卡片显示:家庭图标(预设)、家庭名称、房间数、设备数、成员头像叠排(最多4个+N数字)、当前家庭蓝色对勾标识
卡片交互点击卡片=切换到该家庭(关闭本页回首页并刷新列表);管理员长按/右滑卡片 → 弹出【编辑】【删除】菜单;普通成员无编辑删除入口
[+创建家庭]底部品牌蓝主按钮;达到10个上限时按钮置灰,点击 Toast"家庭数量已达上限"

逻辑规则:

  1. 首次登录用户由云端自动创建默认家庭"我的家"(名称走多语言资源),本页至少显示 1 个家庭,无空态。
  2. 切换家庭:本地持久化当前家庭ID并同步云端(多端一致);首页设备列表、房间分组随之刷新;切换动作 ≤1s 完成(先读本地缓存展示,异步拉取云端最新数据)。
  3. 删除家庭:点击后进入红色警示二次确认弹窗,完整列出后果——①家庭内全部设备将解绑并恢复出厂设置 ②全部成员将被移出 ③房间与设备历史数据将删除 ④操作不可撤销;确认后要求身份验证(短信/邮箱验证码或密码,复用 M01 验证服务);验证通过 → 云端级联删除 → Toast"家庭已删除" → 自动切换到剩余家庭中最近使用的一个;若为最后一个家庭,删除后云端自动重建"我的家"。
  4. 家庭重命名走 Q02 编辑模式;名称 1~20 字符,同一用户名下家庭不允许重名,敏感词过滤(复用 M10 内容安全服务)。
  5. 管理员转让入口位于 Q06 成员管理页,不在本页展示。

异常与边界(QA重点):

  • 删除家庭时家庭内有设备正在 OTA → 阻断并提示"有设备正在升级,请稍后再试"(联动 FR-116 升级锁定);
  • 删除家庭与 M01 账号注销并发 → 以先提交者为准,后者收到状态冲突提示;
  • 无网络时:列表展示本地缓存,切换可用,创建/编辑/删除按钮禁用并提示网络异常;
  • 多端同时操作(A端删除家庭,B端正在该家庭内操作)→ B端收到 MQTT/推送事件,弹窗"当前家庭已被删除"并自动切换。

验收要点:创建/重命名/删除/切换四操作闭环;10 个上限前后端双重校验;管理员与成员权限区分;删除家庭后设备全解绑且成员全移出。


Q02 创建/编辑家庭页(FR-111,含房间管理)

页面目标:家庭基础信息维护 + 房间增删改与排序。

页面元素:

元素规格与规则
家庭名称输入框创建模式默认"我的家2/我的家3…"自动递增;编辑模式带入当前名称;1~20字符,实时字数提示
家庭图标选择8 个预设图标单选(房屋/公寓/别墅/办公室等);一期不做自定义图片上传(P1预留)
房间管理区(仅编辑模式展示)房间列表(名称+设备数);【添加房间】按钮;单家庭房间上限 20 个,超限按钮置灰+Toast
添加/编辑房间弹窗预设房间名快捷标签:客厅/卧室/主卧/次卧/厨房/书房/餐厅/卫生间/阳台/走廊/其他(全部多语言);点选自动填入,也可自定义输入 1~12 字符;家庭内房间不重名
房间排序列表长按拖拽排序,松手即保存,云端持久化
底部按钮创建模式:【创建家庭】;编辑模式:【保存】+【删除家庭】(红色文字按钮,管理员可见,触发 Q01 删除流程)

逻辑规则:

  1. 创建成功后:自动切换至新家庭,返回首页,Toast"创建成功"。
  2. 删除房间:二次确认弹窗说明"房间内设备将移入【未分配】,设备不会被删除";确认后房间删除、设备 roomId 置空。
  3. 房间重命名:同创建校验(1~12字符、不重名、敏感词过滤)。
  4. 编辑保存失败(网络/冲突)→ 保留用户输入,Toast 错误信息并提供重试;名称被其他端修改 → 提示"家庭信息已更新"并刷新数据后要求重新编辑。
  5. 普通成员进入编辑模式:仅可查看,所有输入框禁用(页面可整页只读展示,隐藏删除按钮)。

验收要点:房间上限20/名称长度/重名校验完整;删除房间设备归入"未分配";排序多端同步一致;成员只读。


Q03 设备列表与分组展示(FR-112,页面由 M04 首页承载,本节定义数据与交互规则)

页面目标:以"当前家庭"为维度,按房间分组展示全部设备,提供快捷控制与状态呈现。

展示规则:

  1. 分组结构:按房间分组展示(组头=房间名+设备数);无房间的设备归入"未分配"组,固定在列表末尾;"未分配"组头右侧提供【批量分配房间】快捷入口(多选设备 → 选择目标房间)。
  2. 设备卡片元素:设备图标(品类默认图标+用户自选图标)、设备名称(默认"型号名+序号",1~20字符可改)、在线状态点(绿色=在线/灰色=离线/橙色=升级中)、1 个核心快捷控件(灯类=电源开关;插座类=电源开关;传感器类=只读状态文本,无控件)。
  3. 离线设备:卡片整体置灰(深色主题下保证 WCAG AA 对比度);点击快捷控件 → Toast"设备离线,请检查设备电源与网络";点击卡片本体 → 进入设备详情页并展示离线排查引导(FR-116,见 Q04)。
  4. 设备排序:房间内长按卡片拖拽排序,松手保存,云端持久化,多端同步。
  5. 快捷控件操作:点击后立即乐观更新 UI(开关态先变),云端确认失败或超时 5s → 回滚状态并 Toast"操作失败,请重试";设备实际状态回报与乐观状态不一致时以设备回报为准刷新。
  6. 空态(家庭内无设备):居中插画 + 文案"还没有设备" + 主按钮【添加设备】→ 跳转 M03 设备添加向导。
  7. 列表顶部汇总条:当前家庭名(点击 → Q01)、房间数、设备总数、在线/离线统计(如"8台在线 · 2台离线")。

数据同步规则:

  1. 设备状态经 MQTT 推送实时刷新,前台可见页面延迟 ≤3s(NFR-02);
  2. APP 冷启动/切换家庭时全量拉取一次设备影子(device shadow)对齐状态,避免离线期间状态漂移;
  3. 下拉刷新:手动全量刷新,转圈动效 ≤2s;
  4. 其他成员增删改设备(改名/换房间/移除)→ MQTT 家庭 topic 事件推送,本端列表实时刷新,无需手动操作。

验收要点:分组/排序/未分配批量分配正确;离线置灰与拦截提示;乐观更新回滚机制;多端操作实时同步 ≤3s;空态入口跳转 M03 正常。


Q04 设备信息与设置页(FR-113 / FR-116)

入口:设备详情页右上角齿轮图标(M03 页面提供入口)或设备列表长按菜单【设备设置】。

页面元素:

分组元素规格与规则
基础设置设备名称点击弹窗修改;1~20字符;同一家庭内不允许重名;敏感词过滤;保存后列表/详情/多端实时刷新
基础设置所属房间下拉选择当前家庭房间列表+【未分配】;选择即时生效并同步云端;在 Q02 新增房间后本列表需可选到新房间
基础设置设备图标8~12 个品类预设图标九宫格单选(如灯带提供多色/形态变体);选择即保存
状态信息在线状态在线(绿点+"在线")/离线(灰点+"离线 · 最近在线时间 yyyy-MM-dd HH:mm");离线 >5 分钟时下方展开离线排查卡片(见下方规则)
状态信息网络信息设备所连 Wi-Fi SSID、信号强度(RSSI 三档:强/中/弱,图标+文字)、设备 IP(仅管理员可见,成员显示"—")
固件信息固件版本当前版本号(如 V1.2.3);检测到新版本显示红点+【立即升级】按钮 → 跳转 M09 OTA 流程;升级进行中本页显示"升级中"进度并锁定【移除设备】按钮(置灰+点击提示"升级中不可移除设备")
设备信息型号 / SN / MAC型号名称、SN 脱敏显示(前4后4,中间*号,长按复制完整值)、MAC 地址(长按复制);全部只读
危险操作【移除设备】红色警示按钮,仅管理员或该设备绑定者可见 → Q05 移除确认流程

离线排查引导卡片(FR-116):

  • 触发条件:设备离线持续 >5 分钟;
  • 卡片内容(多语言):①请检查设备是否断电 ②请检查路由器是否正常工作、Wi-Fi 名称/密码是否变更 ③请将设备靠近路由器后重试 ④如仍无法恢复,可尝试重新配网;
  • 卡片操作:【重新配网】→ 跳转 M03 配网流程(携带设备信息,保留绑定关系重配,成功后状态恢复在线,不产生重复绑定);【联系客服】→ 跳转 M10 工单页(自动携带设备型号/SN/离线时长上下文);
  • 设备恢复上线后卡片自动消失,状态点转绿并 Toast"设备已恢复在线"。

异常与边界:改名与另一端并发修改 → 后提交者收到冲突提示并刷新;房间被另一端删除 → 下拉数据实时校验,提示"房间已变更"并刷新选项;无网络时全页只读,写操作禁用。

验收要点:重命名/换房间/换图标三项即时生效且多端同步;离线排查卡片按时触发、重新配网保留绑定关系;升级中移除锁定;SN 脱敏与复制。


Q05 设备移除确认页/流程(FR-115)

页面形态:全屏红色警示确认弹窗(或独立确认页),不跳转多级页面,保持操作路径最短。

流程步骤:

  1. 后果告知(多语言完整列出):①设备将从当前家庭移除并恢复出厂设置 ②设备的历史数据(能耗记录/传感器历史/场景关联)将被删除 ③设备关联的自动化场景将失效并自动移除该设备节点 ④如需再次使用,须重新配网(跳转 M03)⑤操作不可撤销;
  2. 勾选确认:复选框"我已了解上述后果",未勾选时【确认移除】按钮置灰;
  3. 身份验证:弹窗内验证方式任选其一——短信验证码/邮箱验证码/登录密码(复用 M01 验证服务);第三方登录且无密码、无绑定手机/邮箱的受限账号 → 阻断并引导先完成 M01-P09 账号补充绑定;
  4. 执行解绑:云端删除绑定关系 → 若设备在线,经 MQTT 下发恢复出厂指令并等待设备 ACK(超时 10s 视为待清除)→ 若设备离线,写入"待清除"队列,设备下次上线自动执行并回报;
  5. 完成反馈:Toast"设备已移除" → 自动返回首页并刷新设备列表(该设备消失,房间设备数-1);若来源为设备详情页,则返回上一页。

权限规则:

  • 管理员:可移除家庭内任意设备;
  • 普通成员:仅可移除自己绑定(配网)的设备(P0 基线;P1 可由管理员在成员权限中配置放开);
  • 无权限用户不展示【移除设备】按钮(服务端同步校验,越权请求返回 403)。

"待清除"机制细则(云端):

  • 解绑后设备 SN 立即释放,可被其他账号重新绑定(重新绑定走 M03);
  • 待清除队列中的设备上线后:先执行恢复出厂 → 回报执行结果 → 云端标记清除完成;
  • 超过 72 小时未执行(设备一直离线)→ 后台告警工单,人工跟进;
  • 若设备在被清除前已被新账号绑定 → 旧"待清除"指令自动作废(以云端绑定版本号防指令错序),避免误清新账号设备。

异常与边界(QA重点):

  • OTA 升级中移除 → Q04 已锁定入口,服务端二次拦截返回"升级中不可移除";
  • 身份验证连续失败 5 次 → 当日禁止移除操作(复用 M01 锁定策略);
  • 移除过程中 APP 被杀 → 云端操作幂等(以设备SN+绑定版本号),重新打开时状态已一致;
  • 并发移除(两个管理员同时移除同一设备)→ 以先到者为准,后到者提示"设备已被移除"并刷新。

验收要点:五步流程完整;勾选+身份验证双闸门;在线 ACK / 离线待清除两条链路均可验证;SN 解绑后立即可重绑;场景联动数据同步清理。


Q06 家庭成员管理页(FR-114)

入口:Q01 家庭卡片【成员管理】按钮。

页面元素:

元素规格与规则
顶部标题"家庭成员" + 当前人数/上限(如 5/20)
成员列表每项:头像(第三方头像或默认)、昵称、角色标签(管理员=品牌蓝"管理员"/普通成员=灰色"成员")、加入时间;管理员卡片带皇冠图标并固定置顶
成员项交互管理员视角:点击成员 → Q08;左滑成员项 → 【移除成员】红色按钮;长按 → 快捷菜单【设为管理员/转让管理员】【移除】;普通成员视角:仅可查看列表与自己项,无操作入口
[+邀请成员]底部主按钮,仅管理员可见;人数达 20 上限时置灰 + Toast"成员数量已达上限"

逻辑规则:

  1. 成员上限 20 人(含管理员);
  2. 成员列表实时性:他人加入/退出/被移除,经家庭 topic MQTT 事件推送刷新;
  3. 管理员本人项不可对自己执行移除操作;
  4. 家庭仅剩管理员 1 人时,管理员不可退出家庭(需先转让或删除家庭,见 Q08)。

Q07 邀请成员页(FR-114)

页面目标:管理员生成邀请凭证,支持邀请码与分享链接两种方式。

页面元素与规则:

  1. 邀请码卡片:6 位数字/字母组合(去除易混淆字符 0/O/1/I);有效期 24 小时,卡片显示剩余有效时间倒计时;【复制邀请码】按钮;【刷新邀请码】→ 旧码立即作废并生成新码(二次确认"刷新后原邀请码将失效");
  2. 分享链接:【分享给好友】按钮 → 调起系统分享面板(微信/WhatsApp/系统分享等,按渠道包能力),链接携带一次性邀请 token;被邀请人点击链接:已安装 APP → 唤起 APP 并自动填充邀请码进入接受流程;未安装 → 落地下载引导页(H5),安装后首次启动自动读取剪贴板/延迟深链回填邀请码;
  3. 接受邀请流程(被邀请方视角):
    • 已登录用户:首页弹出邀请确认弹窗"【昵称】邀请你加入家庭【家庭名】",展示家庭设备数/成员数摘要 →【接受】/【拒绝】;接受成功后当前家庭自动切换为新家庭并刷新首页,原家庭仍可切换;
    • 未注册用户:点击链接 → 引导至 M01 注册流程(FR-101/102 任一方式)→ 注册登录成功后自动回填邀请码并弹出接受弹窗,无需手动输入;
    • 用户已在该家庭 → 弹窗提示"你已是该家庭成员";邀请过期/被作废 → 提示"邀请已失效,请联系邀请人重新发起";目标家庭人数已满 → 提示"该家庭成员已满";
  4. 邀请记录:页面底部展示当前有效邀请(码/时间/是否被使用),管理员可主动【撤销邀请】。

安全规则(云端):

  • 邀请码错误尝试 5 次 → 锁定该用户输入邀请码功能 15 分钟(防枚举);
  • 邀请 token 一次性使用,接受/过期/撤销后即失效;
  • 接受邀请时服务端二次校验:有效期、人数上限、家庭是否存在、用户是否被冻结(M01 后台冻结联动)。

验收要点:双方式邀请闭环;未注册用户经链接先注册再自动回填;24h 过期与刷新作废;5 次错误锁定;接受后自动切换家庭。


Q08 成员详情/权限/移除页(FR-114)

入口:Q06 点击成员项。

页面元素与规则:

  1. 成员信息:头像、昵称、账号标识(脱敏手机号/邮箱,仅管理员可见)、角色、加入时间;
  2. 权限矩阵展示(只读说明,P0 基线;细粒度配置为 P1):列出该成员可执行/不可执行的操作(控制设备、修改设备信息、添加设备、移除自己绑定的设备、邀请成员、移除成员、编辑家庭、删除家庭),✔/✘ 图标呈现,让管理员与成员对权限有明确预期;
  3. 管理员操作区(仅管理员查看他人时展示):
    • 【设为管理员】:当前成员为普通成员时展示;二次确认弹窗"设为管理员后,该成员将拥有家庭全部管理权限";确认后角色即时变更,双方收到通知;管理员可多人(上限 5 个管理员,防权限泛滥);
    • 【转让家庭所有权】:将创建者身份与最高权限移交(原创建者降级为管理员);红色警示 + 身份验证(短信/邮箱/密码)+ 二次确认;转让不可撤销;
    • 【移除成员】:红色按钮;二次确认弹窗("移除后该成员将立即失去对本家庭所有设备的访问权限");确认后立即生效:被移除方所有端的家庭列表刷新、当前若正停留在该家庭页面则弹窗"你已被移出家庭"并自动切换到其其他家庭(无其他家庭则进入无家庭空态);被移除方收到推送通知;
  4. 成员本人操作区(成员查看自己时展示):
    • 【退出家庭】:二次确认(说明退出后失去设备访问权限、需重新受邀才能加入);
    • 约束:若本人是家庭唯一管理员 → 按钮置灰,点击提示"请先转让管理员后再退出,或删除家庭";
  5. 通知:加入/移除/转让/退出均触发推送通知给相关成员(复用推送服务,国内包厂商通道/海外 FCM+APNs)。

异常与边界(QA重点):

  • 移除与退出并发(管理员移除的同时成员主动退出)→ 幂等处理,结果一致;
  • 转让过程中目标成员账号被冻结 → 阻断并提示;
  • 被移除成员正控制设备中 → 操作立即失效,返回权限错误;
  • 成员在 M01 注销账号 → 自动视为退出全部家庭,管理员端列表同步刷新。

验收要点:邀请/接受/移除/退出/设管理员/转让六条链路闭环;唯一管理员不可退出;被移除方实时失效;权限矩阵展示与实际服务端校验一致。


FR-116 设备离线状态处理与固件版本展示(跨页面规则汇总)

场景规则
离线判定设备 MQTT 断连事件即时推送;无事件时以云端心跳超时(90s 无心跳)判定离线;状态变更 → 家庭 topic 广播 → 各端 ≤3s 刷新(NFR-02)
列表呈现离线设备卡片置灰、状态点灰色;汇总条统计在线/离线数量
控制拦截离线设备快捷控件与详情页控制操作均拦截,Toast"设备离线,请检查设备电源与网络"
排查引导离线 >5 分钟,Q04 展示排查卡片(断电/路由器/靠近重试/重新配网/联系客服),详见 Q04
重新配网入口跳转 M03,携带原绑定上下文,成功后原绑定关系与名称/房间/图标设置保留
固件版本Q04 展示当前版本号;有新版本红点+【立即升级】→ M09;版本检测由云端下发(联动 M09 与后台 FR-403)
升级锁定OTA 进行中:列表卡片显示"升级中"橙色标识,禁止移除设备(Q04/Q05 双重拦截)、禁止断电提示文案展示
离线设备移除走"待清除"队列机制,详见 Q05

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

  1. 双主题:浅色/深色两套设计稿;离线置灰、状态点颜色在深色主题下需满足 WCAG AA 对比度;颜色 token 化统一管理(与 M01 同套 design token)。
  2. 组件清单:家庭卡片、房间分组头(含设备数徽标)、设备卡片三态(在线/离线/升级中)、成员列表项(含角色标签/皇冠标识)、邀请码卡片(含倒计时/复制/刷新)、权限矩阵只读表格、红色警示二次确认弹窗、身份验证弹窗(验证码/密码复用 M01 组件)、离线排查卡片、空态插画(无设备/无家庭权限)。
  3. 表单规则:名称类输入(家庭/房间/设备)实时字数统计与就近红色错误提示(重名/超长/敏感词);提交按钮 loading 防重复点击。
  4. 列表交互:左滑操作(移除成员)、长按拖拽排序(房间/设备)、长按快捷菜单(设备/成员),操作均需与点击热区冲突测试。
  5. 动效:卡片状态切换渐变 300ms;拖拽排序跟手+落位弹性;邀请码倒计时每秒刷新;移除成功列表项淡出。
  6. 多语言:房间预设名、权限矩阵文案、警示弹窗后果清单全部资源文件;德/法预留 1.4 倍文本空间并提供最长文案示例;本期不涉及 RTL。
  7. 无障碍:状态不只靠颜色区分(离线附加文字/图标);警示弹窗焦点顺序正确;拖拽排序提供替代方案(编辑模式上移/下移按钮)。

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

  1. MQTT 长连接(与 M03/M04 共用连接管理层):订阅家庭 topic(成员变更/设备增删改/设备上下线事件);前后台切换自动重连;心跳保活;事件驱动 UI 刷新(状态管理 BLoC/Riverpod),前台状态同步 ≤3s。
  2. 设备影子对齐:冷启动、切换家庭、下拉刷新时全量拉取设备影子;本地维护期望态与上报态,乐观更新失败自动回滚。
  3. 本地缓存:当前家庭ID、家庭/房间/设备列表快照加密存储(复用 M01 Keychain/Keystore 封装);离线可浏览缓存数据、不可执行写操作。
  4. 页面跳转协议:与 M03 约定配网入口路由与参数(来源页、目标家庭ID、重配网时的设备上下文);配网成功回调事件统一走全局事件总线刷新列表。
  5. 身份验证组件复用:移除设备/删除家庭/转让管理员的身份验证弹窗复用 M01 验证码与密码校验组件,不重复实现。
  6. 兼容性:iOS 13+ / Android 7.0+(NFR-06);全链路 TLS,禁止明文 HTTP(NFR-03);剪贴板读取(邀请码回填)需符合各平台隐私规范(iOS 粘贴提示)。
  7. 埋点与监控:家庭创建/切换/删除、成员邀请接受率、设备移除、离线排查卡片点击等行为埋点;页面异常与接口错误上报 Sentry(不携带 PII 明文)。

6. 云端需求(家庭与设备管理服务)

6.1 接口清单

接口方法说明
/familiesGET家庭列表(含房间数/设备数/成员摘要/角色)
/familiesPOST创建家庭(名称+图标;上限10校验、重名校验、敏感词校验)
/families/{id}PUT编辑家庭(重命名/换图标;仅管理员)
/families/{id}DELETE删除家庭(身份验证凭证;级联:全部设备解绑+恢复出厂/待清除、成员移出、房间与历史数据删除、推送通知)
/families/{id}/switchPOST切换当前家庭(服务端记录,多端同步)
/families/{id}/roomsGET房间列表(含排序、设备数)
/families/{id}/roomsPOST创建房间(预设/自定义名;上限20、重名校验)
/rooms/{id}PUT重命名房间/更新排序(批量排序传有序ID数组)
/rooms/{id}DELETE删除房间(设备 roomId 置空归入未分配)
/families/{id}/devicesGET设备列表(含在线状态、房间、图标、固件版本、绑定者、排序)
/families/{id}/devices/batch-roomPOST批量分配设备到房间(未分配组快捷操作)
/devices/{id}PUT修改设备(名称/房间/图标/排序;权限校验)
/devices/{id}DELETE移除设备(身份验证凭证;在线→下发恢复出厂并等待ACK,离线→写入待清除队列;联动删除场景节点与历史数据)
/devices/{id}/statusGET设备影子(在线状态、最近在线时间、RSSI、SSID、IP、固件版本、待清除标记)
/families/{id}/membersGET成员列表(角色、加入时间、脱敏账号标识)
/families/{id}/invitesPOST生成邀请码/链接(24h有效;人数上限20校验;返回码/token/过期时间)
/families/{id}/invitesDELETE撤销/刷新邀请(旧码作废)
/invites/acceptPOST接受邀请(校验有效期/一次性/人数上限/家庭存在/用户未冻结;错误5次锁定15分钟)
/families/{id}/members/{uid}DELETE移除成员(仅管理员;推送通知;实时踢出在线会话对该家庭的访问)
/families/{id}/leavePOST退出家庭(唯一管理员阻断校验)
/families/{id}/adminsPOST设为管理员(管理员上限5校验)
/families/{id}/transferPOST转让家庭所有权(身份验证;原创建者降级为管理员;不可撤销)

6.2 关键策略

  1. 权限服务端强校验:所有写接口校验请求者在目标家庭的角色;管理员专属操作(删除家庭/移除成员/转让/编辑家庭)额外要求身份验证凭证(复用 M01 验证服务);越权返回 403 并记录风控日志。
  2. 上限与唯一性:家庭≤10/用户、房间≤20/家庭、成员≤20/家庭、管理员≤5/家庭、设备名称与房间名称家庭内唯一(数据库层+服务层双校验)。
  3. 设备影子(Device Shadow):每台设备云端维护期望态/上报态;MQTT 上下线事件驱动状态推送;心跳超时 90s 判定离线;家庭 topic 广播成员/设备变更事件(NFR-02)。
  4. 恢复出厂与待清除队列:解绑指令携带绑定版本号防错序;离线设备入队,上线自动执行并 ACK;72h 未执行触发后台告警工单;设备被新账号重绑后旧待清除指令自动作废。
  5. 邀请安全:6 位防混淆码 + 一次性 token;错误尝试 5 次锁定 15 分钟;接受时二次全量校验;撤销/刷新即时失效。
  6. 幂等与并发:移除设备/成员、退出家庭、删除家庭均以版本号/唯一键实现幂等;并发冲突返回明确错误码由客户端提示刷新。
  7. 数据联动:设备移除 → 关联自动化场景(M06)自动摘除该设备节点并通知场景创建者;历史时序数据即时删除(与 M01 注销数据策略一致);操作日志留存(不含 PII)。
  8. 默认家庭:新用户注册成功自动创建"我的家";用户删除全部家庭后自动重建,保证家庭列表永不为空。

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

需求PRD验收标准本设计落点
FR-111多家庭创建/切换/重命名/删除;家庭上限10;默认家庭自动创建;房间管理(上限20、预设+自定义、排序、删除归入未分配)Q01/Q02;上限前后端双校验;首登自动建"我的家";房间拖拽排序云端持久化
FR-112设备按家庭/房间分组展示;未分配分组与批量分配;排序持久化;空态添加入口;多端实时同步Q03 展示规则;汇总条统计;空态跳转 M03;MQTT 事件驱动刷新
FR-113设备重命名/更换房间/更换图标即时生效且多端同步;名称唯一性校验Q04 基础设置三项;PUT /devices 接口;重名/敏感词校验
FR-114邀请码+分享链接双方式邀请;24h有效期与撤销;成员上限20;管理员/成员两级权限;设管理员(≤5)与转让所有权;移除/退出闭环且实时失效Q06/Q07/Q08;权限矩阵与服务端强校验;唯一管理员不可退出;被移除方即时踢出
FR-115移除设备需勾选确认+身份验证;在线下发恢复出厂并ACK;离线待清除72h告警;解绑后SN立即可重绑;场景联动数据同步清理Q05 五步流程;待清除队列+绑定版本号防错序;DELETE /devices 联动
FR-116离线状态≤3s同步;离线>5min排查引导;重新配网保留绑定关系;固件版本展示与M09联动;OTA中锁定移除跨页面规则汇总表;设备影子+心跳判定;升级锁定双重拦截

QA测试要点(专项):

  1. 权限矩阵全量遍历:管理员/普通成员/受限账号(M01-P09未补绑)三类身份 × 全部写操作;
  2. 上限边界:10家庭/20房间/20成员/5管理员/名称长度与重名,逐项前后端双端验证;
  3. 并发与幂等:双管理员同时移除同一设备/成员、A删家庭B正在操作、邀请接受与撤销并发、移除与退出并发;
  4. 实时性:MQTT 事件驱动的多端同步 ≤3s 计时验证;断网重连后影子对齐一致性;
  5. 待清除链路:离线移除 → 设备上线自动恢复出厂 → 72h 未执行告警 → 重绑后旧指令作废;
  6. 升级锁定:OTA 中移除设备入口置灰 + 服务端 403 双拦截;升级中删除家庭阻断;
  7. 邀请链路:已登录/未注册/已在家庭/过期/作废/人数满/冻结账号七种接受分支;链接唤端与剪贴板回填(iOS 粘贴提示合规);
  8. 展示走查:双主题 × 7语种全页面;离线置灰对比度;拖拽排序与左滑/长按手势冲突;
  9. 数据联动:移除设备后场景节点摘除与通知、历史数据删除、成员注销联动退出家庭。

8. 依赖与风险

说明责任/时点
M01 账号体系身份验证凭证(验证码/密码)、受限账号(未补绑)拦截、账号注销与家庭管理员约束联动,为本模块前置依赖M1 内先行交付
M03 设备配网[+添加设备]入口跳转、重新配网入口、配网成功回调刷新列表;路由参数与回调事件协议需双方对齐M1 并行开发,联调窗口对齐
M04 首页设备列表/分组展示由首页承载,本模块提供数据规则与组件规范M1 联调
M09 OTA固件版本检测下发、升级入口跳转、升级中锁定状态同步M2 交付,M1 预留状态字段
M10 推送与工单邀请/移除/转让通知推送;离线排查"联系客服"工单入口(携带设备上下文)M1 推送通道就绪
后台管理系统用户冻结状态(阻断邀请/转让)、内容安全敏感词服务、设备型号库与图标素材下发M2 后台模块,M1 提供接口桩
多端同步性能MQTT 家庭 topic 事件量在 20 成员/多设备家庭的推送风暴需压测云端 M1 末专项压测
待清除队列可靠性依赖固件对恢复出厂指令的实现与绑定版本号支持与固件团队 M0 对齐协议(仅指令定义,配网协议归 M03)

以上为 M02 家庭与设备管理(FR-111~116)完整详细需求设计,已剔除全部设备配网相关内容(蓝牙扫描、Wi-Fi/AP配网、配网结果与诊断页均归属 M03),仅保留入口跳转与回调约定;页面、交互、状态机、权限矩阵、接口、验收均已闭环,与 M01 文档格式一致,可直接交付 UI 与开发。如确认无误,可按同样格式继续输出 M03 设备配网(FR-121~125)。