Files
story/docs/customer-portal-redesign-20260920.md
Codex Local bf1233d5df
ci / verify (push) Canceled after 0s
feat: expand companion platform, device controls, and memoir workflows
Add customer and operator login, BLE provisioning, device fleet controls, call memory, memoir generation, and refreshed family and maintenance portals. Include API contracts, migrations, firmware sources, tests, assets, and deployment documentation.
2026-10-08 10:06:44 +08:00

68 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 家庭端全页重实现与后端配套 — 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。没有修改真实昵称、权限或分享数据;维护中心真实角色全流程、短信及实物蓝牙链路不在本次线上抽查范围。原发布目录、镜像和服务器数据库备份均保留。