3.5 KiB
3.5 KiB
家庭成员与设备共享首期开发日志
操作时间:2026-09-13 操作类型:新增、扩展 影响模块:用户端 App、用户端 API、远程开发数据库
操作前状态
个人中心仅显示“家庭成员与设备共享”暂未开放,没有独立页面、家庭关系、邀请确认、设备授权或审计接口。紧急联系人只能维护资料,并明确不代表设备控制或告警通知授权。
具体操作
- 新增家庭成员邀请模型。邀请七天有效,受邀手机号对应的账号本人接受后才建立成员关系。
- 新增按成员、按设备保存的查看、告警和控制权限。告警或控制权限必须同时具备查看权限。
- 新增邀请、接受、拒绝、权限调整和撤销审计。审计摘要不记录完整手机号。
- 新增
/family页面,按设计稿展示家庭概览、成员状态、共享设备、安全规则和固定邀请按钮。 - 个人中心入口改为真实路由。邀请、撤回和权限编辑均以服务端成功响应为准。
- 远程开发数据库执行
migrate-family-sharing增量迁移,只创建家庭共享三张表、索引和中文注释。
行为变化
变更前:点击入口只显示“暂未开放”。
变更后:房主可以邀请手机号、预设设备范围、撤回待确认邀请、调整成员权限或移除成员;受邀账号可以接受或拒绝。普通紧急联系人不会自动成为家庭成员,也不会自动获得设备权限。
代码变更
backend/api/internal/models/user_family_member.go:家庭成员、设备共享和审计模型。backend/api/internal/logic/client/user/family.go:本人隔离、邀请确认、权限替换、撤销和审计业务。backend/api/internal/routers/client.go:家庭共享用户端路由。backend/api/cmd/cli/family_migration.go、main.go:可重复执行的增量迁移命令。apps/user_app/lib/domain/models/family_sharing.dart:页面领域模型。apps/user_app/lib/data/repositories/client_repository.dart:家庭共享仓储调用。apps/user_app/lib/ui/features/profile/family_sharing_page.dart:独立页面及邀请、权限、撤销交互。apps/user_app/lib/app/router.dart、profile_page.dart:路由和个人中心入口。apps/user_app/test/ui/family_sharing_page_test.dart、test/support/a1_fixture.dart、tool/a1_visual_test.dart:页面和视觉验证。
验证结果
- Go:
go test ./internal/logic/client/user ./internal/routers ./cmd/cli通过。 - Flutter:
flutter analyze无问题;家庭共享页面 2 项测试通过;320/360/390/430 宽度及 1.0/1.3 字体倍率共 8 组无溢出。 - 构建:带本地 API 地址的 Flutter Web Release 构建通过。
- 远程联调:真实账号创建待确认邀请,响应状态为 10,列表仅显示脱敏手机号;撤回成功并从活动列表消失。
- 内置浏览器:完成登录、打开
/family、打开邀请表单、发送邀请、查看待确认状态、二次确认撤回,并停留在撤回后的真实页面。
风险评估
- 远程测试账号当前没有智能设备,未在真实数据上执行按设备授权。
- 当前只有一个已知用户端测试账号,接受/拒绝接口尚未完成双账号浏览器联调。
- 页面使用真实姓名首字头像;成员受控头像资源接口尚未接入,因此与设计稿人物照片存在差异。
- 设备远程控制能力本身仍由设备控制页面和物联网映射决定,本页授权不会绕过二次确认或设备可用性检查。