在前后端开发联调前 的提交20260223
This commit is contained in:
63
scripts/ops/analyze_v4.py
Normal file
63
scripts/ops/analyze_v4.py
Normal file
@@ -0,0 +1,63 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""分析第四次执行结果。"""
|
||||
import json
|
||||
import re
|
||||
from pathlib import Path
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv(Path(__file__).resolve().parents[2] / ".env")
|
||||
from _env_paths import get_output_path
|
||||
|
||||
log_root = get_output_path("SYSTEM_LOG_ROOT")
|
||||
raw = json.loads((log_root / "2026-02-21__etl_run_raw_v4.json").read_text(encoding="utf-8"))
|
||||
|
||||
error_log = raw.get("error_log", "")
|
||||
lines = error_log.split("\n")
|
||||
|
||||
# 提取任务列表
|
||||
task_list_match = re.search(r"开始运行任务: \[([^\]]+)\]", error_log)
|
||||
if task_list_match:
|
||||
tasks = [t.strip().strip("'") for t in task_list_match.group(1).split(",")]
|
||||
print(f"总任务数: {len(tasks)}")
|
||||
|
||||
# 分析每个任务的结果
|
||||
success_tasks = []
|
||||
failed_tasks = []
|
||||
|
||||
for task in tasks:
|
||||
# 检查是否有"完成"标记
|
||||
completed = re.search(rf"{task}: 完成,统计=", error_log) or \
|
||||
re.search(rf"{task}: 完成, 统计=", error_log) or \
|
||||
re.search(rf"{task} ODS 任务完成:", error_log) or \
|
||||
re.search(rf"{task}: 工具类任务执行成功", error_log)
|
||||
failed = re.search(rf"任务 {task} 失败: (.+?)(?:\\n|$)", error_log)
|
||||
|
||||
if completed and not failed:
|
||||
success_tasks.append(task)
|
||||
elif failed:
|
||||
err_msg = failed.group(1)[:120]
|
||||
failed_tasks.append((task, err_msg))
|
||||
else:
|
||||
failed_tasks.append((task, "未知状态"))
|
||||
|
||||
print(f"\n✅ 成功: {len(success_tasks)} 个")
|
||||
for t in success_tasks:
|
||||
print(f" {t}")
|
||||
|
||||
print(f"\n❌ 失败: {len(failed_tasks)} 个")
|
||||
# 找出根因(第一个非 InFailedSqlTransaction 的失败)
|
||||
root_causes = []
|
||||
cascade_count = 0
|
||||
for t, err in failed_tasks:
|
||||
if "InFailedSqlTransaction" in err:
|
||||
cascade_count += 1
|
||||
else:
|
||||
root_causes.append((t, err))
|
||||
print(f" 🔴 {t}: {err}")
|
||||
|
||||
print(f"\n 级联失败 (InFailedSqlTransaction): {cascade_count} 个")
|
||||
|
||||
if root_causes:
|
||||
print(f"\n根因分析:")
|
||||
for t, err in root_causes:
|
||||
print(f" {t}: {err}")
|
||||
Reference in New Issue
Block a user