Files
story/docs/permission-impact-guidance-20261005.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

51 lines
5.8 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.
# 权限影响提示与快捷授权
本次修改针对网页家庭入口。使用现有授权接口,未修改服务端权限规则,未为任何真实用户开通授权。网页已发布到 https://82.157.201.114/,版本 `0.99.42-rc.permission-impact1`。
## 数据用途授权
| 授权 | 缺少时的影响 | 依赖与边界 |
| --- | --- | --- |
| 保存文字记录 | 新聊天文字不能保存,无法从这些文字生成故事、摘要或记忆 | 通话条目仍可存在;故事和记忆另需相应授权。未入库文字不能凭补授权恢复 |
| 保存原始录音 | 新聊天不生成可回听、下载的录音;已有录音访问也受当前有效授权检查约束 | 设备与云端录制能力仍需支持;播放和下载是两种独立权限。补授权不能生成过去未录制的音频 |
| 整理故事与摘要 | 新聊天不自动整理为故事候选或摘要 | 需要文字保存;候选仍需家人核对。不会自动补齐历史故事 |
| 个性化记忆 | 新聊天不使用长期记忆,也不从聊天生成并同步新记忆 | 生成新记忆需要文字保存;故事摘要需要故事整理。家人的记忆访问权另行管理 |
| 家庭资源分享 | 尚未记录家庭分享的数据用途授权,家庭角色也不会自动创建资源分享 | 开启此项目不自动开放任何资源,仍需在内容分享中指定资源、接收人、用途、能力和有效期 |
设置路径:**长者资料 → 选择当前长者 → 资料与授权 → 新增分项授权**。家庭所有者、管理员、编辑者可以新增分项授权;查看者看到明确的联系对象和设置路径。
说明依据:`internal/saas/service.go` 的 `GrantConsent` 校验 `subject.write`;`internal/callmemory/events.go` 检查文字保存;录音、故事提取、记忆处理分别检查自身授权。现有 `family_sharing` 是单独记录的数据用途授权,当前分享服务主要依据具体资源分享授权,并不统一以该字段拦截全部资源分享。因此页面没有断言“未开通家庭分享就绝对无法分享”;本次没有扩大为服务端分享策略变更。
## 内容访问与家庭角色
- 设备聊天文字:家庭所有者默认保留访问权,其他角色需由所有者在 **故事与记忆 → 记忆授权** 同时开通“查看”和“敏感记忆”。权限说明依据 `callmemory.ResolveAccess` 与 `records.go` 的敏感内容校验。
- 记忆:查看普通记忆、修改记忆和查看敏感记忆分别管理;修改影响新增、编辑、删除、使用范围调整。只有家庭所有者可授予这些访问权限。
- 录音:播放与下载分别授予,所有者也不自动拥有录音访问权。现有聊天录音提供“授权本账号播放/下载 24 小时”快捷按钮;指定其他成员由所有者或管理员在早期聊天详情的“聊天语音 → 显式授权”操作。
- 家庭角色:成员管理、设备管理、审核故事、隐私请求依角色开放。权限对照明确区分管理能力、数据用途授权和具体内容访问权;个性化记忆授权不能替代家人的记忆访问授权。
## 页面行为
首页、聊天记录、故事与记忆和内容分享按功能显示缺失授权;长者资料和数据与授权显示完整五项状态、影响及依赖。创建长者的授权步骤使用相同说明。
有权管理的账号在提示旁点击“去授权…”打开当前长者与单项用途的确认窗口。必须勾选告知说明才能提交,取消不写入;提交包含现有隐私政策版本、告知摘要和用途范围。不会自动捎带开通文字保存等其他项目。
授权读取独立于故事、事实、隐私请求等数据读取。失败显示“状态未知”与重试,避免将请求失败显示为未授权;切换长者或登录身份立即屏蔽旧状态并关闭旧窗口。授权成功刷新状态与录音组件。
聊天记录的 `PARTIAL` 显示为“文字不完整或未保存”,避免零条文字时宣称“已保存部分文字”。当前授权状态不被当作某次历史通话缺失的已确认原因。无正文时分别提示当时可能未授权、文字未送达或数据已清理。
## 验证
- 网页 TypeScript 检查、生产构建通过;30 项既有单元回归与 2 项授权有效期、撤回和用途隔离检查通过。
- `test/e2e/consent-guidance.mjs` 使用真实家庭工作台与合成响应,验证缺失权限说明、取消零写入、显式单项授权、依赖功能、长者切换隔离、读取失败重试、查看者限制、聊天和录音独立权限说明与手机布局。
- 既有故事来源聊天分页与撤权清空正文、录音播放下载与撤权清空链接回归通过。
- 记忆操作回归通过:编辑期间保持核对过的版本、删除范围确认、所有者访问权不可关闭、手机布局及撤权清空正文。旧测试的“修正/删除”按钮定位已按现有详情页的“编辑记忆/删除记忆”及折叠区域入口更新。
- 截图保存在 `.design-evidence/consent-guidance/`,只包含合成资料。
本次仅部署网页。小程序未更新;历史未保存文字与未生成录音没有恢复。
## 发布验证
基于线上 `0.99.41-rc.consent-design1` 构建独立发布包,只叠加 7 个权限提示相关源文件,保留最新的长者创建授权样式。实际发布包重新通过生产构建、32 项单元检查和权限、录音、记忆三组界面回归。
线上逐一核对 126 个静态文件和入口路由,运行时配置哈希一致。API 与 worker 健康检查通过,其他服务容器与启动时间、数据库版本保持一致,没有执行迁移或业务数据写入。匿名浏览器检查确认新资源加载,桌面与手机入口正常,无脚本异常或静态资源失败。发布凭据与截图见 `../../.local-evidence/permission-impact-20261005/`(工作区证据目录)。