#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# verify_fts_full.py — 全库 FTS 完整性（每个 gov_raw.id 是否都有 gov_search.rowid）
import sqlite3
c = sqlite3.connect('file:/root/search.db?mode=ro', uri=True, timeout=90)
n_raw = c.execute('SELECT COUNT(*) FROM gov_raw').fetchone()[0]
n_s = c.execute('SELECT COUNT(*) FROM gov_search').fetchone()[0]
miss = c.execute('SELECT COUNT(*) FROM gov_raw r WHERE NOT EXISTS (SELECT 1 FROM gov_search s WHERE s.rowid = r.id)').fetchone()[0]
print('gov_raw=%d  gov_search=%d  缺失(FTS里找不到的gov_raw行)=%d' % (n_raw, n_s, miss))
print('结论:', 'OK 无缺失' if miss == 0 else '注意：有 %d 行搜不到，需修复' % miss)
if miss:
    for r in c.execute('SELECT r.id, r.script_name, substr(r.page_url,1,70) FROM gov_raw r WHERE NOT EXISTS (SELECT 1 FROM gov_search s WHERE s.rowid = r.id) LIMIT 10'):
        print('   ', r)
