初始提交:飞球 ETL 系统全量代码
This commit is contained in:
63
tasks/utility/seed_dws_config_task.py
Normal file
63
tasks/utility/seed_dws_config_task.py
Normal file
@@ -0,0 +1,63 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
DWS配置数据初始化任务
|
||||
|
||||
功能说明:
|
||||
执行 seed_dws_config.sql,向配置表插入初始数据
|
||||
|
||||
执行前提:
|
||||
- billiards_dws schema 已创建(INIT_DWS_SCHEMA)
|
||||
- 配置表已存在
|
||||
|
||||
作者:ETL团队
|
||||
创建日期:2026-02-01
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
from tasks.base_task import BaseTask, TaskContext
|
||||
|
||||
|
||||
class SeedDwsConfigTask(BaseTask):
|
||||
"""
|
||||
DWS配置数据初始化任务
|
||||
|
||||
执行 seed_dws_config.sql 文件,向以下配置表插入初始数据:
|
||||
- cfg_performance_tier: 绩效档位配置
|
||||
- cfg_assistant_level_price: 助教等级定价
|
||||
- cfg_bonus_rules: 奖金规则配置
|
||||
- cfg_area_category: 台区分类映射
|
||||
- cfg_skill_type: 技能课程类型映射
|
||||
"""
|
||||
|
||||
def get_task_code(self) -> str:
|
||||
return "SEED_DWS_CONFIG"
|
||||
|
||||
def extract(self, context: TaskContext) -> dict[str, Any]:
|
||||
"""
|
||||
读取配置数据SQL文件
|
||||
"""
|
||||
base_dir = Path(__file__).resolve().parents[1] / "database"
|
||||
seed_path = Path(self.config.get("schema.seed_dws_file", base_dir / "seed_dws_config.sql"))
|
||||
|
||||
if not seed_path.exists():
|
||||
raise FileNotFoundError(f"未找到 DWS 配置数据文件: {seed_path}")
|
||||
|
||||
return {
|
||||
"seed_sql": seed_path.read_text(encoding="utf-8"),
|
||||
"seed_file": str(seed_path)
|
||||
}
|
||||
|
||||
def load(self, extracted: dict[str, Any], context: TaskContext) -> dict:
|
||||
"""
|
||||
执行配置数据SQL
|
||||
"""
|
||||
with self.db.conn.cursor() as cur:
|
||||
self.logger.info("执行 DWS 配置数据文件: %s", extracted["seed_file"])
|
||||
cur.execute(extracted["seed_sql"])
|
||||
|
||||
self.logger.info("DWS 配置数据初始化完成")
|
||||
return {"executed": 1, "files": [extracted["seed_file"]]}
|
||||
Reference in New Issue
Block a user