跳转到内容

01-data-engineering-overview

Yomiya 只读产品分析数据工程说明

Section titled “Yomiya 只读产品分析数据工程说明”

分析流水线已将 MySQL、Server Log、GA4 和 D1 的现有只读数据统一为五张聚合表和 四份发现报告,并补上观察资格、风险集匹配、订阅时点状态、隐私抑制和可验证 provenance。

当前状态仍是 not_decision_grade。这套包可用于描述覆盖、历史关联和测量缺口, 不能直接驱动产品行为修改。

flowchart LR
    A["yomiya-service 既有只读 MCP 配置"] --> B["Root 分析实现"]
    C["GA4 Metadata-first"] --> B
    D["Cloudflare D1 SELECT"] --> B
    B --> E["进程内用户级关联"]
    E --> F["仅聚合 CSV / JSON / Markdown"]
    F --> G["方法学验证 347 checks + 12 tests"]
    G --> H["Root 快照哈希与隐私验证"]

Root 保存分析实现和聚合快照;MCP 的认证、SSH 和数据库只读账号仍由 yomiya-service 本地配置负责。分析不依赖写入型 Admin MCP,也不要求把查询接口 加入产品服务。

数据源读取内容约束当前状态
MySQL Readonly MCP内容、阅读、收藏、讲解、推送、用户、导入、额度、RevenueCat只读 allowlist;keyset pagination;有上限ok,grant 已验证只读
Server Log Access MCPfeatured request/response 与后续详情请求只访问允许目录;不保存原文partial,157 个目标响应均截断
GA4 Data APIMetadata、事件及支持的聚合维度Metadata-first;小 cell 抑制ok
Cloudflare D1RevenueCat 聚合事件与原币种收入固定 SELECTrows_written=0ok,低计数组移除
GitHub 代码与文档字段、DTO、事件和查询语义只读审查已纳入口径

每个行为源分别记录最早和最近有效时间。对每个用户、索引日和窗口判断:

  • complete
  • left_censored
  • right_censored
  • left_and_right_censored
  • unavailable

只有完整窗口进入该行为的分母。未开始采集、停止更新和真正没有行为不再共用一个 数值 0。

  • 购买时点为首次可关联的生产 INITIAL_PURCHASE
  • 每个买家在其购买时点建立风险集;当时尚未购买的人可作为对照,未来购买者不会 永久排除。
  • 匹配为不复用 1:1 greedy matching,使用 caliper。
  • 基线协变量结束于待测暴露窗口之前,避免窗口重叠。
  • 输出匹配前后最大绝对 SMD、对照复用、有效样本量、p 值和 Benjamini-Hochberg FDR。
  • 零暴露、无 discordant pair、小隐私 cell、无匹配或失衡时返回 not_estimable,不生成 OR。

目前保留的候选仍只是历史关联,不是因果估计。

D30/D60/D90 entitlement 仅使用该时点之前已发生的事件重建。更晚的续订或重新 订阅不能改写过去状态。额度改为“用户 × 完整计费周期 × 资源”粒度,区分 bounded 与 unbounded,并输出分位数和达限比例;不再把所有周期合并为 pooled used/limit

内容 cohort 是观察窗内实际被打开、收藏、讲解、推送或首页交付的可见内容, 不要求内容在 90 天内发布。由于目前没有跨内容可比较的 delivered exposure 分母,attraction score 只输出描述性分桶,不输出“校准通过”、单调性结论或异常 内容标签。

GA4 保存 property timezone、sampling、thresholding、data-loss、API rowCount 和 拆分对账状态;低于 5 名用户的 cell 被抑制,动态页面路径被模板化。GA4 拆分与 全局事件无法对账时明确保留 not_reconciled,不得把它解释为用户漏斗。

D1 低于 5 个事件的聚合行整行移除,不保存精确事件时间。存在被移除分组时,收入 只表示可发布下界并标为 partial。

  • Server Log:安全复用未变化且确认没有完整 featured body 的文件聚合缓存;缓存 与可见文件集合分别使用 SHA-256 对账。
  • MySQL:限定窗口重算。去重、首次购买、滚动随访与风险集匹配不可安全相加。
  • GA4:每轮重新 Metadata-first 查询;totalUsers 不按日相加。
  • D1:每轮重跑小型只读聚合。

这是安全的混合增量,不是用户级数据仓库。

运行时验证器包含 347 项实际检查,覆盖:

  • 必需文件、行数和统一 analysis_as_of
  • MySQL allowlist、只读 grant 与查询执行回执;
  • GA4 Metadata-first、隐私、报表元数据与拆分对账;
  • D1 零写入、隐私阈值与时间粗化;
  • Server Log 文件集合、缓存集合、时区和截断状态;
  • 来源观察资格、风险集、匹配平衡、FDR 与结构性零;
  • 订阅时点状态、完整额度周期、内容 cohort 和 attribution score 边界;
  • 脚本与聚合产物 SHA-256;
  • 敏感字段、原始日志和原始标识扫描。

独立 Node 测试另覆盖 12 个方法学反例。Root 包级验证器再检查冻结快照哈希、 manifest、工程脚本哈希和隐私。检查数量不再被宣传为方法正确性的替代证据。

  • 首页模块和 random source 表现:完整 featured body 为 0。
  • 首页 viewable impression:只有服务端 delivered 证据。
  • Basic 是否应隐藏、额度是否合理、Podcast 预览长度:数据不具决策级覆盖。
  • PDF 购买路径:缺少稳定且完整的用户级链路。
  • 哪个 paywall trigger 转化最好:GA4 聚合不能连接 RevenueCat 用户,且拆分未全部 对账。
  • attraction score 是否校准有效:缺少可比较曝光分母。
  1. MySQL 是 yomiya-staging,尚未证明为生产镜像。
  2. access log 只覆盖约 7 天,且 157 个目标响应均源端截断。
  3. RevenueCat 事件关联率 67.5%,不是人员级用户关联率;去重身份引用映射率为 52.0%,alias 解析仍不完整。
  4. GA4 与 D1 只能发布聚合,不能反向连接购买用户。
  5. 多币种收入没有授权汇率策略。
  6. PDF 与 Podcast 学习层行为不可用。
  7. MySQL 跨表使用统一 as-of 和 keyset pagination,但不是事务一致性快照。