微信小程序页面迁移校验之前 P5任务处理之前

This commit is contained in:
Neo
2026-03-09 01:19:21 +08:00
parent 263bf96035
commit 6e20987d2f
1112 changed files with 153824 additions and 219694 deletions

View File

@@ -0,0 +1,74 @@
"""从 ETL 日志中提取 DWS_MEMBER_VISIT 错误上下文"""
import os, re
from pathlib import Path
from dotenv import load_dotenv
load_dotenv(Path(__file__).resolve().parents[2] / ".env")
LOG_ROOT = os.environ.get("LOG_ROOT")
if not LOG_ROOT:
raise RuntimeError("LOG_ROOT 未设置")
# 找到最近的日志文件
log_dir = Path(LOG_ROOT)
log_file = None
for f in sorted(log_dir.glob("*.log"), key=lambda x: x.stat().st_mtime, reverse=True):
log_file = f
break
if not log_file:
raise RuntimeError(f"{LOG_ROOT} 中未找到日志文件")
print(f"日志文件: {log_file}")
print(f"大小: {log_file.stat().st_size / 1024:.1f} KB")
print("=" * 60)
# 读取日志,找 DWS_MEMBER_VISIT 相关行
with open(log_file, 'r', encoding='utf-8') as f:
lines = f.readlines()
# 找到 MEMBER_VISIT 相关的所有行
visit_lines = []
capture = False
for i, line in enumerate(lines):
if 'MEMBER_VISIT' in line or 'member_visit' in line:
# 取前后 3 行上下文
start = max(0, i - 3)
end = min(len(lines), i + 4)
visit_lines.append((i, lines[start:end]))
if 'uk_dws_member_visit' in line:
start = max(0, i - 5)
end = min(len(lines), i + 6)
visit_lines.append((i, lines[start:end]))
print(f"找到 {len(visit_lines)} 处 MEMBER_VISIT 相关日志")
print()
seen = set()
for line_no, context in visit_lines:
if line_no in seen:
continue
seen.add(line_no)
print(f"--- 行 {line_no + 1} ---")
for l in context:
print(l.rstrip())
print()
# 额外:检查是否有 DETAIL 行PostgreSQL 错误详情)
print("=" * 60)
print("搜索 PostgreSQL 错误详情:")
for i, line in enumerate(lines):
if 'DETAIL' in line and 'member_visit' in lines[max(0, i-5):i+1].__repr__():
print(f"{i+1}: {line.rstrip()}")
if '重复键' in line or 'duplicate key' in line.lower():
print(f"{i+1}: {line.rstrip()}")
# 检查窗口切片信息
print()
print("=" * 60)
print("DWS_MEMBER_VISIT 窗口切片:")
for i, line in enumerate(lines):
if 'DWS_MEMBER_VISIT' in line and ('窗口' in line or 'window' in line.lower() or '切片' in line or '日期范围' in line):
print(f"{i+1}: {line.rstrip()}")
print("\n诊断完成。")