"""Prueba rápida del flujo completo SIN la interfaz.

Ejecuta:  .venv/bin/python smoke_test.py
Sirve para verificar que captura -> ranking -> resumen funcionan.
"""

import os
from datetime import datetime, timedelta, timezone

from agent.config import load_config
from agent.ranking import rank_tweets
from agent.registry import get_provider, get_summarizer
from agent.store import load_accounts

HERE = os.path.dirname(os.path.abspath(__file__))
cfg = load_config(os.path.join(HERE, "config.yaml"))
accounts_path = cfg["accounts_path"]
if not os.path.isabs(accounts_path):
    accounts_path = os.path.join(HERE, accounts_path)

accounts = load_accounts(accounts_path)
provider = get_provider(cfg["provider"], cfg)
since = datetime.now(timezone.utc) - timedelta(hours=cfg["window_hours"])

tweets = []
for a in accounts:
    if a.enabled:
        tweets.extend(provider.fetch_user_tweets(a.handle, since=since, limit=50))

print(f"Proveedor:        {provider.name()}")
print(f"Cuentas activas:  {sum(a.enabled for a in accounts)}")
print(f"Tweets (<{cfg['window_hours']}h): {len(tweets)}")

ranked = rank_tweets(
    tweets, top_n=cfg["top_n"], recency_halflife_hours=cfg["recency_halflife_hours"],
    keywords=cfg["topics"], weights=cfg["weights"],
)

print(f"\nTOP {len(ranked)}:")
for i, (s, t) in enumerate(ranked, 1):
    print(f"  {i:>2}. @{t.author:<12} score={s:<8} ❤{t.likes:<6} 🔁{t.retweets:<5} :: {t.text[:55]}")

summarizer = get_summarizer(cfg["summarizer"], cfg)
md = summarizer.summarize(ranked, topics=cfg["topics"])
print("\n--- RESUMEN (primeras líneas) ---")
print("\n".join(md.splitlines()[:10]))
print("\nSMOKE_OK")
