跳到主要内容

FinClaw V1 Sub-Packet: Commercial Signal — Schema 设计与冻结

状态:Pending / 等待 sub-1 ProfileConsent 完成(提供 consent gate 字段) 日期:2026-05-16 Lane:Engineering Owner:FinClaw Controller 分发,AI Coding Agent 执行 Parent Packet:v1-commercial-signal-instrumentation-task-packet.md

1. 目标

落地 v1-commercial-signal-instrumentation-design.md §3 Event Schema 与 §4 Event Catalog(7 类事件)的代码级 schema:

  1. 定义 dataclass / pydantic schema(统一 envelope + 7 类 payload);
  2. v1-product-object-and-schema-design.md §8 ProfileConsent / §9 SensitiveInputHandling / §11 TrainingAssetCandidate 的字段对齐;
  3. 写 schema 单测(结构、枚举、允许字段、disallowed PII patterns);
  4. 实现埋点写入逻辑(由 sub-2 承接);
  5. 实现漏斗 / 留存 / 周报(由 sub-2 承接)。

本 sub-packet 是 cs-instr 切片中的 schema-only 阶段,目的是先把数据契约冻结。

2. 允许读取

见 frontmatter must_read / reference_only

3. 禁止范围

  • 不写 event_sink.write / API endpoint(sub-2 负责);
  • 不写漏斗 / cohort 查询脚本(sub-2 负责);
  • 不接入第三方分析 SaaS(design §10 Out of Scope);
  • 不在 schema 中允许任何凭证 / 卡号 / 助记词字段;
  • 不允许新增 design §4 之外的事件类型(任何新增必须先回写 design Open Items)。

4. Acceptance Criteria

AC ID验收项
AC-17 类事件 schema dataclass / pydantic 实现完整,与 design §3+§4 一一对应
AC-2envelope 字段(event_id / event_type / event_ts / user_anon_id / session_id / cohort / consent_for_trial_data / source_surface / app_version / payload)100% 必填校验
AC-3payload 中含 PII pattern(手机/邮箱/身份证/卡号/链上地址/助记词)的样例数据被 schema validator 拒绝
AC-4catalog yaml 列出全部 7 类事件 + 字段 + 允许的 source_surface
AC-5schema 单测覆盖:合法 payload 通过、非法 payload 被拒、unknown event_type 被拒
AC-6eng-impl sub-1 ProfileConsent 字段对齐(consent_for_trial_data / consent_for_training_pool / withdrawal_at)
AC-7hand-off anchor 输出包含 schema 文件 hash 供 sub-2 比对

5. 回写位置

  • Schema 实现 → 工程仓库 server/schemas/
  • Schema 测试 → 工程仓库 tests/
  • 治理库 design §11 Open Items 如有变更 → 回写 v1-commercial-signal-instrumentation-design.md
  • Hand-off anchor → handoff-anchors/v1-cs-instr-sub-1-schema-design.yaml
  • 解除依赖:cs-instr sub-2(schema 已冻结,可开始埋点 + 查询实现)、cs-instr sub-3(schema 已冻结,可开始隐私评审)。

6. 风险与裁决项

  • 风险 S-1:design §3 字段在 trial 期间需要扩展 → 必须先回写 design Open Items 再加字段(不允许 schema 与 design 漂移);
  • 风险 S-2:与 ProfileConsent 字段命名冲突 → 以 eng-impl sub-1 实现为准;
  • 裁决项 J-1:是否使用 dataclass / pydantic / msgspec 由 AI Agent 在工程仓库已有约定基础上选择,并在 hand-off anchor 中说明。

7. 与其他 Sub-Packet 的关系

  • 依赖:v1-eng-impl-sub-1-profile-consent.md(consent 字段先就绪);
  • 解除:cs-instr sub-2(埋点实现)、cs-instr sub-3(隐私评审);
  • 共享文件:server/schemas/commercial_events.py(sub-2 会引用)。