Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 91 additions & 27 deletions PRIVACY.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ tests/e2e/ 离线、云端和数据生命周期测试

## 当前边界

影伴当前仓库版本为 v1.3.9,生产地址为 [sm.shadow.wang](https://sm.shadow.wang/)。它是面向家庭的开源 PWA,不包含广告当前通过 [Vercel Web Analytics](https://vercel.com/docs/analytics/privacy-policy) 记录匿名、聚合的页面访问数据,也没有儿童独立账号体系。数据范围和删除方式见 [隐私说明](https://sm.shadow.wang/privacy),安全问题请按 [安全政策](SECURITY.md) 私下报告。
影伴当前仓库版本为 v1.3.9,生产地址为 [sm.shadow.wang](https://sm.shadow.wang/)。它是面向家庭的开源 PWA,不包含广告,也没有儿童独立账号体系。当前通过 [Vercel Web Analytics](https://vercel.com/docs/analytics/privacy-policy) 记录匿名、聚合的页面访问数据;另有与 Vercel 分离、不可由普通用户读取的私有后端活动事件,用于内测指标和有限故障诊断,原始记录保留 180 天。具体字段、导出边界和删除方式见 [隐私说明](https://sm.shadow.wang/privacy),安全问题请按 [安全政策](SECURITY.md) 私下报告。

### 英语发音

Expand Down
4 changes: 2 additions & 2 deletions docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ erDiagram

限制与演进条件:

- 如果需要排行榜、日级报表或推荐模型,应新增 append-only `learning_activity_events`;
- Growth Loop 使用 private、append-only `learning_activity_events` 记录有界后端事件,用于内测漏斗和故障诊断;它不保存自由文本或学习内容,普通用户不可读取,原始记录按 `received_at` 保留 180 天。排行榜、推荐模型等新用途仍需另行评审
- 如果内容编辑频繁或需要付费授权,应新增内容集合、内容项和 entitlement 表;
- 如果状态接近 1 MB、冲突频率升高或查询需要跨用户聚合,应将相关字段拆表;
- 不直接删除 JSONB 状态;先双写、回填、验证,再切换读取。
Expand All @@ -146,7 +146,7 @@ erDiagram
- 创建家庭时 `owner_user_id` 必须等于 `auth.uid()`。
- 家庭 owner 只能为自己创建初始 owner membership。
- owner/guardian 可创建和修改 learner profile/state。
- 创建 learner profile 还必须存在当前 owner/guardian `privacy-v1` 确认记录;记录只允许服务端默认时间戳写入,客户端无更新/删除权限。
- 创建 learner profile 还必须存在当前 owner/guardian 的有效 `privacy-v1` 或 `privacy-v2` 确认记录;新确认写入 `privacy-v2`,历史 `privacy-v1` 继续有效。记录只允许服务端默认时间戳写入,客户端无更新/删除权限。
- `learning_save_state` 是 `SECURITY INVOKER`,不会绕过 RLS。
- `learning_is_household_owner` 是唯一的 `SECURITY DEFINER` 授权辅助函数:固定空 `search_path`、仅返回当前用户是否为指定家庭 owner、仅授予 `authenticated` 执行权,用于打断 household 与 membership 策略之间的递归。
- 更新策略同时具有 `USING` 与 `WITH CHECK`。
Expand Down
11 changes: 10 additions & 1 deletion docs/privacy-policy-publishing.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,13 @@ http://localhost:5173/privacy/

响应头应包含 `content-type: text/html`,页面应显示中文标题、品牌首屏、中英文内容和移动端布局。

如果只是修订视觉样式或文字,保持 `privacy-v1`;如果收集范围、同意机制或处理目的发生实质变化,必须升级版本并按隐私同意数据库迁移流程处理,不能只覆盖 HTML。
如果只是修订视觉样式或不改变含义的文字,可以保持当前隐私版本;如果收集范围、同意机制、处理目的、保留期或导出边界发生实质变化,必须升级版本并按隐私同意数据库迁移流程处理,不能只覆盖 HTML。

## privacy-v2 迁移说明

`privacy-v2` 于 2026-08-20 增加私有后端活动事件、180 天保留期和 server-only 导出边界说明。数据库提案 `20260820120000_growth_loop_beta_batches.sql` 将允许版本扩展为 `privacy-v1` / `privacy-v2`,并同步更新创建同意和学习者的 RLS 条件:

- 新客户端只写入 `privacy-v2`。
- 已有 `privacy-v1` 记录保留原始版本和时间戳,并继续满足学习者创建前的有效同意检查。
- 客户端读取两个受支持版本,不能把历史家庭误判为未同意,也不自动补写或改写同意记录。
- 任何进入共享 Supabase 的 canonical migration 仍必须由 Shadow Portal 控制面审批和执行;产品仓库只提交 proposal。
2 changes: 1 addition & 1 deletion docs/user-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ MacBook 与无 GMS Android 的听感可能不同:前者通常优先使用 macO
- 学习记录按孩子分别同步,避免多个孩子的打卡、积分和绘本记录混在一起。
- 家庭空间显示所有孩子记录中的最近同步时间。
- 切换孩子后,页面会加载该孩子对应的学习记录。
- 家庭所有者可以在账号面板导出完整家庭 JSON 数据
- 家庭所有者可以在账号面板导出家庭业务 JSON(家庭/学习者状态、同意、积分和奖励记录);私有后端活动事件和内测批次记录不在导出范围内,但会在删除家庭时一并级联删除
- “删除全部家庭数据”会删除当前家庭的云端学习数据、清理本机数据并退出登录;共享 Supabase 项目中的 Auth 身份不会被删除,之后仍可用同一邮箱登录。

## 共享密码
Expand Down
Loading
Loading