"""Executa a validação retrospectiva com voos de 2025."""

from __future__ import annotations

import argparse
import sys
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(BASE_DIR))

from src.planejador_missao.validacao import (
    carregar_voos_2025,
    criar_modelo_voos_2025,
    otimizar_equalizacao_50,
    salvar_relatorio_validacao,
)


def main() -> None:
    parser = argparse.ArgumentParser(description="Valida o planejador com voos historicos de 2025.")
    parser.add_argument("--meta", type=float, default=50.0, help="Meta de horas usada na equalizacao.")
    parser.add_argument("--tempo-limite", type=float, default=180.0, help="Tempo limite do resolvedor MILP, em segundos.")
    parser.add_argument("--gap", type=float, default=0.05, help="Gap relativo aceitavel para encerrar o MILP.")
    args = parser.parse_args()

    entrada = BASE_DIR / "dados" / "validacao" / "voos_2025.csv"
    criar_modelo_voos_2025(entrada)

    voos = carregar_voos_2025(entrada)
    if voos.empty:
        print("Base de validação ainda vazia.")
        print(f"Preencha o arquivo: {entrada}")
        print("Colunas esperadas: data,aeronave,tipo_escala,tripulante,funcao,oi,horas_voadas,sbv")
        return

    resultado = otimizar_equalizacao_50(
        BASE_DIR,
        voos,
        meta_horas=args.meta,
        tempo_limite_segundos=args.tempo_limite,
        gap_relativo=args.gap,
    )
    arquivo = salvar_relatorio_validacao(BASE_DIR, resultado, meta_horas=args.meta)

    print("\n=== Validação 2025 concluída ===")
    print(f"Meta de equalizacao: {args.meta:g} horas")
    print(f"Voos/slots avaliados: {len(resultado['slots'])}")
    print(f"Tripulantes comparados: {len(resultado['comparativo'])}")
    print(f"Relatório: {arquivo}")
    print(f"Solver: {resultado['status_solver']['mensagem']}")
    print("\nMétricas:")
    print(resultado["metricas"].to_string(index=False))


if __name__ == "__main__":
    main()
