from pathlib import Path

from src.infra.document_analysis.analyzers.document_analyst import DocumentAnalyst


def main():
    # -------------------------------------------------
    # CONFIGURAÇÃO
    # -------------------------------------------------
    alvara_path = Path(
        r"C:\Users\dkayr\Desktop\documentos de teste do credit scoring\PayTek documents\Alvara Paytek.pdf"
    )

    if not alvara_path.exists():
        print("❌ Alvará não encontrado no caminho informado.")
        return

    analyst = DocumentAnalyst()

    print("\n" + "=" * 90)
    print("🔎 TESTE ISOLADO — ANÁLISE DE ALVARÁ")
    print("=" * 90)

    # -------------------------------------------------
    # EXECUÇÃO
    # -------------------------------------------------
    results = analyst.analyze_documents([str(alvara_path)])

    if not results:
        print("❌ Nenhum resultado retornado.")
        return

    r = results[0]

    # -------------------------------------------------
    # RESULTADOS GERAIS
    # -------------------------------------------------
    print(f"\n📄 Documento analisado:")
    print(f"  Caminho: {alvara_path}")
    print(f"  Tipo detectado: {r.document_type_detected}")
    print(f"  Confiança do tipo: {r.document_type_confidence:.2f}")

    # -------------------------------------------------
    # SCORES BASE
    # -------------------------------------------------
    print("\n📊 SCORES BASE")
    print(f"  Legibilidade:  {r.legibilidade_score:.2f}")
    print(f"  Estrutura:     {r.estrutura_score:.2f}")
    print(f"  Coerência:     {r.coerencia_score:.2f}")
    print(f"  Credibilidade:{r.credibilidade_score:.2f}")

    # -------------------------------------------------
    # ENTIDADES EXTRAÍDAS
    # -------------------------------------------------
    print("\n📌 ENTIDADES EXTRAÍDAS")
    if r.extracted_entities:
        for k, v in r.extracted_entities.items():
            print(f"  - {k}: {v}")
    else:
        print("  ⚠️ Nenhuma entidade extraída.")

    # -------------------------------------------------
    # FEATURES DO ALVARÁ
    # -------------------------------------------------
    alvara_features = r.features.get("alvara_features")

    print("\n🏛️ ANÁLISE DO ALVARÁ")
    if not alvara_features:
        print("❌ alvara_features NÃO encontrado.")
    else:
        for k, v in alvara_features.items():
            print(f"  {k}: {v}")

    # -------------------------------------------------
    # ALERTAS
    # -------------------------------------------------
    print("\n⚠️ ALERTAS")
    if r.alerts:
        for a in r.alerts:
            print(f"  - {a}")
    else:
        print("  ✅ Nenhum alerta.")

    print("\n" + "=" * 90)
    print("✅ FIM DO TESTE — ALVARÁ")
    print("=" * 90)

    # -------------------------------------------------
    # COMPANY PROFILE
    # -------------------------------------------------
    profile = r.features.get("company_profile")

    print("\n🏢 COMPANY PROFILE (UNIFICADO)")
    if not profile:
        print("  ❌ company_profile não encontrado.")
    else:
        # dataclass imprime bonito, mas pode ser grande
        print(f"  source: {profile.source}")
        print(f"  company_name: {profile.company_name}")
        print(f"  entity_type: {profile.entity_type}")
        print(f"  nuit: {profile.nuit}")
        print(f"  incorporation_date: {profile.incorporation_date}")
        print(f"  company_age_months: {profile.company_age_months}")
        print(f"  issuer: {profile.issuer}")
        print(f"  confidence: {profile.confidence}")


if __name__ == "__main__":
    main()
