Files
platforms/docs/开发日志_家庭成员与设备共享首期闭环_20260913.md
czl231 3ef33b531d 已完成用户APP首期功能开发
交付用户端首期页面、配套接口、后台资源及测试文档。用户APP构建、静态分析和三个管理后台构建通过;完整测试仍有2项失败,后端模型注释检查未通过,详见交付记录。
2026-09-13 00:57:32 +08:00

3.5 KiB
Raw Permalink Blame History

家庭成员与设备共享首期开发日志

操作时间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.gomain.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.dartprofile_page.dart:路由和个人中心入口。
  • apps/user_app/test/ui/family_sharing_page_test.darttest/support/a1_fixture.darttool/a1_visual_test.dart:页面和视觉验证。

验证结果

  • Gogo test ./internal/logic/client/user ./internal/routers ./cmd/cli 通过。
  • Flutterflutter analyze 无问题;家庭共享页面 2 项测试通过320/360/390/430 宽度及 1.0/1.3 字体倍率共 8 组无溢出。
  • 构建:带本地 API 地址的 Flutter Web Release 构建通过。
  • 远程联调:真实账号创建待确认邀请,响应状态为 10列表仅显示脱敏手机号撤回成功并从活动列表消失。
  • 内置浏览器:完成登录、打开 /family、打开邀请表单、发送邀请、查看待确认状态、二次确认撤回,并停留在撤回后的真实页面。

风险评估

  • 远程测试账号当前没有智能设备,未在真实数据上执行按设备授权。
  • 当前只有一个已知用户端测试账号,接受/拒绝接口尚未完成双账号浏览器联调。
  • 页面使用真实姓名首字头像;成员受控头像资源接口尚未接入,因此与设计稿人物照片存在差异。
  • 设备远程控制能力本身仍由设备控制页面和物联网映射决定,本页授权不会绕过二次确认或设备可用性检查。