68 lines
6.0 KiB
Markdown
68 lines
6.0 KiB
Markdown
# 家庭端全页重实现与后端配套 — 2026-09-20
|
||||
|
|
|
|||
|
|
已按确认的家庭端视觉方向完成 18 个页面/状态,维护中心 9 个业务区统一视觉与响应式布局。2026-09-20 已部署线上:Web `0.99.1-rc.portal-display1`、API `0.99.0-rc.portal1`、数据库迁移 73;健康检查及家庭端真实会话抽查通过。发布详情见 [发布记录](portal-redesign-release-20260920.md)。
|
|||
|
|
|
|||
|
|
## 页面与接口对应
|
|||
|
|
|
|||
|
|
| 页面 | 实现和配套能力 |
|
|||
|
|
| --- | --- |
|
|||
|
|
| 首页 | 陪伴准备、设备状态、本周统计、最新聊天;读取长者、设备、聊天、准备度接口 |
|
|||
|
|
| 聊天记录 | 已加载内容搜索、日期/状态筛选、摘要/文字/录音;保留独立录音访问授权 |
|
|||
|
|
| 故事与记忆 | 记忆卡片/详情/编辑/删除/历史、故事候选审核;调用 call-memory 与故事版本接口 |
|
|||
|
|
| 长者资料 | 档案摘要、偏好、已核实事实、授权入口 |
|
|||
|
|
| 提醒与待办 | 待确认故事、离线设备、数据请求及最近 7 天动态 |
|
|||
|
|
| 家庭管理 | 成员角色、邀请、移除、权限与家庭创建,保留确认和幂等处理 |
|
|||
|
|
| 陪伴设备 | 绑定、在线、设置同步分别呈现,电源/网络指引 |
|
|||
|
|
| 内容分享 | 当前授权、历史、撤销、一次性凭据;内容与权限分别授权 |
|
|||
|
|
| 数据与授权 | 五项独立授权、数据导出/更正/删除/撤回及进度 |
|
|||
|
|
| 服务用量 | 实际分钟、次数、每日活动、近期记录;未核价费用不可用 |
|
|||
|
|
| 设置与权限 | 昵称编辑、密码管理、各家庭角色/权限、退出登录 |
|
|||
|
|
| 我的陪伴设备 | 账户设备列表,服务开通与网络在线分开显示 |
|
|||
|
|
| 设备设置引导 | 有效入口走原绑定/设置链路;失效入口提供重新打开和恢复指引 |
|
|||
|
|
| 登录 | 新插画与双栏布局;保留验证码、密码、腾讯验证码与既有认证逻辑 |
|
|||
|
|
| 编辑长者资料 | 头像、名字、语言/时区、节奏、兴趣、话题、陪伴方向;版本确认保存 |
|
|||
|
|
| 设备详情 | 状态、音量下发、同步反馈、诊断、使用人转移和解绑 |
|
|||
|
|
| 新建分享 | 内容→接收人/权限/期限/用途→确认;沿用后端单权限 grant 模型 |
|
|||
|
|
| 绑定设备 | 仅保留蓝牙入口;搜索附近设备、选择连接后发送 Wi-Fi 配网信息 |
|
|||
|
|
|
|||
|
|
维护中心:维护总览、设备管理、固件管理、运行配置、大模型管理、内容质量、用量与费用、告警处置、联调与诊断。原业务接口与受控操作保持,移动端工具栏和表格已适配。
|
|||
|
|
|
|||
|
|
## 补齐的后端
|
|||
|
|
|
|||
|
|
1. `PATCH /api/v1/me/profile`:保存当前认证身份的昵称。仅接受 display_name,校验 1–80 个 Unicode 字符且不含控制字符,不能指定其他用户;同步该身份所在的有效账户。沿用 Cookie/Bearer 认证、CSRF 和限流。
|
|||
|
|
2. `GET /api/v1/events/history`:返回当前成员仍可访问的家庭在最近 7 天内最多 200 条保留事件元数据。验证成员、账户、家庭和组织有效,响应 no-store;没有聊天正文。
|
|||
|
|
3. 迁移 `000073_customer_activity_history`:事件默认保留期从 15 分钟扩展到 7 天,增加家庭成员变化事件及查询索引。前端将历史与实时事件去重、排序,并说明时间和条数范围。迁移不会恢复已经过期或清理的旧事件。
|
|||
|
|
4. 更新 OpenAPI 契约和生成的前端类型。
|
|||
|
|
|
|||
|
|
其余主要能力已有真实服务支持,本轮重接界面并验证;没有用本地示例接口替代生产功能。
|
|||
|
|
|
|||
|
|
## 验证结果
|
|||
|
|
|
|||
|
|
- `npm run generate:api`、`npm run build` 通过。构建保留既有大包体积提示。
|
|||
|
|
- `node --test test/home-model.test.mjs`:6/6 通过。
|
|||
|
|
- `go test ./internal/contractgovernance ./internal/httpapi ./internal/identity ./internal/webevents` 通过。
|
|||
|
|
- 临时 PostgreSQL 数据库应用全部迁移与种子,独立运行 identity、webevents、saas、sharing、billing、callmemory、httpapi、onboarding(8 包)通过。日志:`.tmp-all-pages-tests-v4/`。
|
|||
|
|
- opsdevice、opsconfig、alerts、contentmodel、privacy、diagnostics(6 包)同样通过。最终完整日志:`.tmp-all-pages-ops-final/`。
|
|||
|
|
- 新测试覆盖昵称校验与身份隔离、匿名/无效请求、历史保留与过期过滤、重复读取及跨家庭隔离。测试使用本次创建的临时库,并由脚本仅清理这些临时库。
|
|||
|
|
- 本地浏览器检查使用生产同一组件与 DEV 独立示例数据。查看了家庭端 18 个目标及维护端 9 个区的页面,并检查手机、平板和宽屏;详情见 `web/design-qa.md`。
|
|||
|
|
- 检查生产 `dist` 不含 `portal-preview.html` 或隔离示例数据代码。
|
|||
|
|
|
|||
|
|
## 本地查看
|
|||
|
|
|
|||
|
|
启动:在 `web` 下运行 `npm run dev -- --host 127.0.0.1 --port 5180`。
|
|||
|
|
|
|||
|
|
- 家庭端:`http://127.0.0.1:5180/portal-preview.html?section=home`
|
|||
|
|
- 登录:`http://127.0.0.1:5180/portal-preview.html?screen=login`
|
|||
|
|
- 设备入口:`http://127.0.0.1:5180/portal-preview.html?screen=onboarding-devices`
|
|||
|
|
- 设置引导:`http://127.0.0.1:5180/portal-preview.html?screen=setup`
|
|||
|
|
- 维护中心:`http://127.0.0.1:5180/portal-preview.html?screen=maintenance&area=overview`
|
|||
|
|
- 家庭空数据检查可添加 `&state=empty`。
|
|||
|
|
|
|||
|
|
预览只在开发入口启用;生产运行仍使用真实 API。浏览器验收未调用真实短信、未操作实物蓝牙、未创建真实对外分享或删除真实数据;这些外部链路不能由本地界面预览证明已完成线上验收。
|
|||
|
|
|
|||
|
|
## 线上发布
|
|||
|
|
|
|||
|
|
已以线上 `0.98.3-rc.home-width1` 为基线组装独立候选,只叠加本轮所需源码和资源,保留既有登录、验证码修复。完成数据库备份、迁移 000073、API 与 Web 发布;随后仅更新 Web,修复手机号登录时设置页账户标识为空的问题。
|
|||
|
|
|
|||
|
|
使用已有真实登录会话检查了首页、聊天记录、提醒与待办、陪伴设备、服务用量、设置与权限,数据正常加载;复查期间浏览器没有新增 warning/error。没有修改真实昵称、权限或分享数据;维护中心真实角色全流程、短信及实物蓝牙链路不在本次线上抽查范围。原发布目录、镜像和服务器数据库备份均保留。
|