Adiciona visualizacao combinada (Gantt + mapa + tabela) e exporta inspecoes no CSV (v0.8)
oamrp_v3.py: exporta linhas status=inspecao no CSV resultado com datas UTC reais visualizar_resultado.py: refatorado para gerar um unico HTML (planejamento.html) com cabecalho, Gantt Plotly (divisoes diarias, FAB labels), mapa Folium em iframe e tabela de voos com filtros por aeronave/status/prioridade/base e busca livre Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -787,6 +787,8 @@ def escrever_resultado(sol: dict, caminho: Path) -> None:
|
||||
missoes_nos = sol["missoes_nos"]
|
||||
linhas = []
|
||||
|
||||
horizonte_dt = sol.get("horizonte_dt")
|
||||
|
||||
cobertas_ids: set[str] = set()
|
||||
for k in sol["ks"]:
|
||||
missoes_rota = [n for n in rota_da_aeronave(sol, k) if n.tipo == "missao"]
|
||||
@@ -810,6 +812,29 @@ def escrever_resultado(sol: dict, caminho: Path) -> None:
|
||||
"linhas_origem": m.linhas_origem,
|
||||
})
|
||||
|
||||
# Inspeções executadas por esta aeronave
|
||||
if horizonte_dt is not None:
|
||||
for seq, s_val, insp in inspecoes_da_aeronave(sol, k):
|
||||
from datetime import timedelta
|
||||
ini_dt = horizonte_dt + timedelta(hours=s_val)
|
||||
fim_dt = horizonte_dt + timedelta(hours=s_val + insp.dt_h)
|
||||
linhas.append({
|
||||
"status": "inspecao",
|
||||
"aeronave": k,
|
||||
"ordem": "",
|
||||
"id": f"INSP_{k}_{seq}",
|
||||
"om": insp.sigla,
|
||||
"orig": "SBMN",
|
||||
"dest": "SBMN",
|
||||
"partida_utc": ini_dt.isoformat().replace("+00:00", "Z"),
|
||||
"chegada_utc": fim_dt.isoformat().replace("+00:00", "Z"),
|
||||
"dur_h": f"{insp.dt_h:.2f}",
|
||||
"prioridade": "",
|
||||
"periodo": "",
|
||||
"aeronave_real_2025": "",
|
||||
"linhas_origem": "",
|
||||
})
|
||||
|
||||
for nid, n in missoes_nos.items():
|
||||
if nid in cobertas_ids:
|
||||
continue
|
||||
@@ -1406,6 +1431,7 @@ def main() -> None:
|
||||
|
||||
nos, arcos = construir_rede(missoes, aeronaves, catalogo)
|
||||
sol = resolver(nos, arcos, aeronaves, catalogo)
|
||||
sol["horizonte_dt"] = horizonte_dt
|
||||
escrever_resultado(sol, args.resultado)
|
||||
imprimir_relatorio(sol, bases, args.resultado)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user