#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""qc_dedupe_probe.py —— 3 个「判重全跳过」脚本：判重到底查了什么（只读）"""
import re, sqlite3
D = "/root/gov_crawler/"
T = ["crawl_cs_gz.py", "crawl_xiaonan.py", "crawl_dhms_zjdc.py"]
db = sqlite3.connect("file:/root/search.db?mode=ro", uri=True, timeout=30)
for f in T:
    src = open(D + f, encoding="utf-8", errors="ignore").read()
    print("═" * 78)
    print("【%s】" % f)
    for pat, lbl in ((r'DB_PATH\s*=\s*["\']([^"\']+)', "DB路径"),
                     (r'(?:conn|db)\s*=\s*sqlite3\.connect\(\s*["\']([^"\']+)', "connect路径"),
                     (r'SITE_NAME\s*=\s*["\']([^"\']+)', "SITE_NAME")):
        m = re.findall(pat, src)
        if m: print("  %s: %s" % (lbl, m[:2]))
    # 所有 SELECT 语句
    sels = re.findall(r'"((?:SELECT|select)[^"]{0,220})"', src) + re.findall(r"'((?:SELECT|select)[^']{0,220})'", src)
    for s in sels[:4]:
        s1 = re.sub(r"\s+", " ", s)[:200]
        print("  SELECT: %s" % s1)
        mm = re.search(r"FROM\s+(\w+)", s, re.I)
        if mm and "?" not in s:
            try:
                n = db.execute(s).fetchone()
                print("      → 直接执行返回: %s" % (n,))
            except Exception as e:
                print("      → 执行失败: %s" % str(e)[:70])
    # 判重分支上下文
    for kw in ("已存在", "跳过", "skip", "existing"):
        i = src.find(kw)
        if i > 0:
            seg = re.sub(r"\s+", " ", src[max(0, i - 260):i + 60])
            print("  [%s] 上下文: ...%s" % (kw, seg[-260:]))
            break
