#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""check_backfill.py —— 补跑后核对：条数 / 重复 / 日期 / 分页一致性"""
import re
import sqlite3

db = sqlite3.connect("/root/search.db", timeout=30)
db.execute("PRAGMA busy_timeout=30000")

for S in ["颍泉区人民政府-公告公示", "江城县人民政府-通知公告", "丹寨县人民政府-环境执法监管"]:
    print("=" * 92)
    n = db.execute("SELECT COUNT(*) FROM gov_raw WHERE site_name=?", (S,)).fetchone()[0]
    n_url = db.execute("SELECT COUNT(DISTINCT page_url) FROM gov_raw WHERE site_name=?", (S,)).fetchone()[0]
    rng = db.execute("SELECT MIN(publish_date)||' ~ '||MAX(publish_date) FROM gov_raw WHERE site_name=?", (S,)).fetchone()[0]
    print("【%s】%d 行 | 不同 URL %d 个 | 日期 %s" % (S, n, n_url, rng))
    if n != n_url:
        print("   ⚠️ 行数 ≠ 不同URL数 → 有重复 URL")
    # 同标题多 URL（真·重复内容）
    dup_title = list(db.execute(
        "SELECT title, COUNT(*) c, COUNT(DISTINCT page_url) u FROM gov_raw WHERE site_name=? "
        "GROUP BY title HAVING c > 1 LIMIT 8", (S,)))
    print("   同标题多行: %d 组" % len(dup_title))
    for t, c, u in dup_title[:5]:
        print("      ×%d (URL%d) %s" % (c, u, (t or "")[:50]))
        for r in db.execute("SELECT page_url FROM gov_raw WHERE site_name=? AND title=? LIMIT 3", (S, t)):
            print("          ", r[0])
    # 格式
    print("   空正文: %d | 无<p>且长>400: %d | 非法<p><p>: %d" % (
        db.execute("SELECT COUNT(*) FROM gov_raw WHERE site_name=? AND (content IS NULL OR TRIM(content)='')", (S,)).fetchone()[0],
        db.execute("SELECT COUNT(*) FROM gov_raw WHERE site_name=? AND LENGTH(content)>400 AND content NOT LIKE '%<p%'", (S,)).fetchone()[0],
        db.execute("SELECT COUNT(*) FROM gov_raw WHERE site_name=? AND content LIKE '%<p><p%'", (S,)).fetchone()[0]))
    print("   FTS 同步: %d / %d" % (
        db.execute("SELECT COUNT(*) FROM gov_search WHERE rowid IN (SELECT id FROM gov_raw WHERE site_name=?)", (S,)).fetchone()[0], n))
db.close()
