127 lines
5.5 KiB
Python
127 lines
5.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""任务注册表"""
|
|
from tasks.orders_task import OrdersTask
|
|
from tasks.payments_task import PaymentsTask
|
|
from tasks.members_task import MembersTask
|
|
from tasks.products_task import ProductsTask
|
|
from tasks.tables_task import TablesTask
|
|
from tasks.assistants_task import AssistantsTask
|
|
from tasks.packages_task import PackagesDefTask
|
|
from tasks.refunds_task import RefundsTask
|
|
from tasks.coupon_usage_task import CouponUsageTask
|
|
from tasks.inventory_change_task import InventoryChangeTask
|
|
from tasks.topups_task import TopupsTask
|
|
from tasks.table_discount_task import TableDiscountTask
|
|
from tasks.assistant_abolish_task import AssistantAbolishTask
|
|
from tasks.ledger_task import LedgerTask
|
|
from tasks.ods_tasks import ODS_TASK_CLASSES
|
|
from tasks.manual_ingest_task import ManualIngestTask
|
|
from tasks.payments_dwd_task import PaymentsDwdTask
|
|
from tasks.members_dwd_task import MembersDwdTask
|
|
from tasks.init_schema_task import InitOdsSchemaTask
|
|
from tasks.init_dwd_schema_task import InitDwdSchemaTask
|
|
from tasks.dwd_load_task import DwdLoadTask
|
|
from tasks.ticket_dwd_task import TicketDwdTask
|
|
from tasks.dwd_quality_task import DwdQualityTask
|
|
from tasks.ods_json_archive_task import OdsJsonArchiveTask
|
|
from tasks.check_cutoff_task import CheckCutoffTask
|
|
from tasks.init_dws_schema_task import InitDwsSchemaTask
|
|
from tasks.dws_build_order_summary_task import DwsBuildOrderSummaryTask
|
|
from tasks.data_integrity_task import DataIntegrityTask
|
|
from tasks.seed_dws_config_task import SeedDwsConfigTask
|
|
|
|
# DWS 层任务导入
|
|
from tasks.dws import (
|
|
AssistantDailyTask,
|
|
AssistantMonthlyTask,
|
|
AssistantCustomerTask,
|
|
AssistantSalaryTask,
|
|
AssistantFinanceTask,
|
|
MemberConsumptionTask,
|
|
MemberVisitTask,
|
|
FinanceDailyTask,
|
|
FinanceRechargeTask,
|
|
FinanceIncomeStructureTask,
|
|
FinanceDiscountDetailTask,
|
|
DwsRetentionCleanupTask,
|
|
# 指数算法任务
|
|
RecallIndexTask,
|
|
IntimacyIndexTask,
|
|
)
|
|
|
|
class TaskRegistry:
|
|
"""任务注册和工厂"""
|
|
|
|
def __init__(self):
|
|
self._tasks = {}
|
|
|
|
def register(self, task_code: str, task_class):
|
|
"""注册任务类"""
|
|
self._tasks[task_code.upper()] = task_class
|
|
|
|
def create_task(self, task_code: str, config, db_connection, api_client, logger):
|
|
"""创建任务实例"""
|
|
task_code = task_code.upper()
|
|
if task_code not in self._tasks:
|
|
raise ValueError(f"未知的任务类型: {task_code}")
|
|
|
|
task_class = self._tasks[task_code]
|
|
return task_class(config, db_connection, api_client, logger)
|
|
|
|
def get_all_task_codes(self) -> list:
|
|
"""获取所有已注册的任务代码"""
|
|
return list(self._tasks.keys())
|
|
|
|
|
|
# 默认注册表
|
|
default_registry = TaskRegistry()
|
|
default_registry.register("PRODUCTS", ProductsTask)
|
|
default_registry.register("TABLES", TablesTask)
|
|
default_registry.register("MEMBERS", MembersTask)
|
|
default_registry.register("ASSISTANTS", AssistantsTask)
|
|
default_registry.register("PACKAGES_DEF", PackagesDefTask)
|
|
default_registry.register("ORDERS", OrdersTask)
|
|
default_registry.register("PAYMENTS", PaymentsTask)
|
|
default_registry.register("REFUNDS", RefundsTask)
|
|
default_registry.register("COUPON_USAGE", CouponUsageTask)
|
|
default_registry.register("INVENTORY_CHANGE", InventoryChangeTask)
|
|
default_registry.register("TOPUPS", TopupsTask)
|
|
default_registry.register("TABLE_DISCOUNT", TableDiscountTask)
|
|
default_registry.register("ASSISTANT_ABOLISH", AssistantAbolishTask)
|
|
default_registry.register("LEDGER", LedgerTask)
|
|
default_registry.register("TICKET_DWD", TicketDwdTask)
|
|
default_registry.register("MANUAL_INGEST", ManualIngestTask)
|
|
default_registry.register("PAYMENTS_DWD", PaymentsDwdTask)
|
|
default_registry.register("MEMBERS_DWD", MembersDwdTask)
|
|
default_registry.register("INIT_ODS_SCHEMA", InitOdsSchemaTask)
|
|
default_registry.register("INIT_DWD_SCHEMA", InitDwdSchemaTask)
|
|
default_registry.register("DWD_LOAD_FROM_ODS", DwdLoadTask)
|
|
default_registry.register("DWD_QUALITY_CHECK", DwdQualityTask)
|
|
default_registry.register("ODS_JSON_ARCHIVE", OdsJsonArchiveTask)
|
|
default_registry.register("CHECK_CUTOFF", CheckCutoffTask)
|
|
default_registry.register("DATA_INTEGRITY_CHECK", DataIntegrityTask)
|
|
default_registry.register("INIT_DWS_SCHEMA", InitDwsSchemaTask)
|
|
default_registry.register("SEED_DWS_CONFIG", SeedDwsConfigTask)
|
|
default_registry.register("DWS_BUILD_ORDER_SUMMARY", DwsBuildOrderSummaryTask)
|
|
|
|
# DWS 层业务任务
|
|
default_registry.register("DWS_ASSISTANT_DAILY", AssistantDailyTask)
|
|
default_registry.register("DWS_ASSISTANT_MONTHLY", AssistantMonthlyTask)
|
|
default_registry.register("DWS_ASSISTANT_CUSTOMER", AssistantCustomerTask)
|
|
default_registry.register("DWS_ASSISTANT_SALARY", AssistantSalaryTask)
|
|
default_registry.register("DWS_ASSISTANT_FINANCE", AssistantFinanceTask)
|
|
default_registry.register("DWS_MEMBER_CONSUMPTION", MemberConsumptionTask)
|
|
default_registry.register("DWS_MEMBER_VISIT", MemberVisitTask)
|
|
default_registry.register("DWS_FINANCE_DAILY", FinanceDailyTask)
|
|
default_registry.register("DWS_FINANCE_RECHARGE", FinanceRechargeTask)
|
|
default_registry.register("DWS_FINANCE_INCOME_STRUCTURE", FinanceIncomeStructureTask)
|
|
default_registry.register("DWS_FINANCE_DISCOUNT_DETAIL", FinanceDiscountDetailTask)
|
|
default_registry.register("DWS_RETENTION_CLEANUP", DwsRetentionCleanupTask)
|
|
|
|
# DWS 指数算法任务
|
|
default_registry.register("DWS_RECALL_INDEX", RecallIndexTask)
|
|
default_registry.register("DWS_INTIMACY_INDEX", IntimacyIndexTask)
|
|
|
|
for code, task_cls in ODS_TASK_CLASSES.items():
|
|
default_registry.register(code, task_cls)
|