47 lines
1.4 KiB
Python
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}")
|