"""将 cnjf 数据直接写入 search.db"""
import sys, sqlite3, re, json

DB_PATH = "/mnt/data/search.db"

db = sqlite3.connect(DB_PATH, timeout=30)
print("connected")

# 从 crawler_results.db 读取
src = sqlite3.connect("/root/gov_crawler/crawler_results.db")
src.row_factory = sqlite3.Row
rows = src.execute("""
    SELECT cr.* FROM crawl_results cr
    JOIN crawl_sites cs ON cr.site_id = cs.id
    WHERE cs.domain = 'www.cnjf.com'
""").fetchall()
src.close()
print(f"读取: {len(rows)} 条")

SITE = "建峰集团-环境公示"
ok, skip = 0, 0

for r in rows:
    url = r["url"]
    title = (r["title"] or "")[:500]
    pd = r["publish_date"] or ""
    if pd:
        m = re.match(r"(\d{4})-(\d{1,2})-(\d{1,2})", pd)
        if m:
            pd = f"{int(m.group(1)):04d}-{int(m.group(2)):02d}-{int(m.group(3)):02d}"
    summary = (r["summary"] or "")[:500]
    content = r["content"] or ""
    try:
        db.execute("""
            INSERT OR IGNORE INTO gov_raw
            (site_name, source_url, page_url, title, publish_date, summary, content, status, industry)
            VALUES (?, ?, ?, ?, ?, ?, ?, 'active', '环境公示')
        """, (SITE, url, url, title, pd, summary, content))
        ok += 1
    except Exception as e:
        print(f"  ERR: {e}")
        skip += 1

db.commit()
print(f"推送: {ok} OK, {skip} skip")

# FTS
print("FTS...")
try:
    db.execute("""
        INSERT INTO gov_search(rowid, title, site_name, summary)
        SELECT r.id, r.title, r.site_name, r.summary
        FROM gov_raw r LEFT JOIN gov_search s ON r.id = s.rowid
        WHERE s.rowid IS NULL AND r.site_name = ?
    """, (SITE,))
    db.commit()
    print("FTS OK")
except Exception as e:
    print(f"FTS ERR: {e}")

c1 = db.execute("SELECT COUNT(*) FROM gov_raw WHERE site_name=?", (SITE,)).fetchone()[0]
c2 = db.execute("SELECT COUNT(*) FROM gov_search WHERE site_name=?", (SITE,)).fetchone()[0]
db.close()
print(f"\n验证: gov_raw={c1}条, gov_search={c2}条")
