# 实现计划:ETL 全流程前后端联调(etl-fullstack-integration) ## 概述 基于 `admin-web-console` 已完成的前后端代码,进行端到端联调验证。通过后端 API 提交 api_full 全流程 ETL 任务(自定义窗口 2025-11-01~2026-02-20,30天切分,force-full,全选常用任务),实时监控执行过程,收集性能数据,最终生成综合报告。 ## 任务 - [ ] 1. 服务启动与健康检查 - [ ] 1.1 启动后端服务(`apps/backend/`,uvicorn :8000),确认 API 可达 - 启动 `uvicorn app.main:app --host 0.0.0.0 --port 8000`,cwd 为 `apps/backend/` - 验证 `GET /api/tasks/flows` 返回 200 - _Requirements: 1.1_ - [ ] 1.2 启动前端服务(`apps/admin-web/`,pnpm dev :5173),确认页面可访问 - 启动 `pnpm dev`,cwd 为 `apps/admin-web/` - 验证 `http://localhost:5173` 可达 - _Requirements: 1.2_ - [ ] 1.3 API 健康检查:登录获取 JWT,验证任务注册表,执行 sync-check - `POST /api/auth/login` 使用默认管理员账号(admin / admin123),获取 JWT - `GET /api/tasks/registry` 确认返回非空任务列表 - `GET /api/tasks/sync-check` 确认 `in_sync=true`(后端注册表与 ETL 真实注册表一致) - 如果 sync-check 不一致,记录差异并向用户报告 - _Requirements: 1.3, 1.4, 1.5_ - [ ] 2. 全流程任务提交 - [ ] 2.1 构建 TaskConfig 并调用 validate 预览 CLI 命令 - 构建 TaskConfig:flow=api_full, 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, force_full=True, tasks=全选 is_common=True 的任务 - 调用 `POST /api/tasks/validate` 验证配置有效 - 记录生成的 CLI 命令预览,确认参数完整(--flow api_full --processing-mode full_window --window-start ... --window-end ... --window-split day --window-split-days 30 --force-full --store-id 1 --tasks ...) - _Requirements: 2.1_ - [ ] 2.2 提交任务执行(`POST /api/execution/run`),记录 execution_id - 调用 `POST /api/execution/run` 提交任务 - 记录返回的 execution_id - 确认任务状态变为 running - _Requirements: 2.2, 2.4_ - [ ] 3. 执行监控与 DEBUG - [ ] 3.1 启动监控循环:每 30 秒轮询状态和日志,检测错误/警告,最长等待 30 分钟 - 轮询 `GET /api/execution/queue` 检查任务状态 - 轮询 `GET /api/execution/{id}/logs` 获取增量日志 - 检测日志中的 ERROR / CRITICAL / Traceback / Exception / WARNING - 记录每次轮询的时间戳和日志增量行数 - 如果连续 30 分钟无新日志输出,报告超时警告 - 任务完成(success/failed/cancelled)时停止轮询 - _Requirements: 3.1, 3.2, 3.3, 3.4, 3.5_ - [ ] 3.2 对执行过程中发现的错误/警告进行 DEBUG 分析 - 收集所有 ERROR 和 WARNING 日志行及其上下文(前后各 5 行) - 分析错误类型:API 超时、数据库连接、数据质量、配置问题等 - 如果任务失败,获取完整 stderr 并分析根因 - 记录 DEBUG 发现到报告中 - _Requirements: 3.2, 3.5_ - [ ] 4. 性能计时与报告生成 - [ ] 4.1 解析执行日志,提取精细计时数据 - 从日志中提取每个窗口切片(30天)的开始/结束时间 - 计算每个切片的耗时 - 识别 ODS / DWD / DWS / INDEX 各阶段的耗时 - 标注 Top-5 耗时最长的阶段/任务 - _Requirements: 4.1, 4.2, 4.3, 4.4_ - [ ] 4.2 生成综合联调报告,输出到 SYSTEM_LOG_ROOT - 报告包含:执行概要(参数、时间、退出码) - 报告包含:性能报告(各切片耗时对比、Top-5 瓶颈) - 报告包含:DEBUG 报告(如有错误/警告) - 输出路径:`{SYSTEM_LOG_ROOT}/{date}__etl_integration_report.md` - 路径通过 `SYSTEM_LOG_ROOT` 环境变量获取,缺失时报错 - _Requirements: 5.1, 5.2, 5.3, 5.4_ - [ ] 5. 服务清理 - [ ] 5.1 停止后端和前端服务,清理资源 - 停止 uvicorn 进程 - 停止 pnpm dev 进程 - 报告联调完成状态 ## 说明 - 本 Spec 为运维联调任务,不涉及新功能代码开发 - 不编写属性测试或单元测试,联调本身即为集成验证 - 全选常用任务 = 任务注册表中 `is_common=True` 的所有任务(共 41 个) - "全部门店":当前系统仅有 site_id=1(默认管理员绑定),如需多门店需逐个执行 - 监控允许空闲等待,最长 30 分钟无新日志才报超时 - 报告输出路径遵循 export-paths 规范,通过 SYSTEM_LOG_ROOT 环境变量获取