mcpField
C
consent-pref-center

consent-pref-center

github.com/mukul975安全32340 次安装32 周前更新
代码仓库

关于 consent-pref-center

面向设计同意偏好中心的团队,介绍数据结构、API、界面行为、审计记录及 IAB TCF v2.2 要求。

主要功能

  1. 01同意数据模型与 API 设计
  2. 02TCF v2.2 集成要求
  3. 03按处理目的设置偏好
  4. 04同意历史与回执下载
  5. 05版本管理与传播审计

适用场景

  1. 01设计同意记录和接口
  2. 02规划兼容 TCF v2.2 的偏好中心
  3. 03构建撤回同意流程

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/privacy-data-protection-skills --skill consent-pref-center

安装后在 Claude Code 中输入/consent-pref-center确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
template.md
references/
standards.md
workflows.md
scripts/
process.py

详细介绍

构建同意偏好中心

概述

同意偏好中心是一个集中式界面,数据主体可通过它管理针对所有处理目的的同意选择。根据 GDPR 第 7(3) 条,撤回同意必须与给予同意同样容易,因此,精心设计的偏好中心对于合规至关重要。IAB Europe Transparency and Consent Framework (TCF) v2.2 为与此架构集成的广告相关同意提供了标准化方法。

架构组件

1. 数据模型

同意偏好中心需要四个核心数据实体:

同意目的注册表 存储所有以同意为合法依据的处理目的。

字段类型描述
purpose_idUUID处理目的的唯一标识符
purpose_nameVARCHAR(256)易于理解的目的名称
purpose_descriptionTEXT通俗易懂的描述(Flesch-Kincaid 年级为 8 或以下)
legal_basisENUM"consent" 或 "explicit_consent"
data_categoriesJSONB已处理个人数据类别的数组
recipientsJSONB指定的第三方接收方数组
retention_periodVARCHAR(128)此目的的数据保留期限
tcf_purpose_idINTEGER适用时映射的 IAB TCF v2.2 目的 ID (1-11)
is_activeBOOLEAN此目的当前是否提供
created_atTIMESTAMP目的注册时间
updated_atTIMESTAMP最后修改时间戳

同意文本版本 记录向用户展示的同意文本,且记录不可变。

字段类型描述
version_idUUID唯一版本标识符
purpose_idUUID指向目的注册表的外键
consent_textTEXT向用户展示的确切文本
text_hashCHAR(64)consent_text 的 SHA-256 哈希值
effective_fromTIMESTAMP此版本生效时间
effective_untilTIMESTAMP此版本被替代的时间(若为当前版本则为 NULL)
approved_byVARCHAR(256)批准此版本的 DPO 或法律审核人员姓名

同意决定 记录数据主体作出的每项同意决定。

字段类型描述
decision_idUUID唯一决定标识符
subject_idUUID数据主体标识符
purpose_idUUID指向目的注册表的外键
version_idUUID指向所展示同意文本版本的外键
decisionENUM"granted" 或 "withdrawn"
mechanismVARCHAR(64)"checkbox_tick"、"toggle_switch"、"api_call"
timestampTIMESTAMPISO 8601 UTC 时间戳
ip_addressINET作出决定时的 IP 地址
user_agentTEXT浏览器 user agent 字符串
sourceVARCHAR(64)"signup_flow"、"preference_center"、"cookie_banner"、"api"

同意传播日志 跟踪同意变更后向下游系统发送的通知。

字段类型描述
propagation_idUUID唯一传播事件 ID
decision_idUUID触发此事件的同意决定外键
target_systemVARCHAR(256)收到通知的下游系统名称
statusENUM"pending"、"delivered"、"acknowledged"、"failed"
sent_atTIMESTAMP通知发送时间
acknowledged_atTIMESTAMP下游系统确认收到通知的时间
2. API 设计

GET /api/v1/consent/preferences/{subject_id} 返回指定数据主体所有目的的当前同意状态。

响应:

{
  "subject_id": "usr_7f3a9b2e-41d8-4c76-b5e3-9a8d1c2f4e60",
  "preferences": [
    {
      "purpose_id": "pur_analytics_001",
      "purpose_name": "Service Improvement Analytics",
      "decision": "granted",
      "granted_at": "2026-01-15T10:30:00Z",
      "version_id": "ver_a1b2c3d4"
    },
    {
      "purpose_id": "pur_marketing_002",
      "purpose_name": "Product Update Emails",
      "decision": "withdrawn",
      "withdrawn_at": "2026-02-20T14:45:00Z",
      "version_id": "ver_e5f6g7h8"
    }
  ],
  "last_updated": "2026-02-20T14:45:00Z"
}

PUT /api/v1/consent/preferences/{subject_id} 更新一个或多个目的的同意状态,并触发下游传播。

请求:

{
  "decisions": [
    {
      "purpose_id": "pur_marketing_002",
      "decision": "granted",
      "mechanism": "toggle_switch"
    }
  ]
}

GET /api/v1/consent/history/{subject_id} 根据第 7(1) 条,返回完整的同意历史记录,以供审计。

GET /api/v1/consent/receipt/{decision_id} 以 Kantara Initiative Consent Receipt 格式返回单条同意回执。

3. TCF v2.2 集成

IAB Transparency and Consent Framework v2.2(于 2023 年 9 月发布)要求:

  • TC String 生成:将同意信号编码为 IAB TC String 格式。TC String 是经过 base64url 编码的位字段,用于记录对 TCF 定义的目的(1-11)的同意情况和合法利益声明。
  • CMP 注册:向 IAB Europe 注册为 Consent Management Platform。每个注册的 CMP 都会获得一个唯一的 CMP ID,用于生成 TC String。
  • 供应商列表集成:使用 IAB Global Vendor List (GVL) 展示供应商级别的同意选项。GVL 发布于 vendorlist.consensu.org,每周更新。
  • 目的映射:将 CloudVault SaaS Inc. 的内部目的映射到 TCF v2.2 的目的:
    • TCF Purpose 1(在设备上存储和/或访问信息)→ Cookie 同意
    • TCF Purpose 3(创建用于个性化广告的用户画像)→ 如适用
    • TCF Purpose 7(衡量广告效果)→ 分析同意
  • 发布者限制:当 CloudVault SaaS Inc. 的政策要求时,配置发布者级别的限制,将供应商限定为仅使用同意这一法律依据。
4. UI 组件规范

CloudVault SaaS Inc. 的偏好中心界面遵循以下设计原则:

布局:

  • 可通过“设置 > 隐私 > 管理同意”访问(从任意页面最多点击 2 次)
  • 也可通过直接 URL 访问:app.cloudvault-saas.eu/settings/privacy
  • 每个页面的页脚都包含固定的“隐私选项”链接

按目的设置开关:

  • 每个目的显示:目的名称、1 句描述、当前状态(开/关切换开关)
  • “了解详情”可展开区域包含:完整描述、数据类别、接收方、保留期限
  • 切换开关后立即调用 API 并显示确认信息

同意历史记录:

  • 每个目的旁都有“查看历史记录”链接,显示:日期、操作(已授予/已撤回)、同意文本版本
  • 可下载 JSON 格式的同意回执(Kantara Consent Receipt specification v1.1)

撤回流程:

  • 点击一次切换开关即可撤回(与注册时点击一次即可授予同意一致)
  • 确认对话框:“确定要撤回对 [目的] 的同意吗?这将停止[具体处理活动]。你可以随时重新启用。”
  • 撤回后确认:“已撤回同意。处理将在 24 小时内停止。”

版本历史记录和审计跟踪

每次更改同意文本都会创建一条新版本记录。偏好中心始终显示当前版本,同时保留所有历史版本。通过审计查询可以还原:

  • 在特定时间向特定用户显示的文本
  • 每个目的的同意授予和撤回时间
  • 是否已通知下游系统同意变更
  • 每次同意变更的传播状态和时间

主要法规参考

  • GDPR 第 7(1) 条 — 证明已取得同意
  • GDPR 第 7(3) 条 — 撤回同意的权利及操作难易程度应相同的要求
  • GDPR 第 12(1) 条 — 信息应透明、易懂且易于获取
  • IAB TCF v2.2 Specification(2023 年 9 月)— TC String 编码、CMP 要求
  • Kantara Initiative Consent Receipt Specification v1.1 — 标准同意回执格式
  • EDPB Guidelines 05/2020 — Regulation 2016/679 下的同意

评论

支持 Markdown