Files
platforms/docs/开发日志_紧急联系人_20260911.md

35 lines
3.8 KiB
Markdown
Raw Permalink Normal View History

# 紧急联系人开发
## 范围与行为
参照图10新增 `/safety/contacts`,个人中心入口进入真实列表。支持姓名、手机号、关系资料的新增、编辑、归档删除,最多五位,列表隐藏手机号中间四位。告警通知、设备查看、远程控制和顺延通知均明确“暂未开放”,不因联系人保存而授权。
后端新增鉴权 `GET/POST /emergency-contacts``PUT/DELETE /emergency-contacts/:identity`。所有查询限定当前登录账户写入持有账户行锁保证五人上限及电话号码去重。新增必须带UUID请求号相同请求重试返回原记录已归档记录不能因重试恢复。删除为状态归档。
独立迁移命令 `migrate-emergency-contacts` 已对现有远程配置执行成功,只创建 `user_emergency_contact` 及相应注释和唯一索引,未执行全库迁移或初始化。
## 文件
- `backend/api/internal/models/user_emergency_contact.go`:联系人资料模型。
- `backend/api/internal/logic/client/user/emergency_contacts.go`本人CRUD与边界校验。
- `backend/api/internal/logic/client/user/emergency_contacts_test.go`:输入、上限、越权与响应能力测试。
- `backend/api/internal/routers/client.go`:四条用户鉴权路由。
- `backend/api/cmd/cli/emergency_contact_migration.go``main.go`:独立事务迁移命令。
- `apps/user_app/lib/data/repositories/client_repository.dart`:联系人接口和会话保护。
- `apps/user_app/lib/ui/features/profile/emergency_contacts_page.dart`:列表、编辑和删除确认。
- `apps/user_app/lib/app/router.dart``ui/features/profile/profile_page.dart`:路由及入口。
- `apps/user_app/test/ui/emergency_contacts_page_test.dart`:失败保留输入和请求号、成功刷新及权限未开放。
## 验证及限制
Go用户逻辑、路由和CLI测试通过Flutter静态检查、联系人页面测试、Web构建通过。当前API进程已切换为 `heqi-contacts-api.exe`,仍连接原远程数据库。
尚未完成告警联动、联系人顺序调整、设备授权审计、后台治理及真机拨号验收不将这些首期缺项归为二期。图10仍需完善图标、字体、布局和真实状态对照未判完整通过。
内置浏览器390×844实际完成模拟账号登录后空列表→新增测试联系人→列表显示脱敏手机号→编辑姓名并保存→列表显示新姓名→删除确认→恢复空列表。仅本次新增的测试记录被状态归档数据库保留幂等记录未拨打电话、未发短信、未授予设备权限。卡片密度和权限提示布局仍与原图不同保持部分实现状态。
后续视觉修正:恢复蓝底白字编号和关系标签;“权限 · 暂未开放”统一显示在权限行上方每项仍可点击查看说明。电话、编辑与权限按钮按原图并排320宽或放大文字时分行。320/390/430宽度、1.3倍字体及长姓名/关系描述测试通过,新增实际点击远程控制后未开放提示的断言。仍未判整页视觉通过。
新版Web在内置浏览器390宽用独立“视觉测试”联系人核对编号、标签及五个操作入口同排可见远程控制弹出未开放说明。补充后端新增请求重放测试验证启用记录重试不重复插入、归档记录不能被重试复活测试通过。
错误反馈修正新增稳定业务码2501五人上限、2502本人列表号码重复、2503原请求已处理且资料不一致或已归档。前端只对明确业务拒绝显示原因未知网络错误保留“结果未确认”删除失败使用删除文案。后端联系人测试及七项前端联系人测试通过新版API已重启数据库结构未改动。此轮错误分支主要由自动测试验证不代表所有异常均已完成浏览器联调。