chore: initial commit — import worldmodel workspace (plans/, research/)

This commit is contained in:
gaojie
2026-05-20 21:43:57 +08:00
commit bec8a9a4a3
98 changed files with 44128 additions and 0 deletions
+131
View File
@@ -0,0 +1,131 @@
# CrowdRoom · 变更日志(CHANGELOG
> 本文件遵循 [Keep a Changelog 1.1.0](https://keepachangelog.com/zh-CN/1.1.0/) 规范,版本号采用 [语义化版本 SemVer 2.0.0](https://semver.org/lang/zh-CN/spec/v2.0.0.html)。
>
> 本日志只记录**已发生**的设计文档变更;未来计划见 [`ROADMAP.md`](ROADMAP.md)。
>
> 版本号含义:
> - **0.x.y** —— 设计阶段(pre-MVP),尚未对外发布代码
> - **0.5.0**(计划) —— M1 MVP 上线,对应 [`ROADMAP.md`](ROADMAP.md) §2.1 M1 DoD
> - **1.0.0**(计划) —— M3 v1.0 上线,对应 ROADMAP §2.3 M3 DoD
>
> 每个版本下按 `Added / Changed / Deprecated / Removed / Fixed / Security / Planned` 分类。
---
## [Unreleased]
> 下个版本(v0.3)的待办:v0.2 文档冻结后由子任务 7[`ROADMAP.md`](ROADMAP.md))汇总识别出的 4 条**跨文档新设计冲突**。M1 W4 之前必须完成分诊(修复 / 推迟 / 拒绝 三选一)。
### Planned
- **C-NEW-1** —— **viewState 编码确定性 vs 强 hash 反画像冲突分诊**
[`04_web_app_plan.md`](04_web_app_plan.md) §9.3 把 viewState 设为「gzip+base64url 确定性编码」(便于 OG 缓存复用),但 [`09_privacy.md`](09_privacy.md) §5 P-W-7 要求 viewState 在 Realtime / 日志路径上作为画像数据进行强 hash —— 「确定性」与「不可逆」直接冲突。
→ 建议方案:「双轨编码」(URL 用确定性、日志用 HMAC-with-rotating-salt)。回写位置:[`02_api_contract.md`](02_api_contract.md) §5 + [`09_privacy.md`](09_privacy.md) §5 P-W-7。
时间窗:**M1 W2 前**。
- **C-NEW-2** —— **E-19(父硬删快照转移)与 E-17(账号注销三阶段)并发未定义**
若用户在 T+0 注销时其房间被他人 Remix,则 E-19 触发时点(T+0 / T+7 / T+30)、失败回滚顺序、对 Remixer 的通知顺序均未在 v0.2 任何文档明确。
→ 回写位置:[`02_api_contract.md`](02_api_contract.md) §3 新增「注销级联管线」+ [`01_data_schema.md`](01_data_schema.md) §3.11 补 E-19/E-17 交互矩阵。
时间窗:**M1 W3 前**。
- **C-NEW-3** —— **位置标签城市级 5 km 的数据流端到端未对齐**
[`09_privacy.md`](09_privacy.md) §3.3 定义「永远城市级 5 km」,[`01_data_schema.md`](01_data_schema.md) §3.2 G-10 已加 `location_label` 字段标注,但 [`03_ios_app_plan.md`](03_ios_app_plan.md) §8.1 `NSLocationWhenInUseUsageDescription` 文案未提「5 km 网格」、且量化发生在客户端还是服务端未定义。
→ 回写位置:[`03_ios_app_plan.md`](03_ios_app_plan.md) §8.1 + [`02_api_contract.md`](02_api_contract.md) E-02 请求体校验规则。
时间窗:**M1 W2 前**(合规底线)。
- **C-NEW-4** —— **信任分系统初始分计算口径缺失**
[`10_governance.md`](10_governance.md) §3.2 提到「P1 引入信任分」但无公式;[`ROADMAP.md`](ROADMAP.md) §2.3 M3 DoD 已写「初始分 50 / 上限 100 / 因子 6 项」,但权重 / 衰减 / 与 ATT / 举报 / 申诉的勾稽未拍板。
→ 回写位置:新增 [`plans/CrowdRoom/11_trust_score.md`](11_trust_score.md) 或并入 [`10_governance.md`](10_governance.md) §3。
时间窗:**M2 W14 前**M3 DoR 倒推)。
> ⚠️ 上述 4 条由 v0.2 文档静态分析推断;若子任务 6 原作者另有 attempt_completion 中明确写明的 C-NEW 原文,请以原作者版本覆盖此区块。
---
## [0.2.0] - 2026-05-19
> **修订主题**v0.1 review 阶段识别出 **10 条 G 漏洞**(G-1 ~ G-10)的全量回写。所有修订严格遵守「**只追加 / 字段插入 / 文案润色,不改既有字段语义、不破坏既有引用**」原则。
### Added
- **G-1** —— [`01_data_schema.md`](01_data_schema.md) §3.6 `remixes` 表新增字段 `parent_snapshot_path`nullable text),用于父房间被作者硬删时承载几何快照转移目标路径;与 [`10_governance.md`](10_governance.md) §4 P-W-3 拍板的「快照转移 + 署名替换」配套。
- **G-2** —— [`02_api_contract.md`](02_api_contract.md) §2.1 新增 3 个 Edge Function 端点:
- `E-17 account-deletion`:账号注销三阶段(T+0 软删 / T+7 不可撤 / T+30 硬删),软封装原 E-16
- `E-18 account-export`:用户数据一键导出(GDPR Art.20 数据可携权)
- `E-19 parent-snapshot-transfer`:父房间硬删时把几何快照转移到所有衍生 Remix
- **G-3** —— [`02_api_contract.md`](02_api_contract.md) §7.3 新增 5 条业务错误码:
- `EMBED_RATE_LIMITED`iframe 嵌入超频)
- `EMBED_FORBIDDEN`(嵌入域名未在白名单)
- `ACCOUNT_DELETION_IN_PROGRESS`(注销窗口期内禁止其它写操作)
- `ACCOUNT_EXPORT_PENDING`(导出任务排队中)
- `PARENT_SNAPSHOT_TRANSFER_FAILED`E-19 快照转移失败可重试)
- **G-4** —— [`03_ios_app_plan.md`](03_ios_app_plan.md) §8.4 新增 `PrivacyManifest``PrivacyInfo.xcprivacy`)完整结构,覆盖 NSPrivacyTracking / NSPrivacyTrackingDomains / NSPrivacyCollectedDataTypes / NSPrivacyAccessedAPITypes 四组字段。
- **G-6** —— [`04_web_app_plan.md`](04_web_app_plan.md) §1.1 路由表新增 `R-16 /me/embeds`:用户管理自己发出的 iframe 嵌入列表与撤销面板。
- **G-7** —— [`04_web_app_plan.md`](04_web_app_plan.md) §1.1 路由表新增 `R-17 /admin/reports`:运营 reviewer 审核举报队列面板,含状态机视图。
- **G-8** —— [`03_ios_app_plan.md`](03_ios_app_plan.md) §1.2 IA 跳转图新增 `PrivacyDetail` 节点,作为「我的 → 隐私」一处看完所有开关的入口(对应 [`09_privacy.md`](09_privacy.md) PR-3 用户可控原则)。
- **G-9** —— [`01_data_schema.md`](01_data_schema.md) §3.11 新增「软删 vs 硬删分层策略」整章,所有用户数据表追加 `deleted_at timestamptz` 字段;定义 T+0 / T+7 / T+30 三个数据生命周期临界点的 RLS 行为。
- **G-10** —— [`01_data_schema.md`](01_data_schema.md) §3.2 `rooms.location_label` 字段显式加上「城市级 5 km 网格字符串、不含原始 GPS」注释,与 [`09_privacy.md`](09_privacy.md) §3.3 PR-2 最小采集原则绑定。
### Changed
- **G-5** —— [`03_ios_app_plan.md`](03_ios_app_plan.md) §8.1 修订 `NSLocationWhenInUseUsageDescription` 等 5 条位置权限文案,明确「会被其他用户看到」与「仅城市级,不含具体地址」两层声明;对应 [`09_privacy.md`](09_privacy.md) §4 P-3 拍板。
- 文档头版本号统一从 v0.1 升至 v0.2,并在文档头部说明本次修订涉及哪几条 G 漏洞。
### Fixed
- 无。本次修订全部为「追加 / 改进」,未修复 v0.1 既有 bug(v0.1 时尚无线上代码,无 bug 可修)。
### Security
- 通过 G-2E-17 / E-18)将 GDPR Art.17 删除权 + Art.20 数据可携权落到具体 API;
- 通过 G-4 PrivacyManifest 满足 Apple App Privacy Report 强制要求;
- 通过 G-9 软删分层避免 T+0 立即硬删导致级联破坏 Remix 衍生作品的合规风险。
---
## [0.1.0] - 2026-05-19
> **里程碑**CrowdRoom 设计从无到有,**7 份初版文档**全部落地,关键决策**5 条**拍板。这是项目的 ground truth 起点。
### Added
- [`00_overview.md`](00_overview.md) —— 总览:产品定位、5 Tab IA、技术栈选型、与 PRISM 复用边界、MVP 8 周范围、5 条根级风险 RK-1~5。
- [`01_data_schema.md`](01_data_schema.md) —— 数据模型:Supabase 8 张表 DDLv0.2 升至 9 张是 G-1 拆表的结果,v0.1 时为 8 张含 `room_versions`)、RLS 策略、Storage 公开/私有双桶目录、`layer_manifest.json` JSON Schema、CrowdRoom 4 层 ↔ PRISM L1L4 映射。
- [`02_api_contract.md`](02_api_contract.md) —— API 契约:16 个端点 E-01~E-16、转码 Worker 序列图、Remix 覆盖层 `remix_overlay.json` Schema、6 档配额表、4xx/5xx 错误码总表(v0.1 共 35 条,v0.2 增至 40 条)。
- [`03_ios_app_plan.md`](03_ios_app_plan.md) —— iOS 设计:5 Tab + 22 页面 IA、3 个核心 Flow(扫描脱敏上传 / 浏览跳 Web Remix / 通知跳详情)、端侧脱敏管线(RoomPlan → ModelIO → Vision → CIGaussianBlur)、三段式上传、5 阶段 Realtime 进度 UI、A/B/C 质量分、iOS-X1~X5 五条契约。
- [`04_web_app_plan.md`](04_web_app_plan.md) —— Web 设计:15 条路由(v0.2 增至 17 条)、Next.js + R3F + Zustand + Supabase SSR 技术栈、类 ArcGIS 4 层图层面板 + Named Views、材质替换(`material.map` 即时替换)、家具替换(OBB 自动对齐 + 4 自由度微调)、Remix 浏览器实时合成、SSR / OG / viewState 编码契约、Web-Y1~Y6 六条契约。
- [`09_privacy.md`](09_privacy.md) —— 隐私设计:5 条隐私原则 PR-1~5、数据流红黄绿三色图、三类敏感数据全生命周期、6 条 iOS 契约 P-1~P-6、3 条 Web 契约 P-W-1/2/7、GDPR + PIPL 合规清单(MVP 8 项 + P2 6 项)、16 项默认值表、8 个第三方 SDK 风险点。
- [`10_governance.md`](10_governance.md) —— 治理与社区:4 条治理原则 GR-1~4、UGC 自动审核流程(NSFW + 敏感词 DFA)、举报状态机、4 条治理契约 P-W-3~P-W-6、5 条社区规则 CR-1~5、4 级处罚阶梯 + 严重违规白名单越级、CC BY-NC 4.0 默认协议 / CC0 公共资产库、3 级申诉流程、90 天退场承诺与 CC0 镜像永久可访问。
### Decided(关键决策 Top 5
> 从全部 7 份文档识别出**最具方向性**的 5 条决策;完整 10 条版本见 [`README.md`](README.md) §4。
1. **拆 8 张表,不 7 张** —— 独立 [`room_versions`](01_data_schema.md) 表承载转码异步状态、Remix 父锁定、重传不破坏旧链接([`01_data_schema.md`](01_data_schema.md) §1 D1)。
2. **材质是逻辑层,不是 SQL 行** —— 4 层中只有「墙/地/家具」入 `layers` 表,「材质」在 `layer_manifest.json` 内嵌 `slots[]`[`01_data_schema.md`](01_data_schema.md) §1 D4)。
3. **Remix = 引用 + 覆盖层** —— 不深拷贝几何,浏览器实时合成 overlay([`02_api_contract.md`](02_api_contract.md) §1 D-A4 + §4)。
4. **三段式上传** —— 客户端 → Edge Function 拿 presigned → 直传 Storage → 回调 Edge Function;避开 4 MB body 限制([`02_api_contract.md`](02_api_contract.md) §1 D-A2 + [`03_ios_app_plan.md`](03_ios_app_plan.md) §5)。
5. **端侧脱敏不可降级** —— 人脸 `CIGaussianBlur` 必须在 iPhone 离开 App 进程前完成;服务端永不二次检测人脸([`09_privacy.md`](09_privacy.md) §1 PR-1 + [`03_ios_app_plan.md`](03_ios_app_plan.md) §4 + iOS-X1 契约)。
### Notes
- 本版本所有文档**仅设计稿,无对应代码**。
- v0.1 与 v0.2 同日发布;v0.2 是 v0.1 的 review-and-fix 增量版本(10 条 G 漏洞回写)。
- 后续版本将与代码里程碑(M1 MVP → v0.5-mvp)合并发布。
---
## 维护规约
1. **每次文档变更必须更新本日志**。修改 [`09_privacy.md`](09_privacy.md) 或 [`10_governance.md`](10_governance.md) 须 DPO + 法务双签后再写入;修改 [`01_data_schema.md`](01_data_schema.md) 字段语义须后端 + iOS + Web 三方签字。
2. **`[Unreleased]` 区块**只写「**已识别但未发布**」的待办;进入版本时把对应条目移入新版本号下。
3. **不要在 CHANGELOG 写未来计划**——未来在 [`ROADMAP.md`](ROADMAP.md)。本文件只记发生过的事。
4. **版本号变更规则**
- 任何「新增字段 / 新增端点 / 新增错误码 / 新增文档」→ MINOR 升一位(0.x → 0.(x+1)
- 任何「字段语义变更 / 端点删除 / 错误码改语义」→ MAJOR 升一位(破坏性变更,需迁移笔记)
- 文档润色 / typo 修复 → PATCH 升一位
5. **每个版本必须给出明确日期**YYYY-MM-DD),不允许「TBD」。
---
**文档版本**v0.2 · 2026-05-19
**维护者**CrowdRoom 设计组
**关键收获**:从 v0.1 初版 7 文档到 v0.2 的 10 条 G 漏洞回写,CrowdRoom 设计阶段共拍板 5 条根级决策 + 13 条隐私契约 + 4 条治理契约 + 6 条 iOS 契约 + 6 条 Web 契约 = **共 34 条对外契约**,构成 M1 MVP 8 周实施的全部输入。