Files
Neo-ZQYY/scripts/ops/_verify_fetch_root_check.py

47 lines
1.4 KiB
Python

"""
验证 extract_api_fields_from_fetch_root 能否从 FETCH_ROOT 正确提取 API 字段。
"""
import sys, os
from pathlib import Path
from dotenv import load_dotenv
load_dotenv(Path(__file__).resolve().parents[2] / ".env")
FETCH_ROOT = os.environ.get("FETCH_ROOT")
if not FETCH_ROOT:
raise RuntimeError("FETCH_ROOT 未设置")
# 添加 ETL 模块路径
sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "apps" / "etl" / "connectors" / "feiqiu"))
from quality.consistency_checker import (
extract_api_fields_from_fetch_root,
ODS_TABLE_TO_TASK_CODE,
ODS_TABLE_TO_JSON_FILE,
)
fetch_root = Path(FETCH_ROOT)
print(f"FETCH_ROOT: {fetch_root}")
print(f"ODS 表数量: {len(ODS_TABLE_TO_JSON_FILE)}")
print(f"ODS→TaskCode 映射数量: {len(ODS_TABLE_TO_TASK_CODE)}")
print()
success = 0
skipped = 0
failed = 0
for ods_table in sorted(ODS_TABLE_TO_JSON_FILE.keys()):
fields = extract_api_fields_from_fetch_root(fetch_root, ods_table)
task_code = ODS_TABLE_TO_TASK_CODE.get(ods_table, "?")
if fields is None:
print(f" [跳过] {ods_table} ({task_code}) — 无 JSON 数据")
skipped += 1
elif len(fields) == 0:
print(f" [失败] {ods_table} ({task_code}) — JSON 存在但提取到 0 个字段")
failed += 1
else:
print(f" [成功] {ods_table} ({task_code}) — {len(fields)} 个字段")
success += 1
print(f"\n汇总: 成功={success}, 跳过={skipped}, 失败={failed}")