"""Post-rework verification. Read-only. Does NOT touch the systemd server."""
import re
from supporthub.app.main import app
from supporthub.app.db import session_scope
from supporthub.app.models import AddonsProducts, Tickets, ThreadEmbeddings, GeneratedGuide
from supporthub.app.services.embedding_service import embedding_index, EmbeddingService

SCHEMA = "tenant_internal"

print("=== A. NEW CANDIDATE COUNTS (new code) ===")
with app.app_context():
    from flask import g
    g.tenant_schema = SCHEMA
    embedding_index.load_from_db(schema=SCHEMA)
    embedding_index.load_doc_pages_from_db(schema=SCHEMA)
    svc = EmbeddingService()
    with session_scope(schema=SCHEMA) as session:
        prods = []
        for p in session.query(AddonsProducts).all():
            try:
                prov = int(p.provider_product_id)
            except (ValueError, TypeError):
                continue
            n = (session.query(ThreadEmbeddings)
                 .filter(ThreadEmbeddings.product_id == prov,
                         ThreadEmbeddings.embedding_quality == 'strong',
                         ThreadEmbeddings.summary_text.isnot(None)).count())
            prods.append((p.id, prov, p.name, n))
        prods.sort(key=lambda r: r[3], reverse=True)
        prods = prods[:6]
        pid_to_prov = {pid: prov for (pid, prov, _, _) in prods}
    batch = svc.count_guide_candidates_batch(pid_to_prov, embedding_index)
    print(f"{'product':40} {'strong':>6} {'batch':>6} {'detail':>6}")
    detail_lists = {}
    for (pid, prov, name, n) in prods:
        cands = svc.get_guide_candidates(pid, embedding_index)
        detail_lists[name] = cands
        print(f"{name[:40]:40} {n:>6} {batch.get(pid,0):>6} {len(cands):>6}")

    print("\n=== D. SURVIVING CANDIDATES (top 3 products) — check vs audit ===")
    for name in list(detail_lists.keys())[:3]:
        print(f"\n### {name[:45]}")
        for c in detail_lists[name][:12]:
            print(f"  t{c['thread_id']} clsize={c['cluster_size']:>2}: {(c['summary_text'] or '')[:120]}")

print("\n=== B. ENDPOINT CHECKS (in-process test client, new code) ===")
app.config['WTF_CSRF_ENABLED'] = False
client = app.test_client()
r = client.post('/login', data={'email': 'admin@local.test', 'password': 'Admin123!ChangeMe'},
                follow_redirects=False)
print(f"POST /login -> {r.status_code} (expect 302 on success)")
for path in ['/products', '/guides', '/ticket/101']:
    r = client.get(path, follow_redirects=True)
    print(f"GET {path} -> {r.status_code}")
