"""Configuracao central dos scripts do Planejador Missao. Entradas: Estrutura padrao do projeto, com pastas dados/, src/ e resultados/. Saidas: Constantes de caminho, parametros operacionais, nomes de arquivos e pesos usados pelos scripts de execucao, validacao e teste. Papel no pipeline: Evita caminhos absolutos e concentra convencoes para que o projeto rode em qualquer computador mantendo a mesma estrutura de diretorios. """ from __future__ import annotations from pathlib import Path PROJECT_ROOT = Path(__file__).resolve().parents[1] SCRIPTS_DIR = PROJECT_ROOT / "scripts" SRC_DIR = PROJECT_ROOT / "src" DADOS_DIR = PROJECT_ROOT / "dados" RESULTADOS_DIR = PROJECT_ROOT / "resultados" VALIDACAO_DIR = RESULTADOS_DIR / "validacao" LOGS_DIR = PROJECT_ROOT / "logs" TEMP_DIR = PROJECT_ROOT / "temp" ARQUIVO_PARAMETROS = DADOS_DIR / "parametros_missao.csv" ARQUIVO_CADASTRO_LOCAL = DADOS_DIR / "Modelagem_C98_ETA2_local.xlsx" ARQUIVO_CADASTRO_ORIGINAL = DADOS_DIR / "Modelagem C98 ETA2.xlsx" ARQUIVO_CATALOGO_OIS = DADOS_DIR / "catalogo_ois.xlsx" ARQUIVO_INDISPONIBILIDADES = DADOS_DIR / "indisponibilidades_2026.xlsx" ARQUIVO_HISTORICO = DADOS_DIR / "historico_horas_voadas.csv" ARQUIVO_QUADRO_VOO_2025 = DADOS_DIR / "Quadro de Voo 2025 (2).xlsx" ARQUIVO_VOOS_2025 = DADOS_DIR / "validacao" / "voos_2025.csv" LOG_EXECUCAO = LOGS_DIR / "execucao.log" AERONAVES = ["C98", "C97", "C95"] META_HORAS_PADRAO = 50.0 VALIDACAO_TEMPO_LIMITE_SEGUNDOS = 180.0 VALIDACAO_GAP_RELATIVO = 0.05 PESOS_OBJETIVO = { "rota_acionada": 100000, "missao_local": 1000, "sobreaviso": 0, "meta_50": 100, "meta_110": 100, "beneficio_paop": 10, "custo_financeiro": -0.05, } ABAS = { "cadastro": "BANCO DE DADOS 2026", "catalogo_ois": "catalogo_ois", "voos_2025": "VOOS", "relatorio_diario": "ESCALA DIARIA", } ARQUIVOS_ENTRADA_OBRIGATORIOS = [ ARQUIVO_CATALOGO_OIS, ARQUIVO_INDISPONIBILIDADES, ARQUIVO_PARAMETROS, ] def garantir_diretorios() -> None: """Cria diretorios de saida e apoio usados pelos scripts.""" for path in [RESULTADOS_DIR, VALIDACAO_DIR, LOGS_DIR, TEMP_DIR, ARQUIVO_VOOS_2025.parent]: path.mkdir(parents=True, exist_ok=True)