import json, sqlite3, re

# 注册配置
with open("/root/gov_crawler/daily_crawl_config.json") as f:
    cfg = json.load(f)

cfg["crawlers"].append({
    "name": "铜陵市生态环境局-环评公示",
    "script": "crawl_tl_env.py",
    "incremental": True,
    "sync_mode": "direct_server",
    "enabled": True,
    "group": "安徽省",
    "args": "--pages=2",
    "note": "铜陵市生态环境局环评公众参与公示(hpgzcygs)"
})
with open("/root/gov_crawler/daily_crawl_config.json", "w") as f:
    json.dump(cfg, f, ensure_ascii=False, indent=2)
print(f"配置注册完成: {len(cfg['crawlers'])}")

# 推送 search.db
SITE = "铜陵市生态环境局-环评公示"
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 = 'sthjj.tl.gov.cn'
""").fetchall()
src.close()
print(f"读取: {len(rows)} 条")

DB_PATH = "/mnt/data/search.db"
db = sqlite3.connect(DB_PATH, timeout=30)
ok = 0
for r in rows:
    url = r["url"]
    title = (r["title"] or "")[:500]
    pd = r["publish_date"] or ""
    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: pass
db.commit()
print(f"推送: {ok} OK")

# 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"验证: gov_raw={c1}条, gov_search={c2}条")
