#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# qc_nop_detail.py — 无 <p> 疑似集细化判据
import sqlite3
c = sqlite3.connect('file:/root/search.db?mode=ro', uri=True, timeout=90)
def q1(sql, args=()):
    return c.execute(sql, args).fetchone()[0]
tot = q1("SELECT COUNT(*) FROM gov_raw")
withp = q1("SELECT COUNT(*) FROM gov_raw WHERE content LIKE '%<p%'")
print('gov_raw 总行数 %d ｜ 含 <p> %d ｜ 不含 <p> %d' % (tot, withp, tot - withp))
print()
print('=== 不含 <p> 的行：按是否有任何 HTML 标签分类 ===')
a = q1("SELECT COUNT(*) FROM gov_raw WHERE content NOT LIKE '%<p%' AND content NOT LIKE '%<%'")
b = q1("SELECT COUNT(*) FROM gov_raw WHERE content NOT LIKE '%<p%' AND content LIKE '%<%'")
print('  A 纯文本（完全无 <）：%d 行' % a)
print('  B 有标签但无 <p>：%d 行' % b)
print()
print('=== B 类里主要用什么标签（按出现次数抽样统计）===')
tags = {}
for (ct,) in c.execute("SELECT content FROM gov_raw WHERE content NOT LIKE '%<p%' AND content LIKE '%<%' LIMIT 4000"):
    s = (ct or '')
    for t in ('div', 'br', 'span', 'table', 'strong', 'img', 'a ', 'h1', 'h2', 'h3', 'font', 'ul', 'li'):
        if '<' + t in s:
            tags[t] = tags.get(t, 0) + 1
for k, v in sorted(tags.items(), key=lambda x: -x[1])[:12]:
    print('   <%s> 出现在 %d/4000 行' % (k, v))
print()
print('=== 无 <p> 行数最多的 15 个站点 ===')
for r in c.execute("""SELECT site_name, COUNT(*) n FROM gov_raw WHERE content NOT LIKE '%<p%' GROUP BY site_name ORDER BY n DESC LIMIT 15"""):
    print('  %-34s %d' % (str(r[0])[:34], r[1]))
print()
print('=== A 类（纯文本）行数最多的 10 站（可能是 PDF/纯文本源站，属正常）===')
for r in c.execute("""SELECT site_name, COUNT(*) n FROM gov_raw WHERE content NOT LIKE '%<%' GROUP BY site_name ORDER BY n DESC LIMIT 10"""):
    print('  %-34s %d' % (str(r[0])[:34], r[1]))
print()
print('=== 样例：B 类正文前 160 字（3 条）===')
for (sn, ct) in c.execute("SELECT site_name, content FROM gov_raw WHERE content NOT LIKE '%<p%' AND content LIKE '%<%' LIMIT 3"):
    print('  [%s] %s' % (str(sn)[:20], (ct or '')[:160].replace(chr(10), ' ')))
