更新20260201-1

This commit is contained in:
Neo
2026-02-01 22:04:15 +08:00
parent 076f5755ca
commit 9b2c2c5c78
20 changed files with 32463 additions and 408 deletions

View File

@@ -26,28 +26,45 @@ from ..utils.app_settings import app_settings
from ..workers.task_worker import TaskWorker
# 可调度的任务列表(包含所有 ODS 任务 + DWD/质量检查任务)
SCHEDULABLE_TASKS = [
# ODS 数据抓取任务(与 task_panel.AUTO_UPDATE_TASKS 保持一致)
("ODS_PAYMENT", "支付流水"),
("ODS_MEMBER", "会员档案"),
("ODS_MEMBER_CARD", "会员储值卡"),
("ODS_MEMBER_BALANCE", "会员余额变动"),
("ODS_SETTLEMENT_RECORDS", "结账记录"),
("ODS_TABLE_USE", "台费计费流水"),
("ODS_ASSISTANT_ACCOUNT", "助教账号"),
("ODS_ASSISTANT_LEDGER", "助教流水"),
("ODS_ASSISTANT_ABOLISH", "助教作废"),
("ODS_REFUND", "退款流水"),
("ODS_PLATFORM_COUPON", "平台券核销"),
("ODS_RECHARGE_SETTLE", "充值结算"),
("ODS_SETTLEMENT_TICKET", "结账小票"),
# DWD 和质量检查任务
("DWD_LOAD_FROM_ODS", "ODS→DWD 装载"),
("DWD_QUALITY_CHECK", "DWD 质量检查"),
("DATA_INTEGRITY_CHECK", "数据完整性检查"),
("CHECK_CUTOFF", "检查 Cutoff"),
]
# 动态获取可调度的任务列表
def _get_schedulable_tasks():
"""从任务注册表动态获取可调度任务列表"""
try:
from ..models.task_registry import task_registry
tasks = []
# 添加所有 ODS 任务
for task_def in task_registry.get_ods_tasks():
tasks.append((task_def.code, task_def.name))
# 添加非 ODS 任务(排除 Schema 初始化和手工灌入)
exclude_codes = {"INIT_ODS_SCHEMA", "INIT_DWD_SCHEMA", "INIT_DWS_SCHEMA", "MANUAL_INGEST"}
for task_def in task_registry.get_non_ods_tasks():
if task_def.code not in exclude_codes:
tasks.append((task_def.code, task_def.name))
return tasks
except ImportError:
# 回退到静态列表
return [
("ODS_PAYMENT", "支付流水"),
("ODS_MEMBER", "会员档案"),
("ODS_MEMBER_CARD", "会员储值卡"),
("ODS_MEMBER_BALANCE", "会员余额变动"),
("ODS_SETTLEMENT_RECORDS", "结账记录"),
("ODS_TABLE_USE", "台费计费流水"),
("ODS_ASSISTANT_ACCOUNT", "助教账号"),
("ODS_ASSISTANT_LEDGER", "助教流水"),
("ODS_ASSISTANT_ABOLISH", "助教作废"),
("ODS_REFUND", "退款流水"),
("ODS_PLATFORM_COUPON", "平台券核销"),
("ODS_RECHARGE_SETTLE", "充值结算"),
("ODS_SETTLEMENT_TICKET", "结账小票"),
("DWD_LOAD_FROM_ODS", "ODS→DWD 装载"),
("DWD_QUALITY_CHECK", "DWD 质量检查"),
("DATA_INTEGRITY_CHECK", "数据完整性检查"),
("CHECK_CUTOFF", "检查 Cutoff"),
]
SCHEDULABLE_TASKS = _get_schedulable_tasks()
class TaskLogDialog(QDialog):
@@ -1584,6 +1601,7 @@ class TaskManager(QWidget):
# 统计关键数据
total_inserted = 0
total_updated = 0
total_missing = 0
total_records = 0
@@ -1596,11 +1614,30 @@ class TaskManager(QWidget):
import json
stats_str = match.group(1).replace("'", '"')
stats = json.loads(stats_str)
if 'tables' in stats:
for tbl in stats['tables']:
inserted = tbl.get('inserted', 0)
processed = tbl.get('processed', 0)
total_inserted += inserted + processed
inserted = int(tbl.get('inserted', 0) or 0)
updated = int(tbl.get('updated', 0) or 0)
processed = int(tbl.get('processed', 0) or 0)
has_new_counts = ('inserted' in tbl) or ('updated' in tbl)
if has_new_counts:
total_inserted += inserted
total_updated += updated
else:
total_inserted += inserted + processed
except Exception:
pass
@@ -1622,8 +1659,11 @@ class TaskManager(QWidget):
total_records += int(match.group(1))
# 构建摘要
if total_inserted > 0:
summary_parts.append(f"处理 {total_inserted}")
if total_inserted > 0 or total_updated > 0:
if total_updated > 0:
summary_parts.append(f"?? {total_inserted} ?, ?? {total_updated} ?")
else:
summary_parts.append(f"?? {total_inserted} ?")
if total_records > 0:
if total_missing > 0: