"""Uso: uv run python -m agente <comando>

  fontes            Classroom + Notion
  extrair [dias]    le o WhatsApp (padrao: 60 dias na 1a vez, depois so o que e novo)
  agenda            espelha os itens na agenda Agente
  ciclo             fontes + extrair + agenda (timer a cada 3 h)
  comandos          responde ao grupo Agente (timer a cada minuto)
  diario [enviar]   resumo do dia (sem "enviar", so mostra)
  semanal [enviar]  visao da semana
  itens             lista os itens abertos
  custo             tokens usados por etapa
"""
import sys
import warnings

warnings.filterwarnings("ignore")

from . import agenda_sync, auditoria, comandos, extrator, fontes, preferencias, resumo  # noqa: E402
from .banco import agente  # noqa: E402


def listar(con):
    for i in con.execute("""SELECT * FROM itens WHERE status IN ('aberto', 'a_confirmar')
                            ORDER BY tipo, COALESCE(inicio, prazo, '9999')"""):
        quando = i["inicio"] or i["prazo"] or "—"
        marca = "?" if i["status"] == "a_confirmar" else " "
        print(f"{marca} #{i['id']:<4} {i['tipo']:<11} {quando:<16} {i['titulo'][:70]}  [{i['origem']}]")


def custo(con):
    for r in con.execute("""SELECT etapa, modelo, COUNT(*) n, SUM(entrada) ent, SUM(saida) sai
                            FROM uso_llm GROUP BY etapa, modelo"""):
        usd = r["ent"] / 1e6 * 0.25 + r["sai"] / 1e6 * 1.50
        print(f"{r['etapa']:<10} {r['modelo']:<24} chamadas={r['n']:<5} entrada={r['ent']:<9} saida={r['sai']:<8} ~US$ {usd:.3f}")


def main():
    cmd = sys.argv[1] if len(sys.argv) > 1 else "ciclo"
    con = agente()
    if cmd == "fontes":
        fontes.sincronizar_classroom(con)
        fontes.sincronizar_notion(con)
    elif cmd == "extrair":
        dias = int(sys.argv[2]) if len(sys.argv) > 2 else extrator.DIAS_PROJETOS
        extrator.extrair(con, dias=dias)
    elif cmd == "agenda":
        agenda_sync.sincronizar(con)
    elif cmd == "ciclo":
        fontes.sincronizar_classroom(con)
        fontes.sincronizar_notion(con)
        extrator.extrair(con)
        preferencias.aplicar(con)
        agenda_sync.sincronizar(con)
        auditoria.gerar(con)
    elif cmd == "auditoria":
        auditoria.gerar(con)
        print(auditoria.URL)
    elif cmd == "preferencias":
        for n, p in enumerate(preferencias.listar(con), 1):
            print(f"{n}. {p['texto']}  ({p['em'][:10]})")
    elif cmd == "comandos":
        comandos.processar(con)
    elif cmd in ("diario", "semanal"):
        texto = (resumo.montar_diario if cmd == "diario" else resumo.montar_semanal)(con)
        if "enviar" in sys.argv[2:]:
            from . import whatsapp
            whatsapp.enviar(texto, con)
        else:
            print(texto)
    elif cmd == "itens":
        listar(con)
    elif cmd == "custo":
        custo(con)
    else:
        print(__doc__)


if __name__ == "__main__":
    main()
