Files

4.8 KiB
Raw Permalink Blame History

设计文档ETL 全流程前后端联调etl-fullstack-integration

概述

本 Spec 是一个运维联调任务,不涉及新功能开发。目标是验证 admin-web-console Spec 产出的前后端代码在真实环境下的端到端正确性,同时收集性能数据。

核心流程:

  1. 启动后端 + 前端服务
  2. 通过 API 登录获取 JWT
  3. 提交全流程 ETL 任务api_full, full_window, force-full, 全选常用任务, 自定义窗口 2025-11-01~2026-02-20, 30天切分, 全部门店)
  4. 实时监控执行过程,捕获错误/警告
  5. 执行完成后生成综合报告

架构

联调脚本 (scripts/ops/)
    │
    ├── 1. 启动服务
    │   ├── uvicorn app.main:app (后端 :8000)
    │   └── pnpm dev (前端 :5173)
    │
    ├── 2. API 调用链
    │   ├── POST /api/auth/login → JWT
    │   ├── GET /api/tasks/registry → 任务列表
    │   ├── GET /api/tasks/sync-check → 同步检查
    │   ├── POST /api/tasks/validate → CLI 预览
    │   └── POST /api/execution/run → 触发执行
    │
    ├── 3. 监控循环
    │   ├── GET /api/execution/queue → 状态轮询
    │   ├── GET /api/execution/{id}/logs → 日志获取
    │   └── 错误/警告检测
    │
    └── 4. 报告生成
        └── 输出到 SYSTEM_LOG_ROOT

任务参数

根据用户需求,联调任务的具体参数:

INTEGRATION_TASK_CONFIG = {
    "flow": "api_full",                    # 全流程API → ODS → DWD → DWS → INDEX
    "processing_mode": "full_window",      # 全窗口处理
    "window_mode": "custom",               # 自定义时间范围
    "window_start": "2025-11-01 00:00",
    "window_end": "2026-02-20 00:00",
    "window_split": "day",                 # 按天切分
    "window_split_days": 30,               # 30天一个切片
    "force_full": True,                    # 强制全量
    "dry_run": False,
    "tasks": [                             # 全选 is_common=True 的任务
        # ODS 层22 个)
        "ODS_ASSISTANT_ACCOUNT", "ODS_ASSISTANT_LEDGER", "ODS_ASSISTANT_ABOLISH",
        "ODS_SETTLEMENT_RECORDS", "ODS_TABLE_USE", "ODS_TABLE_FEE_DISCOUNT",
        "ODS_TABLES", "ODS_PAYMENT", "ODS_REFUND", "ODS_PLATFORM_COUPON",
        "ODS_MEMBER", "ODS_MEMBER_CARD", "ODS_MEMBER_BALANCE", "ODS_RECHARGE_SETTLE",
        "ODS_GROUP_PACKAGE", "ODS_GROUP_BUY_REDEMPTION",
        "ODS_INVENTORY_STOCK", "ODS_INVENTORY_CHANGE",
        "ODS_GOODS_CATEGORY", "ODS_STORE_GOODS", "ODS_STORE_GOODS_SALES", "ODS_TENANT_GOODS",
        # DWD 层1 个常用)
        "DWD_LOAD_FROM_ODS",
        # DWS 层15 个常用,排除 DWS_MAINTENANCE
        "DWS_BUILD_ORDER_SUMMARY", "DWS_ASSISTANT_DAILY", "DWS_ASSISTANT_MONTHLY",
        "DWS_ASSISTANT_CUSTOMER", "DWS_ASSISTANT_SALARY", "DWS_ASSISTANT_FINANCE",
        "DWS_MEMBER_CONSUMPTION", "DWS_MEMBER_VISIT",
        "DWS_FINANCE_DAILY", "DWS_FINANCE_RECHARGE", "DWS_FINANCE_INCOME_STRUCTURE",
        "DWS_FINANCE_DISCOUNT_DETAIL",
        "DWS_GOODS_STOCK_DAILY", "DWS_GOODS_STOCK_WEEKLY", "DWS_GOODS_STOCK_MONTHLY",
        # INDEX 层3 个常用,排除 DWS_ML_MANUAL_IMPORT
        "DWS_WINBACK_INDEX", "DWS_NEWCONV_INDEX", "DWS_RELATION_INDEX",
    ],
    # store_id 由后端从 JWT 注入(默认管理员 site_id=1
    # 注意:用户要求"全部门店",但当前系统只有 site_id=1后续多门店需逐个执行
}

监控策略

  • 轮询间隔30 秒
  • 最长等待30 分钟(无新日志输出时)
  • 错误检测:日志行匹配 ERRORCRITICALTracebackException
  • 警告检测:日志行匹配 WARNINGWARN
  • 计时解析:从日志中提取时间戳,计算阶段耗时

报告格式

报告输出为 Markdown 文件,路径:{SYSTEM_LOG_ROOT}/{date}__etl_integration_report.md

# ETL 全流程联调报告

## 执行概要
- 任务参数:...
- 开始时间 / 结束时间 / 总时长
- 退出码 / 最终状态

## 性能报告
- 各窗口切片耗时对比表
- Top-5 耗时阶段
- 总体吞吐量估算

## DEBUG 报告(如有)
- 错误摘要
- 警告摘要
- 相关日志片段
- 可能的原因分析

正确性属性

本 Spec 为运维联调任务,不涉及新功能代码开发,因此不定义形式化的属性测试。验证通过以下方式进行:

  • 服务健康检查通过
  • 任务提交成功并开始执行
  • 执行完成后退出码和日志符合预期
  • 报告文件成功生成

测试策略

本 Spec 本身就是一次集成测试。不额外编写单元测试或属性测试。验证标准:

  • 后端 API 响应正确
  • ETL CLI 子进程正常启动和执行
  • 日志正确捕获和推送
  • 报告文件正确生成到 SYSTEM_LOG_ROOT