"""Debug: reproduce exact collect_used + candidates logic from agent_monitor."""
import csv, sqlite3
from pathlib import Path

BASE    = Path(__file__).parent
DB      = BASE / "data/processed/aima_conversion_shadow.sqlite"
DATASET = "lost_shops_202605191501"

def collect_used():
    used_leads, used_phones = set(), set()
    for p in sorted((BASE / "data/processed").glob("*.csv")):
        with p.open(encoding="utf-8-sig") as f:
            for row in csv.DictReader(f):
                lid = str(row.get("lead_id", "") or "").strip()
                ph  = str(row.get("phone",   "") or "").strip()
                if lid: used_leads.add(lid)
                if ph:  used_phones.add(ph)
    return used_leads, used_phones

used_leads, used_phones = collect_used()
print(f"used_leads={len(used_leads)} used_phones={len(used_phones)}")

conn = sqlite3.connect(str(DB))
rows = conn.execute(
    "SELECT lead_id, first_name, last_name, phone FROM aima_imported_contacts "
    "WHERE dataset=? ORDER BY row_index DESC",
    (DATASET,)
).fetchall()
conn.close()

candidates = [r for r in rows if r[3] and str(r[0]) not in used_leads and r[3] not in used_phones]
print(f"DATASET={DATASET}")
print(f"total_in_db={len(rows)} candidates_after_filter={len(candidates)}")
for r in candidates[:5]:
    print(f"  lead={r[0]} phone=...{str(r[3])[-4:]}")
