#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""qc_disabled.py —— 禁用脚本（enabled=false）纳入体检"""
import json, os, re, sqlite3
from collections import Counter
D = "/root/gov_crawler/"
cfg = json.load(open(D + "daily_crawl_config.json", encoding="utf-8"))
lst = cfg if isinstance(cfg, list) else cfg.get("tasks", cfg.get("scripts", []))
dis = [c for c in lst if not c.get("enabled", True)]
print("config 总条目 %d | 禁用 %d 个" % (len(lst), len(dis)))
db = sqlite3.connect("file:/root/search.db?mode=ro", uri=True, timeout=30)
rows = []
for c in dis:
    s = (c.get("script") or "").strip()
    note = (c.get("note") or "")
    p = D + s
    exists = os.path.exists(p)
    src = open(p, encoding="utf-8", errors="ignore").read()[:40000] if exists else ""
    local = ("_local" in s) or (not s.endswith(".py"))
    # 本地降级判据：脚本名带 _local / 无 .py 后缀 / config 里有 sync_script 标记
    n_rows = 0
    if s:
        n_rows = db.execute("SELECT COUNT(*) FROM gov_raw WHERE script_name=?", (s,)).fetchone()[0]
    last = db.execute("SELECT MAX(run_date)||' '||COUNT(*) FROM run_logs WHERE script_name=?", (s,)).fetchone()
    runs = db.execute("SELECT COUNT(*) FROM run_logs WHERE script_name=?", (s,)).fetchone()[0]
    ok = db.execute("SELECT COUNT(*) FROM run_logs WHERE script_name=? AND status='成功'", (s,)).fetchone()[0]
    cls = "本地降级(本机跑)" if local else ("文件缺失" if not exists else ("有数据" if n_rows else "无数据"))
    rows.append((s, c.get("name") or "", cls, n_rows, runs, ok, note[:34]))
print("\n=== 禁用清单（%d 个）===" % len(rows))
print("  分类:", Counter(r[2] for r in rows).most_common())
for s, n, cls, nr, runs, ok, note in rows:
    print("  %-30s %-18s %-12s 库内%5d 跑%3d 成功%3d | %s" % (s[:30], n[:18], cls, nr, runs, ok, note))
json.dump([dict(script=a, name=b, cls=c, rows=d_, runs=e, ok=f, note=g) for a, b, c, d_, e, f, g in rows],
          open(D + "qc_out/qc_disabled.json", "w", encoding="utf-8"), ensure_ascii=False, indent=1)
print("\n已写 qc_out/qc_disabled.json")
