This commit is contained in:
Neo
2026-02-04 21:39:01 +08:00
parent ee773a9b52
commit a3f4d04335
148 changed files with 31455 additions and 182 deletions

View 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 .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"]]}