# 跨天用户轨迹与身份解析实施方案 > 适用项目:自研多语言静态网站 CMS、客户数据与运营智能系统 > 文档版本:V1.0 > 日期:2026-09-11 --- ## 1. 目标定义 系统要记录的不是孤立的 PV,而是一条可以跨会话、跨日期、在确定条件下跨设备延续的客户旅程。 例如: ```text 9 月 1 日 Google 自然搜索 → 英文产品页 → 查看案例 → 离开 9 月 2 日 直接访问 → 价格页 → 点击咨询按钮 → 未提交 9 月 7 日 邮件活动链接 → 德文白皮书页 → 下载资料 → 提交邮箱 识别发生后 将前三次经过合法授权的匿名访问关联到同一 Person 9 月 10 日 再次访问集成文档和价格页 → 意向分数上升 → 生成销售跟进任务 ``` 运营和销售最终看到: - 首次从哪里来; - 每次在什么时间访问; - 使用哪种语言、设备和渠道; - 看过哪些页面与内容; - 点击、下载、站内搜索和表单行为; - 哪一次成为已识别联系人; - 哪些行为构成高意向; - 哪次内容发布、活动或销售动作影响了后续行为; - 用户当前 consent 状态和哪些行为可以被使用。 “记录所有轨迹”在产品上应定义为:**在明确业务目的、合法处理基础和最小必要范围内,尽量完整记录预先定义的客户行为,不记录密码、表单原文、敏感输入、键盘内容或无业务价值的数据。** --- ## 2. 核心设计思想 ### 2.1 事件永久记录,画像动态计算 - 原始行为按事件追加,不能直接覆盖; - Session、Person、Account、意向分数是派生结果; - 身份规则变化后可以重算; - 错误合并可以拆分; - 删除请求可以沿身份关系传播。 ### 2.2 匿名先于实名 第一次访问通常不知道用户是谁。系统先建立假名化的匿名访客身份,用户后来登录、验证邮箱或提交表单后,再建立确定性身份关联。 ### 2.3 确定性信号优先 以下信号可作为确定性证据: - 已登录账号的内部用户 ID; - 由服务端验证成功的表单联系人 ID; - 用户点击的单人、限时、签名验证链接; - CRM 已验证联系人与登录账号的绑定; - 用户主动输入并经验证的邮箱或手机号。 以下信号不能单独作为“同一个人”的确定性证据: - IP 地址相同; - 浏览器和设备特征相似; - 公司网络出口相同; - 地理位置相似; - 浏览内容相似。 这些弱信号最多用于“候选账户”或聚合分析,不用于自动合并 Person。 ### 2.4 轨迹与隐私同一套架构 Consent 不是页面上的独立弹窗,而是采集管道的一部分。每个事件都必须知道它在什么 consent 状态和用途下被采集。 中国《个人信息保护法》要求处理具有明确、合理目的,与目的直接相关,并采取对个人权益影响最小的方式,收集范围不得超过实现目的所必需的范围。[国家市场监督管理总局:《个人信息保护法》](https://www.samr.gov.cn/wljys/gzzd/art/2023/art_3ef1e889c1e644d4b65b5f5c7f432386.html) 对欧洲用户,EDPB 说明:除技术必要 Cookie 外,在终端设备存取 Cookie 通常应在充分告知目的并取得同意后进行;假名化数据仍属于个人数据。[EDPB Cookie 与假名化说明](https://www.edpb.europa.eu/contact/frequently-asked-questions_en) 因此本方案是技术产品设计,不替代针对实际经营国家、行业和数据流向的法律评估。 --- ## 3. 四级身份模型 ```text Session 一次连续访问过程 │ many-to-one ▼ Anonymous Profile 同一浏览器中跨天延续的假名化访客 │ deterministic link ▼ Person 已确认的自然人/联系人 │ membership/relationship ▼ Account 企业、客户组织或家庭等业务账户 ``` ### 3.1 `session_id` - 表示一次访问会话; - 首次事件产生; - 连续无活动超过约定时间后产生新 Session; - 推荐以 30 分钟不活动作为默认值,但做成站点级配置; - 跨午夜不必强制断开,按实际活动间隔切分; - 一个匿名访客可以拥有多个 Session。 ### 3.2 `anonymous_id` - 128 位以上加密安全随机值,不包含邮箱、IP 或设备信息; - 在允许设置分析标识的条件下,由第一方域名签发; - 同一浏览器次日再来时继续携带,因此实现跨天串联; - 清除 Cookie、拒绝分析同意、无痕模式或更换浏览器后可能产生新 ID; - 生命周期由区域政策和 consent 决定; - 不是“匿名化数据”,而是假名化标识,仍按个人数据保护。 ### 3.3 `person_id` - 自有系统内部不可变 ID; - 不直接使用 email 作为主键; - PII 加密存入独立 Profile Vault; - 行为仓库只使用 `person_id`; - 一个 Person 可关联多个 anonymous_id 和设备; - 每条关联都必须保存证据。 ### 3.4 `account_id` - B2B 场景中的公司或组织 ID; - Person 与 Account 使用独立关系表,可表示职位、状态、来源和有效期; - 企业邮箱域名只能创建候选关系,必要时经 CRM 或人工确认; - 共享公司出口 IP 不能证明某个自然人的身份。 --- ## 4. 跨天识别流程 ### 4.1 第一次访问 ```text 请求页面 ↓ 根据地区/站点策略显示 Consent ↓ 未同意:只保留提供页面所必要的数据,或使用内存级短期会话 已同意分析:第一方 Event Gateway 签发 anonymous_id ↓ 创建 session_id ↓ 记录 page_view、来源和内容上下文 ``` 推荐由第一方 Event Gateway 通过安全 Cookie 签发随机 ID: - `Secure`; - 生产环境仅 HTTPS; - 合理的 `SameSite`; - 能使用 `HttpOnly` 时由浏览器自动随第一方采集请求发送,SDK 不读取值; - Cookie 名称不包含用户身份; - 不把 ID 暴露在 URL 参数中。 ### 4.2 第二天再次访问 ```text 浏览器携带同一 anonymous_id ↓ Event Gateway 识别已有 Anonymous Profile ↓ 因不活动时间已超过阈值,创建新 session_id ↓ 新事件追加到同一个 Anonymous Timeline ``` 因此第一天和第二天是两个 Session,但属于同一匿名访客轨迹。 ### 4.3 表单提交后识别 ```text 匿名用户提交表单 ↓ 浏览器只发送 form_id、anonymous_id/session 上下文 ↓ 表单服务端校验并保存 PII ↓ 创建 lead_id / person_id ↓ Identity Engine 创建 anonymous_id → person_id 的确定性证据边 ↓ 历史 Session 作为此 Person 的可追溯历史显示 ``` 事件数据中不保存表单字段原文;事件只保存 `lead_id`、`form_id` 和成功状态。姓名、email、电话等进入权限更严格且加密的 Profile Vault。 ### 4.4 跨设备识别 ```text 设备 A:匿名访问 → 登录/已验证表单 → Person 123 设备 B:匿名访问 → 同一账号登录/验证链接 → Person 123 ↓ 两个 anonymous_id 都以独立证据关联 Person 123 ``` 没有登录、验证或其他确定性信号时,设备 A 与设备 B 保持为两个匿名档案,不使用指纹技术强行合并。 ### 4.5 跨域问题 - 同一主域下的子域,可通过第一方 Cookie 和服务端策略统一; - 不同顶级域之间不能默认共享 Cookie; - 如业务必须跨域延续,应使用短期、签名、一次性的跳转令牌,并明确评估 consent 与安全风险; - 不在 URL 中长期传播 anonymous_id; - 多语言优先使用同一主域的 `/en/`、`/de/` 等路径,可减少身份、SEO 与运维复杂度。 --- ## 5. 事件模型 ### 5.1 标准事件信封 ```json { "event_id": "uuidv7", "event_name": "page_view", "event_version": 1, "occurred_at": "2026-09-11T08:15:22.381Z", "received_at": "2026-09-11T08:15:22.624Z", "tenant_id": "tenant_01", "site_id": "site_global", "anonymous_id": "anon_random_id", "session_id": "sess_random_id", "person_id": null, "account_id": null, "content_id": "content_product_a", "content_revision_id": "rev_42", "deployment_id": "deploy_20260911_0800", "locale": "de-DE", "page": { "url": "https://example.com/de/product-a", "canonical_url": "https://example.com/de/product-a", "title": "Product A" }, "acquisition": { "referrer_host": "www.google.com", "utm_source": null, "utm_medium": null, "utm_campaign": null }, "device": { "class": "mobile", "browser_family": "Chrome", "os_family": "Android" }, "consent_snapshot_id": "consent_abc", "purpose": "analytics", "properties": {} } ``` ### 5.2 时间字段 - `occurred_at`:浏览器实际发生时间; - `received_at`:服务器收到时间; - 同时保存 UTC,展示时按站点或用户时区转换; - 客户端时间异常时,以服务器时间降级并标记; - 迟到事件允许进入原始层,再按窗口重算 Session 和指标。 ### 5.3 核心事件目录 | 事件 | 关键属性 | 作用 | |---|---|---| | `session_start` | landing_page、referrer、campaign | 一次旅程入口 | | `page_view` | content、locale、revision、deployment | 页面访问 | | `content_engaged` | engaged_seconds、depth_bucket | 有效阅读 | | `cta_click` | cta_id、placement、target_type | 转化意图 | | `file_download` | asset_id、content_id | 资料兴趣 | | `site_search` | query_token/category、result_count | 主动需求 | | `video_progress` | asset_id、milestone | 内容消费 | | `form_start` | form_id | 漏斗开始 | | `form_validation_error` | form_id、field_key、error_code | 表单阻塞;不含字段值 | | `form_submit_success` | form_id、lead_id | 服务端真实转化 | | `form_submit_failed` | form_id、error_code | 技术失败 | | `login_success` | auth_user_id | 确定性身份信号 | | `consent_updated` | purposes、policy_version | 同意状态变化 | | `outbound_click` | destination_host、link_id | 外部去向 | | `experiment_exposure` | experiment_id、variant | 实验归因 | ### 5.4 不应采集 - 密码、验证码、银行卡、证件或健康信息; - 用户在输入框中的逐字键入内容; - 未脱敏的表单原文; - URL 中的 email、电话、token 等敏感参数; - 精确 GPS,除非有独立明确场景和授权; - 长期保存的原始 IP; - Canvas、字体、音频等隐蔽设备指纹; - 页面 DOM 全量或未经屏蔽的会话回放; - 与已声明运营目的无关的数据。 ### 5.5 事件上下文与业务属性分离 所有事件自动带公共上下文;业务组件只提交最少属性。例如 CTA 组件只调用: ```text track("cta_click", { cta_id, placement, target_type }) ``` SDK 自动补充页面、语言、内容、发布、Session 和 consent,避免不同页面各自实现后产生口径不一致。 --- ## 6. 身份关系数据模型 ### 6.1 核心表 | 表 | 关键字段 | 作用 | |---|---|---| | `anonymous_profiles` | anonymous_id、created_at、last_seen_at、consent_state | 匿名访客档案 | | `sessions` | session_id、anonymous_id、started_at、ended_at、entry、exit | 跨事件会话 | | `persons` | person_id、status、created_at | 已识别联系人主对象 | | `person_identifiers` | type、lookup_hash、encrypted_value、verified_at | email/手机号/账号标识 | | `identity_links` | source_id、target_id、evidence_type、confidence、rule_version | 可审计身份边 | | `accounts` | account_id、name、domain、status | 企业账户 | | `account_memberships` | person_id、account_id、role、valid_from、valid_to | 人与企业关系 | | `consent_records` | subject_id、purpose、state、policy_version、proof | 同意记录 | | `journey_touchpoints` | event/session、channel、campaign、content | 不可变触点 | | `identity_operations` | merge/split/delete、actor、reason、snapshot | 合并拆分审计 | ### 6.2 PII 查找方式 为支持按 email 查找并避免行为仓库出现明文: ```text 规范化 email ↓ 使用租户级密钥计算 HMAC lookup_hash ↓ 以 lookup_hash 查询是否已存在 Person ↓ 明文/可逆值使用独立密钥加密保存到 Profile Vault ``` 普通 SHA-256(email) 不足以防字典枚举,应使用带秘密密钥的 HMAC;即使是假名化结果,也按个人数据管理。 ### 6.3 身份证据边 每条 `identity_link` 至少保存: - 左右对象 ID; - 证据类型; - 证据来源; - 建立时间; - 规则版本; - 确定性或推测性; - 置信度; - 当前状态; - 创建者(系统/用户/管理员); - 撤销原因。 合并不是把旧 ID 删除,而是建立有证据的关系并计算当前视图。 --- ## 7. 身份合并与拆分规则 ### 7.1 自动合并规则 允许自动合并: - 同一内部账号成功登录; - 同一已验证邮箱产生的联系人; - 服务器验证通过的一次性个人链接; - 明确业务规则下,同一 CRM contact_id。 需要人工审核或只作为候选: - 相同企业域名; - 相同公司 IP; - 相同姓名和公司; - 相同设备特征; - 数据供应商推测。 禁止合并: - 仅因为 IP 相同; - 仅因为访问路径相似; - 仅因为地理位置相近; - 证据已过期或冲突; - consent 不允许该处理用途。 ### 7.2 共享设备处理 家庭电脑、展会平板和公司共享设备可能被多人使用: - 登录只把明确登录前、同一浏览器且符合规则的历史窗口作为候选; - 退出登录后可轮换匿名 ID,防止后续用户继续挂到前一个 Person; - 若同一匿名 ID 先后出现两个冲突的已验证 Person,不自动把两人合并; - 生成冲突事件,拆分会话并交由规则或人工处理。 ### 7.3 错误合并拆分 ```text 选择错误 Identity Link ↓ 冻结相关画像计算 ↓ 撤销关系边并记录原因 ↓ 重算 Session → Person → Account 归属 ↓ 重算归因、意向分数和受影响报表 ↓ 更新或撤销错误销售任务 ``` --- ## 8. 客户旅程时间线 ### 8.1 时间线视图 运营或销售打开一个 Person 后看到: ```text 首次接触 9/01 10:21 Google 自然搜索 / 英文站 Session 1 产品页 → 案例页 6 分钟 再次访问 9/02 16:08 Direct / 移动端 Session 2 价格页 → CTA 点击 → 表单开始未提交 4 分钟 活动回访 9/07 09:43 Email / campaign_autumn Session 3 德文白皮书 → 下载 → 表单成功 8 分钟 身份识别 9/07 09:49 anonymous_id ↔ Person 123 高意向回访 9/10 14:32 Email / 桌面端 Session 4 集成文档 → 价格页 → 联系销售 12 分钟 系统动作 意向分数 42 → 78,创建销售跟进任务 ``` ### 8.2 时间线筛选 - 日期范围; - 匿名/已识别阶段; - 渠道和活动; - 内容主题和页面; - 语言和国家; - 设备; - 高意向事件; - 转化与销售动作; - consent 允许的用途。 ### 8.3 轨迹摘要 系统自动形成可解释摘要: - 首次接触渠道; - 最近接触渠道; - 总访问天数和 Session 数; - 最近 7/30/90 天活跃度; - 最常阅读的主题; - 主要语言和地区; - 关键转化与最后转化页面; - 意向分数及贡献事件; - 数据完整度与身份置信度。 摘要不能隐藏原始证据,任何一句结论都能下钻到事件。 --- ## 9. Session、触点和归因 ### 9.1 Session 化 事件先按 `anonymous_id + occurred_at` 排序: - 第一条事件开始 Session; - 相邻事件间隔超过阈值时开始新 Session; - 显式 `session_start` 可辅助,但服务器仍校验; - 迟到事件进入后触发受影响窗口重算; - Bot、内部员工和预览流量单独标记,不混入生产转化。 ### 9.2 渠道触点 每次入口保存不可变触点: - referrer; - UTM source/medium/campaign/content/term; - Google click ID 等广告点击标识——仅在合法用途和适当保护下; - landing page; - locale、device、country; - 首次/回访标志; - 对应内容和 deployment。 ### 9.3 归因视图 同一事实可以派生多种归因,不覆盖原触点: - First touch:发现客户的渠道; - Last touch:促成当前转化的最后入口; - Last non-direct:排除直接访问后的最后有效来源; - Linear/U-shaped:运营分析模型; - Campaign influence:活动是否参与旅程; - Content influence:哪些内容在转化前被消费。 报表必须注明归因模型和回看窗口,避免不同团队使用同一“转化”名称却得出不同数字。 --- ## 10. Consent 与区域策略 ### 10.1 用途分组 建议至少分为: | Purpose | 示例 | 默认策略 | |---|---|---| | `necessary` | 安全、负载、表单提交、语言选择 | 仅限提供服务所需 | | `analytics` | 跨页/跨天访问分析、漏斗 | 按地区和法律基础控制 | | `personalization` | 根据历史行为调整内容 | 独立目的和开关 | | `marketing` | 广告归因、再营销 | 独立目的和开关 | ### 10.2 Consent 快照 每次状态变化创建不可变 `consent_snapshot_id`,事件只引用快照。快照包括: - 匿名或 Person 主体; - 各 purpose 的 granted/denied; - 政策版本; - 地区规则版本; - 展示语言; - 同意/拒绝/撤回时间; - 获取方式与证明; - 到期时间(如适用)。 ### 10.3 撤回后的流程 ```text 用户撤回 analytics ↓ 立即停止分析事件和跨天标识使用 ↓ 轮换/删除相应浏览器标识 ↓ 生成 consent_updated 审计事件 ↓ 按照适用政策删除、匿名化或限制既有明细数据 ↓ 保留必要的合规证明与不可逆聚合结果(仅在允许时) ``` 加州适用企业还需要支持知情、删除、更正、限制以及退出出售/共享等请求,并正确处理 Global Privacy Control。[California DOJ:CCPA](https://www.oag.ca.gov/privacy/ccpa) --- ## 11. 数据存储与处理架构 ```text Browser SDK / Server Events ↓ First-party Event Gateway ↓ Consent Gate → Schema Validation → PII Redaction → Dedupe ↓ ┌───────────────────────┬──────────────────────────┐ │ Raw Event Store │ Quarantine │ │ 短期、受控、可重放 │ 非法 Schema/可疑 PII │ └───────────┬───────────┴──────────────────────────┘ ↓ Validated Event Stream ┌─────┴─────────┐ ↓ ↓ ClickHouse PostgreSQL/Profile Vault 行为与聚合分析 身份、PII、Consent、审计 └─────┬─────────┘ ↓ Identity Engine / Sessionizer / Attribution / Intent ↓ Customer Timeline / Operations Center / CRM Tasks ``` ### 11.1 推荐职责 - PostgreSQL:Person、Account、Identity Link、Consent、Lead、审计; - ClickHouse:高频事件、Session 派生、漏斗、路径和聚合; - 对象存储:短期原始批次、重放和合规证据; - Redis/队列:实时处理、去重窗口和任务调度; - KMS/Vault:PII 与连接器密钥。 ### 11.2 数据保留 不把保留期写死在代码中。按区域、purpose、数据类别配置: - 浏览器匿名标识有效期; - 原始事件保留期; - Session 明细保留期; - PII 和线索保留期; - 聚合指标保留期; - Consent 和安全审计证明保留期。 到期任务必须自动执行、可审计、可重试,并覆盖备份恢复后的再次删除。具体期限由实际市场、法律基础、合同和业务必要性确认。 --- ## 12. 数据质量与覆盖率 ### 12.1 必须承认的缺口 - 用户拒绝分析同意; - Cookie 被清除或到期; - 浏览器无痕模式; - 广告拦截器; - 网络断开或页面快速关闭; - 用户跨设备但未登录/验证; - Bot 和预加载请求; - 浏览器时间错误。 因此不能承诺“识别 100% 用户、记录 100% 行为”。系统应展示: - 事件发送成功率; - consent 覆盖率; - 匿名档案持续天数分布; - 已识别 Lead 的历史轨迹覆盖率; - 身份合并率和冲突率; - 客户端与服务端转化差异; - Bot/内部流量比例; - SDK 和 Schema 版本分布。 ### 12.2 服务端确认关键转化 浏览器的 `form_submit_click` 只是用户点击,不是成功线索。真相流程应是: ```text 浏览器提交 ↓ 服务端校验 ↓ 事务性写入 Lead ↓ 服务端发出 form_submit_success + lead_id ↓ 浏览器成功页面只作为辅助证据 ``` 这能避免刷新、重复点击、网络错误和拦截器造成虚假转化。 --- ## 13. 运营应用 跨天轨迹完成后,运营智能中心可以提供: ### 13.1 客户旅程分析 - 转化前平均访问天数和 Session 数; - 常见页面序列; - 首次内容与最终转化内容; - 不同语言、渠道和客户类型的旅程; - 哪一步最容易流失; - 回访频率与转化关系。 ### 13.2 高意向发现 示例评分: ```text 30 天内再次访问 +10 访问价格页 +15 访问集成/实施文档 +12 下载白皮书 +15 提交咨询 +30 7 天无活动 -8 仅浏览招聘/隐私页面 0 Bot 或内部员工 排除 ``` 每一分都要能回到具体事件;评分只做排序,不应直接作出对个人有重大影响的自动决定。 ### 13.3 内容运营 - 哪些内容经常出现在高质量线索转化前; - 哪些页面带来回访但不直接转化; - 哪个语言版本的旅程中断最多; - 哪次 CMS 发布影响了后续浏览和表单; - 内容影响力不再只按最后一次页面判断。 ### 13.4 销售提示 当已识别联系人近期出现高意向时,生成一张简洁卡片: ```text 联系人:Person 123(权限允许时显示姓名/公司) 最近活跃:2 小时前 30 天:4 个访问日、7 个 Session、18 个有效页面 主要兴趣:ERP 集成、价格、德国交付 高意向证据:两次价格页、下载方案、提交咨询 建议:由 DACH 销售在 1 个工作日内跟进 ``` 不应把未经验证的匿名访客身份直接发送给销售。 轨迹进入销售应用后,还需要构建 Person/Account 统一画像,将 Fit、Engagement、Intent 和 Reach 分开计算,并连接购买阶段、Buying Committee、商机、报价和订单结果。完整销售转化设计见同目录:`客户画像与销售转化实施方案.md`。 --- ## 14. API 与服务边界 建议拆分为: ```text tracking-sdk event-gateway schema-registry consent-service session-service identity-engine profile-vault journey-query-service attribution-service intent-service privacy-request-service ``` 关键 API: - `POST /v1/events/batch`:批量事件; - `POST /v1/identify`:服务端提交已验证身份关联; - `POST /v1/consents`:记录或更新 consent; - `GET /v1/persons/{id}/timeline`:权限过滤后的时间线; - `POST /v1/identity-links/{id}/revoke`:撤销错误关系; - `POST /v1/privacy-requests`:访问/导出/删除请求; - `GET /v1/data-quality/identity`:身份覆盖和冲突指标。 `/identify` 不接受浏览器随意声明 `person_id`。它必须由登录服务、表单服务或受信后端用服务凭据调用,防止恶意用户把自己的轨迹绑定到他人。 --- ## 15. 分阶段实施 ### T0:业务问题、事件和合规合同(2 周) **流程** 1. 列出需要回答的客户旅程问题; 2. 定义 20~30 个核心事件; 3. 为每个事件定义目的、属性、Owner 和保留策略; 4. 定义匿名、识别、合并、拆分与删除规则; 5. 完成区域 consent 决策矩阵和隐私评估; 6. 确定时间线原型和角色权限。 **效果**:避免“先全埋点、以后再想怎么用”的数据垃圾。 ### T1:匿名跨天主链(3~4 周) **流程** 1. 开发浏览器 SDK 与第一方 Event Gateway; 2. 签发 anonymous_id; 3. 实现 session_id 和跨天 Session; 4. 附加 content、locale、revision、deployment; 5. 完成 Schema、去重、Bot/内部流量和数据质量; 6. 建立匿名访客时间线。 **验收**:同一测试浏览器隔日访问产生两个 Session、一个 Anonymous Profile;拒绝 consent 时行为符合区域策略。 ### T2:表单识别与历史关联(3~4 周) **流程** 1. 建设 Person/Profile Vault; 2. 表单成功后由服务端创建 Person/Lead; 3. 创建确定性 Identity Link; 4. 历史匿名 Session 显示在 Person 时间线; 5. 实现冲突、拆分和重算; 6. 实现角色级 PII 权限。 **验收**:测试用户第三次访问提交表单后,可以看到前三次合规轨迹;另一个共享设备用户不会被错误合并。 ### T3:跨设备、账户与运营使用(3~5 周) **流程** 1. 接入登录、验证链接和 CRM contact_id; 2. 实现多个 anonymous_id 到 Person; 3. 实现 Person 到 Account; 4. 建设 Journey、归因和意向评分; 5. 接入运营中心和销售任务; 6. 建设效果与数据质量报表。 **验收**:跨设备只通过确定性证据合并;每条高意向结论可以下钻到事件。 ### T4:隐私请求和生产强化(2~3 周) **流程** 1. 实现访问、导出、删除、更正和撤回; 2. 实现保留期任务; 3. 对事件属性进行 PII 扫描; 4. 完成越权、伪造 identify、重放和流量攻击测试; 5. 建立泄露响应和身份规则变更审计; 6. 压测采集与时间线查询。 **验收**:隐私请求能覆盖事件、身份、PII、派生画像和下游任务;所有操作可审计。 匿名跨天 + 表单识别的 MVP 约需 8~10 周,可与 CMS 页面和运营中心并行开发;跨设备、账户、隐私自动化完整版本约需 12~16 周,取决于登录、CRM 与合规范围。 --- ## 16. 测试场景 至少覆盖以下端到端场景: 1. 同一浏览器第一天访问、第二天回访:一个 anonymous_id、两个 Session; 2. 第三天提交表单:历史事件关联到 Person; 3. 同一 Person 在另一设备登录:两个 anonymous_id 关联同一 Person; 4. 同一共享设备出现两个登录账号:不合并两个 Person; 5. 用户拒绝 analytics:不建立被禁止的跨天分析标识; 6. 用户先同意后撤回:停止采集并执行配置的既有数据处理; 7. Cookie 清除:创建新匿名档案,不使用指纹重连; 8. 事件重复发送:`event_id` 去重; 9. 离线事件延迟到达:Session 和归因正确重算; 10. 表单点击但服务端失败:不计成功线索; 11. URL 带 email/token:采集前清洗; 12. SDK 发送未知属性:隔离并通知事件 Owner; 13. 错误 Identity Link 被撤销:时间线、归因和评分重算; 14. 删除请求:PII、事件关联和下游数据在 SLA 内完成处理; 15. CMS 发布后访问:每个事件能对应内容版本和 deployment。 --- ## 17. 验收指标 ### 采集 - 核心事件 Schema 合规率 ≥ 99%; - 重复事件不重复计数; - 核心转化由服务端确认比例 100%; - 事件端到端可见时间 P95 ≤ 60 秒; - SDK 对前台性能影响达到既定预算。 ### 身份 - 所有 Person 合并都有可审计证据; - 任何 Identity Link 均可撤销和重算; - 已识别 Web Lead 中,至少 80% 能看到留资前轨迹——以 consent 和标识覆盖率允许为前提; - 身份冲突率、自动合并率和人工修正率可见; - 不以 IP 或设备指纹作确定性 Person 合并。 ### 业务 - 可计算转化前访问天数、Session 数和内容序列; - 可按语言、渠道、内容和 Account 查看旅程; - 高意向提示全部带事件证据; - 内容发布可以关联后续访问与转化变化; - 销售可以看到权限范围内的首次来源、最近行为和兴趣主题。 ### 隐私与安全 - Consent 拒绝和撤回在采集链路立即生效; - 密码和敏感表单内容进入分析仓库的数量为零; - PII 与行为事件隔离并加密; - 导出、删除、拆分和管理员查看均有审计; - 多租户身份与事件访问隔离测试通过。 --- ## 18. 最终结论 跨天用户轨迹的正确主链是: ```text 第一天匿名访问 → 第一方 anonymous_id → 多个跨天 Session → 表单/登录产生确定性身份 → Identity Link 连接历史匿名行为 → Person / Account 时间线 → 漏斗、归因和意向评分 → 运营或销售任务 → 效果复盘 ``` 这套能力应该从 CMS 第一阶段就进入技术契约,因为每个事件必须携带 `content_id + locale + revision_id + deployment_id`。只有这样,未来才能回答的不只是“这个用户来过几次”,还包括“他在哪次内容发布后、通过什么渠道、看了哪个语言版本、完成了什么行为,以及应该采取什么下一步动作”。 --- ## 参考资料 1. [中华人民共和国个人信息保护法——国家市场监督管理总局](https://www.samr.gov.cn/wljys/gzzd/art/2023/art_3ef1e889c1e644d4b65b5f5c7f432386.html) 2. [中华人民共和国个人信息保护法——中央网信办](https://www.cac.gov.cn/2021-08/20/c_1631050028355286.htm) 3. [EDPB:Cookies、Consent、Pseudonymisation FAQ](https://www.edpb.europa.eu/contact/frequently-asked-questions_en) 4. [EDPB:Guidelines 05/2020 on consent](https://www.edpb.europa.eu/documents/guideline/guidelines-052020-on-consent-under-regulation-2016679_en) 5. [California DOJ:CCPA](https://www.oag.ca.gov/privacy/ccpa)