Files
Neo-ZQYY/apps/etl/connectors/feiqiu/docs/architecture/data_flow.md
Neo 80bda9b991 chore(audit): 2026-04-20 历史批次预审 + 文档同步 + .gitignore 修正
- 新增 docs/audit/changes/2026-04-20__historical-batch-pre-audit.md
  157 文件分批盘点审计(7 条主线 + 10 项高/中风险 + 2 份迁移 SQL DDL 清单)
- 补追 docs/audit/changes/2026-04-15__meituan-settle-core-sync.md
  原审计产物因 .gitignore 屏蔽长期未入仓,本次一并追回
- 刷新 docs/audit/audit_dashboard.md(33 条审计记录)
- .gitignore 白名单放行 docs/audit/changes/*.md 与 audit_dashboard.md
  同时屏蔽 changes/changes/ 嵌套误产物目录
- 新增 docs/specs/audit-gap-recovery/tasks.md
  扫描嵌套目录发现 96 份 D 类孤本(从未入过 git history),
  生成独立 PRD 供单开任务清理与补追
- 文档同步(高风险项):
  - apps/backend/docs/API-REFERENCE.md (+69)
  - apps/miniprogram/README.md (+50)
  - apps/etl/connectors/feiqiu/docs/architecture/data_flow.md (+52/-2)
  - apps/etl/connectors/feiqiu/docs/architecture/system_overview.md (+5/-3)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 06:32:58 +08:00

10 KiB
Raw Blame History

数据流向详解ODS → DWD → DWS

整体数据流

上游 SaaS API / 离线 JSON
        │
        ▼
┌───────────────────────────────────────┐
│  ODS 层ods                         │
│  操作数据存储 — 原始数据落地            │
│  保留源 payload便于回溯              │
│  23 张 ODS 表,对应 23 个 API 端点     │
└───────────────┬───────────────────────┘
                │ DWD_LOAD_FROM_ODS
                ▼
┌───────────────────────────────────────┐
│  DWD 层dwd                         │
│  明细数据 — 清洗、标准化、关联          │
│  维度表走 SCD2缓慢变化维度          │
│  事实表按时间增量写入                   │
└───────┬───────────────┬───────────────┘
        │               │ CORE_DIM_SYNC
        │ DWS 汇总任务   ▼
        │       ┌───────────────────────┐
        │       │  Core 层core      │
        │       │  跨平台统一维度层      │
        │       │  dim_assistant / dim_ │
        │       │  member / dim_site /  │
        │       │  dim_table            │
        │       └───────────────────────┘
        ▼
┌───────────────────────────────────────┐
│  DWS 层dws                         │
│  数据服务 — 汇总、指标                  │
│  助教业绩 / 财务日报 / 会员分析         │
│  工资计算                               │
└───────────────┬───────────────────────┘
                │ INDEX 指数任务
                ▼
┌───────────────────────────────────────┐
│  INDEX 层dws                       │
│  自定义指数算法                         │
│  WBI / NCI / RS / OS / MS / ML         │
│  日快照存储stat_date               │
└───────────────────────────────────────┘

ODS 层(操作数据存储)

  • Schemaods
  • 职责:从上游 SaaS API 抓取原始数据并落地,保留完整源 payload
  • 数据来源:在线 API 抓取(APIClient)或离线 JSON 回放(LocalJsonClient
  • 任务模式:每个业务实体对应一个 ODS 任务(如 ODS_PAYMENTODS_MEMBERODS_SETTLEMENT_RECORDS 等),由 BaseOdsTask + OdsTaskSpec 声明式配置驱动,通过 _build_task_class() 工厂函数动态生成任务类
  • 加载方式:_insert_records_schema_aware schema-aware 写入——运行时从 information_schema 读取目标表结构,按列名自动匹配,批量 upsert + 冲突处理(ON CONFLICT 策略可配置)

核心业务实体23 个 ODS 任务)

助教账号档案assistant_accounts_master、结账记录settlement_records、台费计费流水table_fee_transactions、助教服务流水assistant_service_records、助教废除记录assistant_cancellation_records、门店商品销售流水store_goods_sales_records、支付流水payment_transactions、退款流水refund_transactions、平台/团购券核销platform_coupon_redemption_records、会员档案member_profiles、会员储值卡member_stored_value_cards、会员余额变动member_balance_changes、充值结算recharge_settlements、团购套餐定义group_buy_packages、团购套餐核销group_buy_redemption_records、库存汇总goods_stock_summary、库存变化记录goods_stock_movements、台桌维表site_tables_master、库存商品分类树stock_goods_category_tree、门店商品档案store_goods_master、台费折扣/调账table_fee_discount_records、租户商品档案tenant_goods_master、结账小票详情settlement_ticket_details

DWD 层(明细数据)

  • Schemadwd
  • 职责:对 ODS 原始数据进行清洗、标准化、关联,生成可分析的明细数据
  • 核心任务:DWD_LOAD_FROM_ODS
  • 质量检查:DWD_QUALITY_CHECK

维度处理SCD2

维度表采用 SCD2缓慢变化维度 Type 2策略scd/ 模块处理:

  • 会员维度(dim_member
  • 助教维度(dim_assistant
  • 商品维度(dim_product
  • 台桌维度(dim_table
  • 套餐维度(dim_package

每条维度记录包含 valid_fromvalid_tois_current 字段,支持历史版本追溯。

事实表处理

事实表按时间增量写入,由 loaders/facts/ 中的加载器处理:

  • 订单事实、支付事实、退款事实、小票明细、充值结算、台费流水等

DWS 层(数据服务)

  • Schemadws
  • 职责:基于 DWD 明细数据进行汇总计算,输出业务指标和分析结果

汇总任务分类

类别 任务示例 建议频率
助教业绩 DWS_ASSISTANT_DAILYDWS_ASSISTANT_MONTHLY 每小时 / 每日
财务日报 DWS_FINANCE_DAILYDWS_FINANCE_INCOME_STRUCTURE 每小时
会员分析 DWS_MEMBER_CONSUMPTIONDWS_MEMBER_VISIT 每日
工资计算 DWS_ASSISTANT_SALARY 每月(月初)
指数算法 DWS_WINBACK_INDEXDWS_NEWCONV_INDEXDWS_RELATION_INDEX 每 2-4 小时
Core 维度同步 CORE_DIM_SYNC 每日DWD_LOAD_FROM_ODS 之后)

自定义指数算法

系统实现了六个自定义业务指数,参数存储在 dws.cfg_index_parameters

指数 全称 说明
WBI Winback Index 召回指数
NCI New Conversion Index 新客转化指数
RS Relation Score 关系评分
OS Overall Score 综合评分
MS Member Score 会员评分
ML Manual Ledger 人工台账

公共参数:percentile_lower/upper(分位截断锚点)、ewma_alpha(指数加权移动平均平滑系数)。

指数日快照2026-04 重构)

三张指数表(relation_index / winback_index / newconv_index)新增 stat_date DATE NOT NULL DEFAULT CURRENT_DATE 字段,唯一约束扩展为 (site_id, member_id[, assistant_id], stat_date)。每次任务运行追加当日快照而非覆盖历史为指数回测、历史演化分析提供原始数据基础。Winback 任务配套 365 天保留策略,清理超过 365 天的历史快照以控制表体积。

Core 维度层(跨平台统一维度)

  • Schemacore
  • 定位:跨平台统一维度层,屏蔽 ODS/DWD 多数据源(飞球 / 美团 / 后续新平台)的字段差异,供 app 视图层和业务库 FDW 统一引用
  • 核心任务:CORE_DIM_SYNC(归属 DWS 层任务目录 tasks/dws/core_dim_sync_task.py
  • 上游依赖:DWD_LOAD_FROM_ODS(必须先完成 DWD 维度表 SCD2 写入)
  • 同步范围4 张维度表 — dim_assistant / dim_member / dim_site / dim_table
  • 数据来源DWD 层 scd2_is_current = 1 的当前版本快照
  • 同步策略TRUNCATE + 全量 INSERT维度表行数较小执行时间极短避免增量合并复杂度
  • 起因:修复 app 视图在 core 维度为空时返回空结果的问题(关联审计 docs/audit/changes/2026-04-15__meituan-settle-core-sync.md

Utility 工具任务

工具任务位于 tasks/utility/,不在日常编排链路中,由手动 CLI 触发,服务于 schema 初始化、历史数据回填和回测推演等一次性或周期性离线需求。

DWS_INDEX_BACKFILL指数历史快照回填

  • 源码:tasks/utility/index_backfill_task.py
  • 职责:逐天调用三个指数任务(DWS_RELATION_INDEX / DWS_WINBACK_INDEX / DWS_NEWCONV_INDEX)生成历史日快照,回填缺失的 stat_date
  • 性能优化:三个指数任务实例在整轮回填中创建 1 次、循环 N 天复用,避免 N×3 次初始化开销(以 255 天为例避免 765 次初始化)
  • 前置条件:三张指数表已完成日快照改造(stat_date 字段 + 复合唯一约束)
  • 用途:指数算法参数调优验证、历史对照、补齐生产数据缺口
  • 关联专题P19 指数回测框架 Phase 1e

DWS_TASK_SIMULATION任务引擎历史推演

  • 源码:tasks/utility/task_simulation_task.py
  • 职责:基于指数日快照,逐天重放 task_generator + recall_detector 逻辑,还原任务的完整生命周期(生成 / 升级 / 转移 / 完成 / follow_up
  • 前置条件:需先运行 DWS_INDEX_BACKFILL 产出完整的历史指数快照作为推演输入
  • 数据库连接:额外使用业务库独立连接(APP_DB_DSN 环境变量),推演结果写入业务库任务相关表
  • 任务引擎双模式配合:task_engine.py 同期升级为双模式 — HTTP 实时模式(日常生产)+ 推演模式(回测,由 as_of_date 参数驱动),两种模式共用核心规则逻辑
  • 用途:回测验证分级分配、升级、转移规则的参数配置与边界行为
  • 关联专题P19 指数回测框架 Phase 2

ETL 管理层

  • Schemameta
  • 职责:调度元数据管理
  • 内容:游标(水位)记录、任务运行记录、调度配置
  • 关键组件:cursor_manager.py(水位管理)、run_tracker.py(运行记录)

窗口切分与补偿

大时间范围的数据抓取会按窗口切分执行,避免单次请求数据量过大:

配置项 默认值 说明
run.window_split.unit day 切分单位day / week / month / none
run.window_split.days 10 切分天数
run.window_split.compensation_hours 2 补偿小时数(处理跨窗口数据)

数据质量保障

  • DWD_QUALITY_CHECKDWD 层质量检查
  • quality/integrity_service.py:完整性检查服务(余额一致性等)
  • tasks/verification/ETL 后置校验ODS/DWD/DWS/指数校验器)