应用合规 是做什么的?
每个应用在面向真实用户前都必须通过这些 关卡,并在后续变更中持续通过。 一个关卡是一项带有规则、构建内容及完成时检查的义务。 每个关卡的状态会记录在项目的合规记录中,确保不依赖记忆或良好意图来放行。
这是依据已研究法律进行的工程实践,不构成法律建议。
规则源自 research/ 目录下注明来源的笔记,日期为 2026-10-31:01 隐私与同意、02 商业与声明、03 无障碍、知识产权与 AI。
当笔记在运行时超过 6 个月未更新,请在依赖相关章节之前重新检查其中引用的主要来源(如有研究技能,可使用该技能),以确保其日期和阈值仍为最新。
原则
- 为所有人构建同一版本。 对所有用户采用最严格的通用标准(隐私方面遵循 GDPR,订阅和定价方面遵循加州法规,无障碍方面遵循 WCAG 2.2 AA),而不是按国家进行分支。
- 数据映射即是真相。 法律页面、同意提示和供应商列表描述的是代码和实际应用的行为——通过阅读代码和捕获流量获得,而非模板的假设。 当应用发生变更时,页面应在同一提交中一并更新。
- 证据至上。 应用中的每一项声明、徽章、标识、评论和数字都必须指向记录中的一条证据条目。
- 所有者决定,代理起草。 代理负责编写页面、代码和测试;签名、注册、权限和法律判断属于所有者操作,代理不得代其标记为完成。
步骤
- 映射数据。 基于代码和一次实际运行,在合规记录中构建数据映射:包含个人数据的每个表单字段和 API 输入、存储个人数据的每个数据库列或存储、每个 cookie 及
localStorage/sessionStorage/IndexedDB 键、应用调用的每个域名(通过 Playwright HAR 捕获所有路由,通过 mitmproxy 等代理捕获全新移动安装的流量)、依赖树中的每个 SDK,以及应用发送的每封邮件。 对每一项记录:目的、法律依据、存储位置、保留期限、以及接收该数据的供应商。 完成条件:代码搜索和 HAR 显示数据映射中没有任何遗漏。 - 设定范围。 在记录中回答:用户是谁(消费者、企业、可能涉及儿童)?地点(美国、欧盟/英国、其他地区)?企业规模(员工数、营业额)?是否收取费用或提供订阅?是否发送营销邮件?是否存储用户提供的内容(帖子、评论、文件、个人资料、头像)?是否展示 AI 输出或提供 AI 对话?是否处理健康、财务、生物识别或精确位置数据? 若涉及敏感数据或儿童,则“是”将增加一项律师审查作为所有者操作。
- 检查每个关卡。 阅读下方每个关卡文件,并为每个关卡赋予一个状态:
pass(通过)、fail(未通过)、n/a(不适用,同时注明排除该关卡的界定答案)或owner(等待所有者操作)。gates/privacy.md:隐私声明、数据最小化、保留、访问和删除请求、儿童、用户数据的 AI 训练、供应商、DPA 和子处理者 (PRIV)。gates/consent-and-tracking.md:Cookie 横幅、在同意前阻止追踪器、选择退出信号、单独的营销同意 (CONSENT)。gates/terms-and-payments.md:条款接受及其记录、完整价格、退款、自动续订、取消、欧盟撤销权 (TERMS, PAY)。gates/marketing-and-claims.md:声明、安全徽章、评论、标识、正常运行时间、紧迫性、暗黑模式、企业信息、营销邮件 (CLAIM, UX, BIZ, EMAIL)。gates/accessibility.md:WCAG 2.2 AA 扫描、对比度、替代文本、键盘、焦点、时间与目标、欧盟无障碍声明 (A11Y)。gates/licenses-and-content.md:代码、字体、图像和图标许可证、用户内容的举报与删除 (LIC, UGC)。gates/ai.md:AI 对话披露、生成内容的标注与标记 (AI)。
- 修复并证明。 为每个
fail状态构建所需内容,然后执行其完成时检查:将自动化检查作为项目测试套件中的测试持续运行,手动检查则记录日期和结果。 完成条件:所有关卡状态为pass、n/a或owner,且不存在fail。 - 移交。 在记录顶部编写所有者操作清单,并在会话中告知所有者,每项操作一行:做什么、为什么以及在哪里做。
后续变更时,对受影响的关卡文件重复步骤 1 和 3 至 5,并在同一提交中更新记录。
合规记录
每个应用在其仓库中维护一份记录,存放于 docs/compliance.md,就地更新,基于 record-template.md 构建。
该记录包含范围答案、数据映射、每个关卡的状态和证据、证据条目、资产清单以及所有者操作。
只有当记录中不存在 fail 且所有者已清除或明确接受每条未完成的所有者操作时,应用才能上线。