Files
platforms/docs/开发日志_家庭成员与设备共享首期闭环_20260913.md

52 lines
3.5 KiB
Markdown
Raw Normal View 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.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`、打开邀请表单、发送邀请、查看待确认状态、二次确认撤回,并停留在撤回后的真实页面。
## 风险评估
- 远程测试账号当前没有智能设备,未在真实数据上执行按设备授权。
- 当前只有一个已知用户端测试账号,接受/拒绝接口尚未完成双账号浏览器联调。
- 页面使用真实姓名首字头像;成员受控头像资源接口尚未接入,因此与设计稿人物照片存在差异。
- 设备远程控制能力本身仍由设备控制页面和物联网映射决定,本页授权不会绕过二次确认或设备可用性检查。