Add OARMP routing engine, dashboard and documentation
- Complete routing engine: ingest, optimizer (CG+B&B), maintenance monitor, metrics, pipeline, quality checks - Streamlit dashboard with Input/Output tab structure, editable data editors, interactive Folium map with satellite layer and maintenance base highlights, FH stacked bar chart with TTM availability - CSV data files: AERONAVES, CHECKS, AIRPORTS, ESCALA DE VOO - README, CONTEXTO and CHANGELOG added - Remove legacy pre_process scripts and raw binary files (PDFs/xlsx) - Update .gitignore to exclude outputs/, data/, raw/*.pdf, raw/*.xlsx Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
103
CHANGELOG.md
Normal file
103
CHANGELOG.md
Normal file
@@ -0,0 +1,103 @@
|
||||
# Changelog
|
||||
|
||||
Todas as alterações relevantes do projeto são registradas neste arquivo.
|
||||
Formato baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.0.0/).
|
||||
|
||||
---
|
||||
|
||||
## [Não lançado]
|
||||
|
||||
### Adicionado
|
||||
- `README.md` com documentação do projeto, estrutura de pastas, instruções de instalação e conceitos-chave
|
||||
- `CONTEXTO.md` com contexto operacional, motivação e decisões de projeto
|
||||
- `CHANGELOG.md` (este arquivo)
|
||||
|
||||
---
|
||||
|
||||
## [0.5.0] — 2026-06-17
|
||||
|
||||
### Adicionado
|
||||
- **Mapa interativo de rotas** (aba `🗺 Mapa`): rotas por aeronave exibidas com `folium` + `streamlit-folium`; controle de camadas para alternar entre **CartoDB positron** e **satélite Esri World Imagery**
|
||||
- **Destaque de bases de manutenção no mapa**: marcador laranja (raio duplo) com tooltip `🔧 Base de manutenção` nos aeroportos com `IS_MAINTENANCE_BASE = 1`
|
||||
- `folium>=0.14.0` e `streamlit-folium>=0.22.0` adicionados ao `requirements.txt`
|
||||
|
||||
### Corrigido
|
||||
- **TTM disponível zerava após check**: a lógica anterior usava apenas o primeiro evento de manutenção por aeronave e subtraía todo `fh_apos` do TTM do segundo ciclo. Agora todos os eventos são acumulados (`all_maint`) e `fh_after_last = total_fh − Σ(accum_fh_at_check)` calcula corretamente as FH voadas após a **última** manutenção
|
||||
- Linha "Média" na tabela Frota não tinha mais cor de fundo (removido `background-color:#e8f4f8`); mantém apenas negrito
|
||||
|
||||
---
|
||||
|
||||
## [0.4.0] — 2026-06-16
|
||||
|
||||
### Adicionado
|
||||
- **Aba `🗺 Mapa`** no Output: representação geográfica das rotas por aeronave usando `plotly.graph_objects.Scattergeo` (substituído na v0.5.0)
|
||||
- Biblioteca `airportsdata` para lookup de coordenadas por código ICAO, sem necessidade de API key
|
||||
- `airportsdata>=20240101` adicionado ao `requirements.txt`
|
||||
- Coordenadas de DEP/ARR lidas diretamente da `Escala com Atribuição` (campo compartilhado `raw_sched_atrib`)
|
||||
|
||||
### Alterado
|
||||
- Gráfico de FH por aeronave e métricas de horas disponíveis transferidos da aba `Escala com Atribuição` para a aba `Manutenção e Aeronaves` (renomeada)
|
||||
- Cor da coluna "FH de TTM perdidas por aeronave / ciclo" alterada para vermelho
|
||||
|
||||
---
|
||||
|
||||
## [0.3.0] — 2026-06-15
|
||||
|
||||
### Adicionado
|
||||
- **Gráfico de FH por aeronave** na aba `Manutenção e Aeronaves` com quatro segmentos empilhados:
|
||||
- FH Iniciais (cinza `#94a3b8`)
|
||||
- FH Planejadas antes da manutenção (azul `#3b82f6`)
|
||||
- FH Planejadas após a manutenção (âmbar `#f59e0b`)
|
||||
- FH Disponíveis até a próxima manutenção (verde `#22c55e`, opacidade 0.55)
|
||||
- Marcador diamante vermelho indicando o evento de check
|
||||
- **Métricas de horas disponíveis** por aeronave (metric cards) abaixo do gráfico
|
||||
- Campo para **adicionar N linhas de uma vez** na Escala de Voo (Input), com botão "Limpar tudo"
|
||||
- Exclusão de linhas habilitada na tabela de Escala de Voo (`num_rows="dynamic"`)
|
||||
|
||||
### Alterado
|
||||
- Abas `Resumo` e `Gantt` unificadas em `📊 Resumo`
|
||||
- Altura do gráfico de FH dobrada (800 px)
|
||||
|
||||
### Corrigido
|
||||
- Variável `_c4` renomeada para `_` (sem uso)
|
||||
- `tat` acessado via `st.session_state.get("tat", 60)` para evitar erro quando o botão de execução é pressionado antes de o sub-tab Aeronaves ser visitado
|
||||
|
||||
---
|
||||
|
||||
## [0.2.0] — 2026-06-14
|
||||
|
||||
### Adicionado
|
||||
- **Aba `🔧 Manutenção`**: tabela com eventos de manutenção (aeronave, OFRAG anterior, threshold, FH acumuladas, perda de TTM, início/fim calendário) e gráficos de FH perdidas e FH verificadas
|
||||
- **Aba `✈ Frota`**: tabela de utilização com coluna `Média` e gráficos de utilização TTM e FH por aeronave
|
||||
- Campo **Tempo do Solver (s)** e botão **Executar Otimização** movidos para a aba Input (acima das sub-abas)
|
||||
- Mensagem de conclusão com **tempo decorrido** da otimização (`⏱ Otimização concluída em Xm Ys.`)
|
||||
- Cor de fundo das células da Escala com Atribuição alterada para transparente
|
||||
|
||||
### Removido
|
||||
- Aba `Parâmetros` do sidebar (TAT mínimo movido para sub-aba Aeronaves; ano de planejamento removido — inferido de `pd.Timestamp.now().year`)
|
||||
|
||||
### Alterado
|
||||
- Campo **TAT mínimo** movido para a sub-aba `Aeronaves` do Input
|
||||
- Largura do campo Tempo do Solver reduzida com `st.columns([1, 1, 4])`
|
||||
|
||||
---
|
||||
|
||||
## [0.1.0] — 2026-06-13
|
||||
|
||||
### Adicionado
|
||||
- **Reescrita completa do dashboard** (`app/dashboard.py`) com estrutura em duas abas principais: `📥 Input` e `📤 Output`
|
||||
- Sub-abas de Input: `Escala de Voo`, `Aeronaves`, `Checks`, `Bases de Manutenção` com `st.data_editor` editável
|
||||
- Suporte a **DataFrames em memória** no pipeline: `load_from_dfs()` em `ingest.py` aceita dados do editor sem gravar em disco
|
||||
- Parâmetro `raw_dfs` em `RoutingPipeline.run()` para passar dados in-memory
|
||||
- Parsing de datas no formato `DD/MM/AAAA` em `_parse_br_date()` (além do legado `DD/mon`)
|
||||
- Backup do dashboard original em `app/dashboard_backup.py`
|
||||
|
||||
### Alterado
|
||||
- `src/routing_engine/pipeline.py`: `run()` recebe `raw_dfs` opcional; chama `load_from_dfs` se fornecido
|
||||
- `src/routing_engine/ingest.py`: adicionada função `load_from_dfs()` com normalização de sinônimos de colunas
|
||||
|
||||
---
|
||||
|
||||
## [0.0.x] — antes de 2026-06-13
|
||||
|
||||
Commits iniciais do repositório: estrutura de pastas, configuração de CI, scripts de inspeção de arquivos, engine de otimização (config, ingest, network_generator, optimizer, maintenance_monitor, metrics, pipeline, quality).
|
||||
Reference in New Issue
Block a user