v1.2 — 20 Mai 2026 (Pipeline Kanban + CI gates)
SGOA-CBMMT
Sistema de Gestao de Operacoes Aereas do Corpo de Bombeiros Militar do Estado de Mato Grosso. Plataforma completa para gerenciamento de missoes aereas, diario de bordo eletronico, controle de frota e tripulacao.
3
Camadas
7
Modulos
16
Tabelas BD
7
Funcoes RBAC
Stack Tecnologico
Tecnologias Utilizadas
FastAPI
Backend API (Python)
Next.js 15
Frontend SSR
React 19
UI Library
Pydantic v2
Validacao & Schemas
Tailwind CSS
Styling
Swagger/OpenAPI
Documentacao Auto
PostgreSQL 16
Banco de Dados
SQLAlchemy 2.0
ORM + Alembic
Redis
Cache & Sessoes
python-jose
Auth JWT + MFA
Docker
Containerizacao
GitHub Actions
CI/CD Pipeline
Sentry
Error Monitoring
Modulos do Sistema
6 Modulos Funcionais
Escala & Ordem de Servico
Criacao de missoes, designacao de tripulacao, validacao regulatoria, geracao de OS em PDF
Diario de Bordo Eletronico
Registro de voo (Parte I), situacao tecnica (Parte II), assinatura digital, calculo automatico de horas
Cadastro de Aeronaves
Dados completos da aeronave, horas de celula, status operacional, programa de manutencao
Cadastro de Tripulantes
Dados militares, licencas CANAC, CMA, habilitacoes, horas voadas automaticas
Dashboard & Relatorios
Painel tempo real, alertas de validade, relatorios mensais, status da frota
Auditoria & Seguranca
Audit log imutavel, RBAC militar, criptografia AES-256, MFA/TOTP
Diagrama 01
Arquitetura Geral do Sistema
Arquitetura em 3 camadas: Apresentacao (Next.js 15 + React 19), Negocio (FastAPI + Pydantic v2) e Dados (PostgreSQL 16 + SQLAlchemy 2.0).
Backend Python desacoplado com Swagger/OpenAPI automatico. Infraestrutura Docker com CI/CD via GitHub Actions.
Camada de Apresentacao
Next.js 15 + React 19 + TypeScript + Tailwind + shadcn/ui. PWA com modo offline.
Camada de Negocio
FastAPI + Pydantic v2 + Swagger Auto. Auth (python-jose), RBAC, validacao regulatoria, PDF.
Camada de Dados
PostgreSQL 16 + SQLAlchemy 2.0 + Alembic + Redis. Audit log imutavel, backup PITR, AES-256.
Infraestrutura
Docker Compose (5 containers), GitHub Actions CI/CD, Sentry, Uptime Kuma.
graph TB
subgraph USUARIOS["USUARIOS"]
direction LR
CMD["Comandante-Geral"]
CHF["Comandante GAvBM"]
PIC["Piloto Comandante"]
SIC["Copiloto"]
TOP["Tripulante Operacional"]
MEC["Mecanico"]
ADM["Admin TI"]
end
subgraph FRONTEND["APRESENTACAO: Next.js 15 + React 19 + TypeScript"]
direction LR
WEB["Web Responsiva
Desktop / Tablet / Mobile"] PWA["PWA Modo Offline
Service Workers + IndexedDB"] UI["Design System
Tailwind CSS + shadcn/ui"] end subgraph API["NEGOCIO: FastAPI + Pydantic v2"] direction LR AUTH["Autenticacao
python-jose + passlib + MFA"] RBAC["Controle de Acesso
RBAC Militar - 7 funcoes"] VALID["Validacao Regulatoria
RBAC 90 / RBAC 61 / CBA"] CALC["Motor de Calculo
Horas - Celula - Jornada"] PDF["Gerador de PDF
Diario de Bordo - OS"] SWAGGER["Swagger/OpenAPI
Documentacao Automatica"] end subgraph DATA["DADOS: PostgreSQL 16 + SQLAlchemy 2.0"] direction LR DB[("PostgreSQL 16
Banco Principal")] AUDIT[("Audit Log
Imutavel")] BACKUP["Backup Automatico
PITR + Diario + 6h"] MIGRATIONS["Alembic Migrations
Versionamento Schema"] end subgraph INTEGRACOES["INTEGRACOES EXTERNAS"] direction LR CBMMT_SIS["Sistemas CBMMT"] CIOPAER["CIOPAer"] ANAC_SIS["ANAC / SACI"] DEFCIV["Defesa Civil"] METEO["REDEMET / INMET"] end subgraph INFRA["INFRAESTRUTURA: Docker Compose + GitHub Actions"] direction LR DOCKER["6 Containers
:3000 Frontend + :8000 API"] CICD["CI/CD
GitHub Actions"] MONITOR["Monitoramento
Sentry + Uptime Kuma"] TLS["Seguranca
TLS 1.3 + HTTPS"] end USUARIOS --> FRONTEND FRONTEND --> API API --> DATA DATA --> API API --> INTEGRACOES INTEGRACOES --> API INFRA -.->|suporta| FRONTEND INFRA -.->|suporta| API INFRA -.->|suporta| DATA style USUARIOS fill:#1B3A5C,stroke:#3b82f6,color:#fff style FRONTEND fill:#1e3a5f,stroke:#60a5fa,color:#fff style API fill:#1a3a6b,stroke:#93c5fd,color:#fff style DATA fill:#1B2A3C,stroke:#475569,color:#fff style INTEGRACOES fill:#1B3A2E,stroke:#10b981,color:#fff style INFRA fill:#2d2a1e,stroke:#f59e0b,color:#fff
Desktop / Tablet / Mobile"] PWA["PWA Modo Offline
Service Workers + IndexedDB"] UI["Design System
Tailwind CSS + shadcn/ui"] end subgraph API["NEGOCIO: FastAPI + Pydantic v2"] direction LR AUTH["Autenticacao
python-jose + passlib + MFA"] RBAC["Controle de Acesso
RBAC Militar - 7 funcoes"] VALID["Validacao Regulatoria
RBAC 90 / RBAC 61 / CBA"] CALC["Motor de Calculo
Horas - Celula - Jornada"] PDF["Gerador de PDF
Diario de Bordo - OS"] SWAGGER["Swagger/OpenAPI
Documentacao Automatica"] end subgraph DATA["DADOS: PostgreSQL 16 + SQLAlchemy 2.0"] direction LR DB[("PostgreSQL 16
Banco Principal")] AUDIT[("Audit Log
Imutavel")] BACKUP["Backup Automatico
PITR + Diario + 6h"] MIGRATIONS["Alembic Migrations
Versionamento Schema"] end subgraph INTEGRACOES["INTEGRACOES EXTERNAS"] direction LR CBMMT_SIS["Sistemas CBMMT"] CIOPAER["CIOPAer"] ANAC_SIS["ANAC / SACI"] DEFCIV["Defesa Civil"] METEO["REDEMET / INMET"] end subgraph INFRA["INFRAESTRUTURA: Docker Compose + GitHub Actions"] direction LR DOCKER["6 Containers
:3000 Frontend + :8000 API"] CICD["CI/CD
GitHub Actions"] MONITOR["Monitoramento
Sentry + Uptime Kuma"] TLS["Seguranca
TLS 1.3 + HTTPS"] end USUARIOS --> FRONTEND FRONTEND --> API API --> DATA DATA --> API API --> INTEGRACOES INTEGRACOES --> API INFRA -.->|suporta| FRONTEND INFRA -.->|suporta| API INFRA -.->|suporta| DATA style USUARIOS fill:#1B3A5C,stroke:#3b82f6,color:#fff style FRONTEND fill:#1e3a5f,stroke:#60a5fa,color:#fff style API fill:#1a3a6b,stroke:#93c5fd,color:#fff style DATA fill:#1B2A3C,stroke:#475569,color:#fff style INTEGRACOES fill:#1B3A2E,stroke:#10b981,color:#fff style INFRA fill:#2d2a1e,stroke:#f59e0b,color:#fff
Diagrama 02
Modulos Funcionais e Fluxo de Dados
Os 7 modulos do sistema e como os dados fluem entre eles. O Modulo de Auditoria (M6) protege transversalmente todos os demais. O Modulo de Gestao de Projetos (M7) permite acompanhar o progresso do desenvolvimento.
graph LR
subgraph M1["MODULO 1\nESCALA e ORDEM DE SERVICO"]
M1A["Criar Missao"]
M1B["Designar Tripulacao"]
M1C["Validacao Regulatoria\nAutomatica"]
M1D["Gerar Ordem de\nServico - PDF"]
M1E["Calendario de Escalas"]
M1A --> M1B --> M1C --> M1D
M1A --> M1E
end
subgraph M2["MODULO 2\nDIARIO DE BORDO ELETRONICO"]
M2A["Parte I\nRegistro de Voo"]
M2B["Parte II\nSituacao Tecnica"]
M2C["Assinatura Digital\ndo PIC"]
M2D["Geracao PDF\nFormato Oficial"]
M2A --> M2C
M2B --> M2C
M2C --> M2D
end
subgraph M3["MODULO 3\nCADASTRO DE AERONAVES"]
M3A["Dados da Aeronave"]
M3B["Horas de Celula\nAutomatico"]
M3C["Status Operacional"]
M3D["Programa de\nManutencao"]
end
subgraph M4["MODULO 4\nCADASTRO DE TRIPULANTES"]
M4A["Dados Pessoais\ne Militares"]
M4B["Licencas e\nHabilitacoes"]
M4C["CMA e Validades"]
M4D["Horas Voadas\nAutomatico"]
end
subgraph M5["MODULO 5\nDASHBOARD e RELATORIOS"]
M5A["Painel em\nTempo Real"]
M5B["Alertas de\nValidade"]
M5C["Relatorios\nMensais"]
M5D["Status da Frota"]
end
subgraph M6["MODULO 6\nAUDITORIA e SEGURANCA"]
M6A["Audit Log\nImutavel"]
M6B["RBAC Militar"]
M6C["Criptografia\ne Backup"]
M6D["MFA e\nSessoes"]
end
subgraph M7["MODULO 7\nGESTAO DE PROJETOS"]
M7A["Painel de\nProgresso"]
M7B["Fases e\nTarefas"]
M7C["Metricas de\nDesenvolvimento"]
M7D["Historico de\nAtualizacoes"]
end
M1 -->|"Missao criada"| M2
M1 -->|"Valida pilotos"| M4
M1 -->|"Valida aeronave"| M3
M2 -->|"Horas registradas"| M3
M2 -->|"Horas do piloto"| M4
M2 -->|"Discrepancias"| M3
M3 --> M5
M4 --> M5
M2 --> M5
M6 -.->|"Protege todos\nos modulos"| M1
M6 -.-> M2
M6 -.-> M3
M6 -.-> M4
M6 -.-> M5
M7 -.->|"Acompanha\ndesenvolvimento"| M5
style M1 fill:#1565C0,stroke:#0D47A1,color:#fff
style M2 fill:#2E7D32,stroke:#1B5E20,color:#fff
style M3 fill:#E65100,stroke:#BF360C,color:#fff
style M4 fill:#6A1B9A,stroke:#4A148C,color:#fff
style M5 fill:#00838F,stroke:#006064,color:#fff
style M6 fill:#C62828,stroke:#B71C1C,color:#fff
style M7 fill:#0D7377,stroke:#065A5E,color:#fff
Diagrama 03
Modelo Entidade-Relacionamento
14 tabelas de negocio + 2 tabelas de auditoria. Todas com campos de auditoria (created_at, updated_at).
Audit Log imutavel (INSERT-only). UUIDs como chave primaria.
Aeronave
Matricula, modelo, horas celula, ciclos, status, CA, inspecoes
Tripulante
Nome, posto militar, CANAC, CMA, horas totais, funcao
Missao
Codigo, tipo, prioridade, aeronave, status, autorizacao
Registro de Voo
Origem, destino, tempos, POB, combustivel, hash SHA-256
erDiagram
AERONAVE {
uuid id PK
string matricula UK
string modelo
string fabricante
decimal horas_celula
int ciclos_totais
enum status
date ca_validade
decimal proxima_inspecao_horas
}
TRIPULANTE {
uuid id PK
string nome_completo
string nome_guerra
enum posto
string canac UK
enum tipo_licenca
date cma_validade
decimal horas_totais
enum funcao_max
}
HABILITACAO {
uuid id PK
uuid tripulante_id FK
enum categoria
enum classe
string tipo_aeronave
boolean ifr
date validade
}
MISSAO {
uuid id PK
string codigo
enum tipo
enum prioridade
date data_planejada
uuid aeronave_id FK
enum status
}
ESCALA_TRIPULANTE {
uuid id PK
uuid missao_id FK
uuid tripulante_id FK
enum funcao_bordo
boolean confirmado
}
ORDEM_SERVICO {
uuid id PK
uuid missao_id FK
string numero
enum status
string hash_documento
}
DIARIO_BORDO {
uuid id PK
uuid aeronave_id FK
string numero_volume
enum status
}
REGISTRO_VOO {
uuid id PK
uuid diario_id FK
uuid missao_id FK
uuid aeronave_id FK
date data_voo
string origem
string destino
time hora_decolagem
time hora_pouso
decimal tempo_voo_total
uuid pic_id FK
uuid sic_id FK
string hash_registro
}
SITUACAO_TECNICA {
uuid id PK
uuid registro_voo_id FK
uuid aeronave_id FK
text comentarios
}
DISCREPANCIA {
uuid id PK
uuid aeronave_id FK
uuid registro_voo_id FK
string codigo
enum severidade
enum status
}
APROVACAO_RETORNO {
uuid id PK
uuid discrepancia_id FK
uuid aeronave_id FK
}
USUARIO {
uuid id PK
uuid tripulante_id FK
string login UK
enum funcao_sistema
boolean mfa_ativo
}
AUDIT_LOG {
uuid id PK
string tabela
enum acao
uuid usuario_id FK
jsonb valor_anterior
jsonb valor_novo
}
NOTIFICACAO {
uuid id PK
uuid usuario_id FK
enum tipo
string titulo
boolean lida
}
AERONAVE ||--o{ DIARIO_BORDO : "possui volumes"
AERONAVE ||--o{ REGISTRO_VOO : "registra voos"
AERONAVE ||--o{ MISSAO : "designada para"
AERONAVE ||--o{ DISCREPANCIA : "tem discrepancias"
TRIPULANTE ||--o{ HABILITACAO : "possui"
TRIPULANTE ||--o{ ESCALA_TRIPULANTE : "escalado em"
TRIPULANTE ||--o| USUARIO : "tem conta"
MISSAO ||--o{ ESCALA_TRIPULANTE : "escala tripulantes"
MISSAO ||--o| ORDEM_SERVICO : "gera OS"
MISSAO ||--o{ REGISTRO_VOO : "origina voos"
DIARIO_BORDO ||--o{ REGISTRO_VOO : "contem registros"
REGISTRO_VOO ||--o| SITUACAO_TECNICA : "tem sit tecnica"
REGISTRO_VOO ||--o{ DISCREPANCIA : "pode gerar"
DISCREPANCIA ||--o| APROVACAO_RETORNO : "corrigida por"
USUARIO ||--o{ AUDIT_LOG : "gera logs"
USUARIO ||--o{ NOTIFICACAO : "recebe"
Diagrama 04
Fluxo Operacional
O ciclo completo de uma missao aerea, da demanda do comando ate a conclusao e eventual manutencao.
6 fases com validacoes automaticas em cada etapa.
Fase 1: Planejamento
Criar missao, selecionar aeronave, validar disponibilidade
Fase 2: Tripulacao
Escalar PIC/SIC/TOP, validar licenca, CMA, experiencia, jornada
Fase 3: Ordem de Servico
Gerar OS, aprovacao oficial, PDF com hash SHA-256
Fase 4: Execucao
Briefing, pre-voo, registro Parte I, calculos automaticos
Fase 5: Pos-Voo
Parte II, discrepancias, assinatura digital, atualizacao totais
Fase 6: Manutencao
Alerta mecanico, correcao, aprovacao retorno ao servico
flowchart TD
START(("Comando\nrecebe demanda")) --> CREATE_MISSION
subgraph FASE1["FASE 1: PLANEJAMENTO DA MISSAO"]
CREATE_MISSION["Criar Missao\nTipo - Prioridade - Local - Data"]
SELECT_AIRCRAFT["Selecionar Aeronave\nSistema mostra disponiveis"]
CHECK_AIRCRAFT{"Aeronave\noperacional?"}
AIRCRAFT_OK["Aeronave OK\nHoras - Manutencao - CA valido"]
AIRCRAFT_BLOCK["BLOQUEIO\nMotivo exibido ao usuario"]
CREATE_MISSION --> SELECT_AIRCRAFT
SELECT_AIRCRAFT --> CHECK_AIRCRAFT
CHECK_AIRCRAFT -->|Sim| AIRCRAFT_OK
CHECK_AIRCRAFT -->|Nao| AIRCRAFT_BLOCK
AIRCRAFT_BLOCK --> SELECT_AIRCRAFT
end
subgraph FASE2["FASE 2: ESCALACAO DA TRIPULACAO"]
SELECT_CREW["Selecionar Tripulacao\nPIC - SIC - Operacionais"]
AUTO_VALIDATE{"Validacao\nAutomatica"}
CHECK_LICENSE["Licenca valida?"]
CHECK_CMA["CMA valido?"]
CHECK_HOURS["Experiencia recente?\n3 pousos / 90 dias"]
CHECK_DUTY["Jornada OK?"]
ALL_OK["Tripulacao\nAPROVADA"]
CREW_BLOCK["BLOQUEIO\nMotivo especifico"]
AIRCRAFT_OK --> SELECT_CREW
SELECT_CREW --> AUTO_VALIDATE
AUTO_VALIDATE --> CHECK_LICENSE
AUTO_VALIDATE --> CHECK_CMA
AUTO_VALIDATE --> CHECK_HOURS
AUTO_VALIDATE --> CHECK_DUTY
CHECK_LICENSE -->|OK| ALL_OK
CHECK_CMA -->|OK| ALL_OK
CHECK_HOURS -->|OK| ALL_OK
CHECK_DUTY -->|OK| ALL_OK
CHECK_LICENSE -->|Falha| CREW_BLOCK
CHECK_CMA -->|Falha| CREW_BLOCK
CHECK_HOURS -->|Falha| CREW_BLOCK
CHECK_DUTY -->|Falha| CREW_BLOCK
CREW_BLOCK --> SELECT_CREW
end
subgraph FASE3["FASE 3: ORDEM DE SERVICO"]
GEN_OS["Gerar Ordem de Servico\nMissao + Aeronave + Tripulacao"]
APPROVE_OS{"Aprovacao\ndo Oficial?"}
OS_APPROVED["OS Aprovada\nPDF gerado + Hash SHA-256"]
OS_REJECTED["OS Rejeitada\nRetorna ao planejamento"]
NOTIFY_CREW["Notificar Tripulacao\nEmail + Push + Sistema"]
ALL_OK --> GEN_OS
GEN_OS --> APPROVE_OS
APPROVE_OS -->|Aprovada| OS_APPROVED
APPROVE_OS -->|Rejeitada| OS_REJECTED
OS_REJECTED --> CREATE_MISSION
OS_APPROVED --> NOTIFY_CREW
end
subgraph FASE4["FASE 4: EXECUCAO DO VOO"]
BRIEFING["Briefing\nTripulacao confirma"]
PRE_FLIGHT["Pre-Voo\nChecklist da aeronave"]
REGISTER_FLIGHT["Registro de Voo\nDiario de Bordo - Parte I"]
FILL_FIELDS["Preencher Campos\nOrigem - Destino - Decolagem\nPouso - POB - Combustivel"]
AUTO_CALC["Calculos Automaticos\nTempo voo - Horas celula\nCiclos - Totais acumulados"]
NOTIFY_CREW --> BRIEFING
BRIEFING --> PRE_FLIGHT
PRE_FLIGHT --> REGISTER_FLIGHT
REGISTER_FLIGHT --> FILL_FIELDS
FILL_FIELDS --> AUTO_CALC
end
subgraph FASE5["FASE 5: POS-VOO"]
TECH_STATUS["Situacao Tecnica\nDiario de Bordo - Parte II"]
HAS_DISCREP{"Ha\ndiscrepancia?"}
REG_DISCREP["Registrar Discrepancia\nDescricao - Severidade"]
NO_DISCREP["Sem discrepancias"]
SIGN_DIGITAL["Assinatura Digital\nPIC assina o registro"]
HASH_RECORD["Hash SHA-256\nRegistro imutavel"]
UPDATE_TOTALS["Atualizar Totais\nHoras piloto - Horas aeronave\nCiclos - Dashboard"]
AUTO_CALC --> TECH_STATUS
TECH_STATUS --> HAS_DISCREP
HAS_DISCREP -->|Sim| REG_DISCREP
HAS_DISCREP -->|Nao| NO_DISCREP
REG_DISCREP --> SIGN_DIGITAL
NO_DISCREP --> SIGN_DIGITAL
SIGN_DIGITAL --> HASH_RECORD
HASH_RECORD --> UPDATE_TOTALS
end
subgraph FASE6["FASE 6: MANUTENCAO"]
MAINT_ALERT["Alerta ao Mecanico"]
FIX["Correcao Realizada"]
APPROVE_RETURN["Aprovacao de Retorno\nao Servico"]
AIRCRAFT_AVAILABLE["Aeronave Disponivel\nStatus atualizado"]
REG_DISCREP --> MAINT_ALERT
MAINT_ALERT --> FIX
FIX --> APPROVE_RETURN
APPROVE_RETURN --> AIRCRAFT_AVAILABLE
end
UPDATE_TOTALS --> DONE(("Missao\nConcluida"))
style FASE1 fill:#E3F2FD,stroke:#1565C0,color:#0D47A1
style FASE2 fill:#E8F5E9,stroke:#2E7D32,color:#1B5E20
style FASE3 fill:#FFF3E0,stroke:#E65100,color:#BF360C
style FASE4 fill:#F3E5F5,stroke:#6A1B9A,color:#4A148C
style FASE5 fill:#E0F7FA,stroke:#00838F,color:#006064
style FASE6 fill:#FFEBEE,stroke:#C62828,color:#B71C1C
Diagrama 05
Mapa de Telas da Interface
Navegacao completa do sistema a partir do Login/Dashboard.
Cada modulo possui telas de listagem, detalhe, criacao e acoes especificas.
graph TD
LOGIN["LOGIN\nCredenciais + MFA"] --> DASHBOARD
subgraph MAIN["TELA PRINCIPAL"]
DASHBOARD["DASHBOARD\nFrota - Missoes - Alertas\nHoras Voadas - Escalas"]
end
DASHBOARD --> NAV_ESCALA
DASHBOARD --> NAV_DIARIO
DASHBOARD --> NAV_AERONAVES
DASHBOARD --> NAV_TRIPULANTES
DASHBOARD --> NAV_RELATORIOS
DASHBOARD --> NAV_ADMIN
subgraph ESCALA_SCREENS["TELAS: ESCALA e MISSOES"]
NAV_ESCALA["Escalas"]
ESCALA_LIST["Lista de Missoes\nFiltros: Data - Tipo - Status"]
ESCALA_NEW["Nova Missao\nFormulario completo"]
ESCALA_CALENDAR["Calendario\nVisao: Dia - Semana - Mes"]
ESCALA_OS["Ordem de Servico\nPreview PDF"]
NAV_ESCALA --> ESCALA_LIST
ESCALA_LIST --> ESCALA_NEW
ESCALA_LIST --> ESCALA_CALENDAR
ESCALA_NEW --> ESCALA_OS
end
subgraph DIARIO_SCREENS["TELAS: DIARIO DE BORDO"]
NAV_DIARIO["Diario de Bordo"]
DIARIO_LIST["Volumes do Diario"]
DIARIO_PAGE["Pagina do Diario\nParte I - Registro de Voo"]
DIARIO_NEW["Novo Registro de Voo"]
DIARIO_TECH["Situacao Tecnica"]
DIARIO_PDF["Gerar PDF"]
NAV_DIARIO --> DIARIO_LIST
DIARIO_LIST --> DIARIO_PAGE
DIARIO_PAGE --> DIARIO_NEW
DIARIO_PAGE --> DIARIO_TECH
DIARIO_PAGE --> DIARIO_PDF
end
subgraph AERONAVE_SCREENS["TELAS: AERONAVES"]
NAV_AERONAVES["Aeronaves"]
AERO_LIST["Frota\nLista de aeronaves"]
AERO_DETAIL["Detalhe Aeronave\nHoras - Ciclos - Manutencao"]
NAV_AERONAVES --> AERO_LIST
AERO_LIST --> AERO_DETAIL
end
subgraph TRIP_SCREENS["TELAS: TRIPULANTES"]
NAV_TRIPULANTES["Tripulantes"]
TRIP_LIST["Efetivo\nLista de tripulantes"]
TRIP_DETAIL["Detalhe Tripulante\nHoras - Licencas - CMA"]
NAV_TRIPULANTES --> TRIP_LIST
TRIP_LIST --> TRIP_DETAIL
end
subgraph REPORT_SCREENS["TELAS: RELATORIOS"]
NAV_RELATORIOS["Relatorios"]
REP_MONTHLY["Relatorio Mensal"]
REP_ALERTS["Painel de Alertas"]
REP_DISCREP["Discrepancias"]
REP_AUDIT["Log de Auditoria"]
NAV_RELATORIOS --> REP_MONTHLY
NAV_RELATORIOS --> REP_ALERTS
NAV_RELATORIOS --> REP_DISCREP
NAV_RELATORIOS --> REP_AUDIT
end
subgraph ADMIN_SCREENS["TELAS: ADMINISTRACAO"]
NAV_ADMIN["Admin"]
ADM_USERS["Gestao de Usuarios"]
ADM_CONFIG["Configuracoes"]
ADM_BACKUP["Backup e Logs"]
NAV_ADMIN --> ADM_USERS
NAV_ADMIN --> ADM_CONFIG
NAV_ADMIN --> ADM_BACKUP
end
style MAIN fill:#1B3A5C,stroke:#0D2137,color:#fff
style ESCALA_SCREENS fill:#E3F2FD,stroke:#1565C0,color:#0D47A1
style DIARIO_SCREENS fill:#E8F5E9,stroke:#2E7D32,color:#1B5E20
style AERONAVE_SCREENS fill:#FFF3E0,stroke:#E65100,color:#BF360C
style TRIP_SCREENS fill:#F3E5F5,stroke:#6A1B9A,color:#4A148C
style REPORT_SCREENS fill:#E0F7FA,stroke:#00838F,color:#006064
style ADMIN_SCREENS fill:#FFEBEE,stroke:#C62828,color:#B71C1C
Diagrama 06
RBAC Militar & Seguranca
7 funcoes com hierarquia militar. Autenticacao com MFA/TOTP, controle de acesso granular por modulo,
e fluxo de seguranca com audit log em todas as operacoes.
| Funcao | Escalas | Diario P.I | Diario P.II | Aeronaves | Tripulantes | Dashboard | Admin |
|---|---|---|---|---|---|---|---|
| Comandante-Geral | CRUD | CRUD | CRUD | CRUD | CRUD | Total | Total |
| Comandante GAvBM | CRUD | Read | Read | CRUD | CRUD | Total | -- |
| Piloto Comandante (PIC) | Read | CRUD | Create | Read | Proprio | Parcial | -- |
| Copiloto (SIC) | Read | Parcial | -- | Read | Proprio | Parcial | -- |
| Tripulante Operacional | Read | Read | -- | -- | Proprio | -- | -- |
| Mecanico / Manutencao | -- | Read | CRUD | Status | -- | Parcial | -- |
| Administrador TI | -- | -- | -- | -- | -- | -- | Total |
graph TD
subgraph HIERARQUIA["HIERARQUIA DE ACESSO"]
direction TB
R1["COMANDANTE-GERAL\n---\nTudo\nAprovar missoes estrategicas\nGestao de usuarios\nRelatorios completos"]
R2["COMANDANTE GAvBM\n---\nCriar/gerenciar missoes\nDesignar tripulacoes\nAprovar ordens de servico\nCadastro aeronaves"]
R3["PILOTO COMANDANTE - PIC\n---\nVer/aceitar escalas\nPreencher diario Parte I\nRegistrar discrepancias\nAssinar digitalmente"]
R4["COPILOTO - SIC\n---\nVer escalas\nCampos especificos diario\nRegistrar observacoes\nVer proprias horas"]
R5["TRIPULANTE OPERACIONAL\n---\nVer escalas\nConfirmar apresentacao\nLeitura registros de voo"]
R6["MECANICO / MANUTENCAO\n---\nPreencher Parte II diario\nAprovar retorno ao servico\nGerenciar discrepancias"]
R7["ADMINISTRADOR TI\n---\nConfiguracao sistema\nBackup/restauracao\nLogs tecnicos\nIntegracoes"]
R1 --> R2
R2 --> R3
R3 --> R4
R4 --> R5
R2 --> R6
R1 --> R7
end
subgraph SECURITY_FLOW["FLUXO DE SEGURANCA"]
direction TB
S1["Requisicao HTTPS\nTLS 1.3"]
S2["Autenticacao\nLogin + Senha"]
S3{"MFA\nRequerido?"}
S4["Verificacao 2FA\nTOTP"]
S5["Verificar RBAC\nFuncao e Permissoes"]
S6{"Tem\npermissao?"}
S7["Executar Acao"]
S8["Registrar no\nAudit Log"]
S9["ACESSO NEGADO\n403 Forbidden"]
S10["Log de Tentativa\nNegada"]
S1 --> S2
S2 --> S3
S3 -->|Sim| S4
S3 -->|Nao| S5
S4 --> S5
S5 --> S6
S6 -->|Sim| S7
S6 -->|Nao| S9
S7 --> S8
S9 --> S10
end
style HIERARQUIA fill:#F5F5F5,stroke:#1B3A5C,color:#1B3A5C
style SECURITY_FLOW fill:#FFF8E1,stroke:#F57F17,color:#333
style R1 fill:#1B3A5C,stroke:#0D2137,color:#fff
style R2 fill:#2E5984,stroke:#1B3A5C,color:#fff
style R3 fill:#4A90D9,stroke:#2E5984,color:#fff
style R4 fill:#64B5F6,stroke:#4A90D9,color:#1B3A5C
style R5 fill:#90CAF9,stroke:#64B5F6,color:#1B3A5C
style R6 fill:#E65100,stroke:#BF360C,color:#fff
style R7 fill:#78909C,stroke:#546E7A,color:#fff
Diagrama 07
Infraestrutura & Deploy
Stack Docker Compose com 6 containers: Next.js (frontend), FastAPI (backend), PostgreSQL, Redis, Backup e Uptime Kuma.
Backend desacoplado com Swagger/OpenAPI auto. CI/CD via GitHub Actions.
Next.js 15 (Frontend)
SSR puro, sem API Routes. Consome FastAPI via REST. Port 3000.
FastAPI (Backend)
API REST + Pydantic v2 + Swagger/OpenAPI auto. Port 8000.
PostgreSQL 16
Dados + Audit Log. Port 5432. Volume criptografado.
Redis
Sessoes + Cache. Port 6379.
Uptime Kuma
Health monitoring. Port 3001.
graph TB
subgraph CLIENTS["CLIENTES"]
DESKTOP["Desktop\nChrome / Firefox / Edge"]
TABLET["Tablet em Campo\nPWA + Modo Offline"]
MOBILE["Celular\nPWA Responsivo"]
end
subgraph CDN_LAYER["CAMADA DE REDE"]
DNS["DNS\nsgoa.cbmmt.gov.br"]
HTTPS_L["TLS 1.3 / Certificado Gov.br"]
FIREWALL["Firewall\nWAF + Rate Limiting"]
end
subgraph CONTAINER_WEB["Frontend: Next.js 15"]
NEXTJS["Next.js 15\nSSR - Pure Frontend\nPort 3000"]
end
subgraph CONTAINER_API["Backend: FastAPI"]
FASTAPI["FastAPI\nPydantic v2 + Swagger\nPort 8000"]
end
subgraph CONTAINER_DB["Banco: PostgreSQL 16"]
POSTGRES["PostgreSQL 16\nDados + Audit Log\nPort 5432"]
end
subgraph CONTAINER_REDIS["Cache: Redis"]
REDIS["Redis\nSessoes + Cache\nPort 6379"]
end
subgraph CONTAINER_BACKUP["Backup: pg_basebackup"]
PGBACKUP["pg_basebackup\nPITR + Cron\nDiario + 6h"]
end
subgraph CONTAINER_MONITOR["Monitor: Uptime Kuma"]
UPTIME["Uptime Kuma\nHealth Checks\nPort 3001"]
end
subgraph STORAGE["ARMAZENAMENTO"]
VOL_DB["Volume dados_postgres\nPersistente - Criptografado"]
VOL_BACKUP["Volume backups\n365 dias retencao"]
VOL_PDF["Volume pdfs_gerados\nOS - Diarios - Relatorios"]
end
subgraph EXTERNAL["SERVICOS EXTERNOS"]
SENTRY["Sentry\nMonitoramento de Erros"]
SMTP_S["SMTP Institucional\nNotificacoes por Email"]
CBMMT_API["API CBMMT\nSistemas Existentes"]
REDEMET["REDEMET\nMeteorologia"]
end
subgraph CICD_PIPELINE["CI/CD: GitHub Actions"]
GIT["GitHub Repo\nbranch main + staging"]
LINT["Lint + Type Check"]
TEST["Testes Automatizados"]
BUILD["Docker Build"]
DEPLOY["Deploy\ndocker compose up"]
end
CLIENTS --> CDN_LAYER
CDN_LAYER --> CONTAINER_WEB
NEXTJS --> FASTAPI
FASTAPI --> NEXTJS
FASTAPI --> POSTGRES
POSTGRES --> FASTAPI
FASTAPI --> REDIS
POSTGRES --> PGBACKUP
POSTGRES --> VOL_DB
PGBACKUP --> VOL_BACKUP
FASTAPI --> VOL_PDF
FASTAPI --> SENTRY
FASTAPI --> SMTP_S
FASTAPI --> CBMMT_API
FASTAPI --> REDEMET
UPTIME --> NEXTJS
UPTIME --> FASTAPI
UPTIME --> POSTGRES
GIT --> LINT
LINT --> TEST
TEST --> BUILD
BUILD --> DEPLOY
DEPLOY --> CONTAINER_WEB
DEPLOY --> CONTAINER_API
style CLIENTS fill:#E3F2FD,stroke:#1565C0,color:#0D47A1
style CDN_LAYER fill:#FFF3E0,stroke:#E65100,color:#BF360C
style CONTAINER_WEB fill:#E8F5E9,stroke:#2E7D32,color:#1B5E20
style CONTAINER_API fill:#E8F5E9,stroke:#2E7D32,color:#1B5E20
style CONTAINER_DB fill:#E8F5E9,stroke:#2E7D32,color:#1B5E20
style CONTAINER_REDIS fill:#E8F5E9,stroke:#2E7D32,color:#1B5E20
style CONTAINER_BACKUP fill:#E8F5E9,stroke:#2E7D32,color:#1B5E20
style CONTAINER_MONITOR fill:#E8F5E9,stroke:#2E7D32,color:#1B5E20
style STORAGE fill:#F3E5F5,stroke:#6A1B9A,color:#4A148C
style EXTERNAL fill:#E0F7FA,stroke:#00838F,color:#006064
style CICD_PIPELINE fill:#FFF8E1,stroke:#F57F17,color:#333
Diagrama 08
Cronograma de Desenvolvimento
7 fases de Mar a Jun 2026. Go-live previsto para 22 de junho de 2026.
Inclui operacao paralela (digital + papel) e treinamento dos usuarios.
Fase 1: Infraestrutura
Mar 2-20 | Docker, PostgreSQL, Auth, RBAC, Design System
Fase 2: Cadastros
Mar 20 - Abr 6 | Aeronaves, Tripulantes, Habilitacoes, Dados reais
Fase 3: Escala & OS
Abr 6-20 | Missoes, Validacao, OS + PDF, Calendario
Fase 4: Diario de Bordo
Abr 20 - Mai 11 | Registro voo, Parte II, Calculos, Assinatura, PDF
Fase 5: Dashboard
Mai 11-25 | Dashboard real-time, Alertas, Relatorios mensais
Fases 6-7: Integracao & Go-Live
Mai 25 - Jun 22 | API REST, Testes OWASP, Operacao paralela, Treinamento
Investimento
Custos de Desenvolvimento & Infraestrutura
Previsao de investimentos necessarios para garantir qualidade, eficiencia e produtividade no desenvolvimento
do SGOA-CBMMT, bem como documentacao profissional para futuras integracoes, manutencoes e evolucoes do sistema.
R$ 13.236
Licencas & Copilots /ano
R$ 12.500
Equipamento (unico)
R$ 3.720
Infra & Servicos /ano
R$ 2.880
Documentacao & QA (unico)
R$ 32.336
Total 1o Ano
1. Licencas de Software & Assistentes IA
Ferramentas que aceleram o desenvolvimento, reduzem erros e garantem qualidade de codigo
| Item | Modalidade | Periodo | Valor (R$) |
|---|---|---|---|
| Claude Max (Anthropic) Assistente IA avancado para arquitetura, code review, debugging, documentacao tecnica e geracao de codigo complexo. Principal copilot do projeto. Acesso prioritario ao modelo Opus. | Assinatura | Mensal | R$ 550/mes |
| GitHub Copilot Business Autocompletar inteligente em tempo real no IDE. Acelera escrita de codigo repetitivo, testes, tipos e boilerplate. | Assinatura | Mensal | R$ 114/mes (US$ 19) |
| Cursor Pro IDE IDE com IA integrada nativa. Editar codigo em linguagem natural, refactoring assistido, contexto de projeto inteiro. | Assinatura | Mensal | R$ 120/mes (US$ 20) |
| Vercel Pro Deploy e hosting do Next.js 15. Preview deployments por PR, analytics, edge functions, dominio customizado. | Assinatura | Mensal | R$ 120/mes (US$ 20) |
| Figma Professional Design de telas, prototipacao interativa, design system, handoff para desenvolvimento. Essencial para UI/UX. | Assinatura | Mensal | R$ 78/mes (US$ 13) |
| GitHub Team Repositorio privado, Actions CI/CD (3.000 min/mes), code review, projects, branch protection rules. | Assinatura | Mensal | R$ 25/mes (US$ 4) |
| Subtotal Licencas & Copilots | R$ 1.103/mes = R$ 13.236/ano | ||
Justificativa — Copilots de IA: Estudos demonstram que assistentes de IA aumentam a produtividade de desenvolvimento em 30-55% (GitHub, 2024). Para um projeto com prazo agressivo (4 meses) e equipe enxuta, o uso de Claude + Copilot + Cursor reduz significativamente o tempo de codificacao, melhora a qualidade do codigo e permite gerar documentacao tecnica consistente. O investimento em copilots se paga em semanas de produtividade ganhas.
2. Equipamento de Desenvolvimento
Estacao de trabalho adequada para desenvolvimento full-stack com Docker, banco de dados local e testes
| Item | Especificacao | Justificativa | Valor (R$) |
|---|---|---|---|
| Notebook Desenvolvimento Estacao principal para desenvolvimento full-stack, Docker e testes integrados | Intel i7/Ryzen 7 (13a+ gen) 32GB RAM DDR5 SSD NVMe 512GB Tela 15.6" FHD IPS |
Docker Compose (5 containers) + IDE + browser + banco local exigem no minimo 32GB RAM. SSD NVMe para build rapido do Next.js. | R$ 7.500 |
| Monitor Externo 27" Tela auxiliar para produtividade em multiplas janelas | 27" QHD (2560x1440) IPS, ajuste de altura |
Visualizar codigo, banco de dados, browser e terminal simultaneamente. Ganho de produtividade comprovado de 20-30%. | R$ 1.800 |
| Perifericos Teclado mecanico + mouse ergonomico + hub USB-C | Teclado mecanico ABNT2 Mouse ergonomico Hub USB-C 7 portas |
Ergonomia e produtividade para jornadas longas de desenvolvimento. | R$ 700 |
| Nobreak / UPS Protecao contra queda de energia e oscilacoes | 1200VA / 600W Autonomia: 20-30 min |
Proteger equipamento e evitar perda de trabalho em andamento. Essencial para ambiente de desenvolvimento com Docker rodando. | R$ 600 |
| Headset com Microfone Para reunioes, alinhamentos e pair-programming remoto | Over-ear, cancelamento de ruido Microfone bidirecional |
Comunicacao clara em reunioes de levantamento de requisitos e validacao com usuarios do CBMMT. | R$ 400 |
| Cadeira Ergonomica Apoio lombar ajustavel, bracos regulaveis | Certificacao NR-17 Apoio lombar e cervical |
Prevencao de lesoes por esforco repetitivo. Desenvolvimento intensivo exige ergonomia adequada. | R$ 1.500 |
| Subtotal Equipamento | R$ 12.500 | ||
3. Infraestrutura & Servicos em Nuvem
Servicos de producao para hospedar, monitorar e proteger o sistema apos o go-live
| Item | Plano / Specs | Justificativa | Valor (R$) |
|---|---|---|---|
| Servidor VPS (Producao) Servidor Linux para Docker Compose: Next.js + PostgreSQL + Redis + Backup + Uptime Kuma | 4 vCPU, 8GB RAM 200GB SSD NVMe 5TB transferencia |
Rodar os 5 containers Docker com folga. PostgreSQL com dados criptografados. Backup PITR local. | R$ 150/mes |
| Dominio gov.br + DNS sgoa.cbmmt.gov.br — dominio institucional governamental | Dominio .gov.br DNS gerenciado |
Credibilidade institucional. Dominio governamental obrigatorio para sistemas publicos. | R$ 0 (gov.br gratuito) |
| Certificado SSL/TLS HTTPS obrigatorio — Let's Encrypt ou certificado governamental | TLS 1.3 Renovacao automatica |
Seguranca obrigatoria para dados militares e operacionais. | R$ 0 (Let's Encrypt) |
| Sentry (Error Monitoring) Monitoramento de erros em producao, alertas, stack traces, performance | Plano Team 50k eventos/mes |
Detectar erros em producao antes que os usuarios reportem. Essencial para sistema critico de operacoes aereas. | R$ 156/mes (US$ 26) |
| Backup Offsite (S3-compatible) Backup externo dos dados PostgreSQL — retencao 365 dias | 50GB armazenamento Criptografia AES-256 |
Redundancia geografica dos backups. Protecao contra desastres no servidor principal. | R$ 4/mes |
| Subtotal Infraestrutura | R$ 310/mes = R$ 3.720/ano | ||
4. Documentacao Profissional & Qualidade
Investimento em documentacao tecnica para garantir manutencao, evolucao e integracao futura do sistema
| Entregavel | Descricao | Beneficio | Valor (R$) |
|---|---|---|---|
| Documentacao API (Swagger/OpenAPI) Especificacao completa de todos os endpoints REST (gerada automaticamente pelo FastAPI/Swagger) | Documentacao interativa com exemplos de request/response, autenticacao, codigos de erro, rate limits. | Permite integracao com sistemas CBMMT, CIOPAer, ANAC sem dependencia do desenvolvedor original. | R$ 480 |
| Storybook (Component Library) Catalogo visual de todos os componentes React do sistema | Cada componente documentado com props, variantes, estados e exemplos de uso. | Novos desenvolvedores entendem e reutilizam componentes sem ler o codigo-fonte. Acelera manutencao. | R$ 360 |
| Guia de Arquitetura & ADRs Architecture Decision Records — registro de todas as decisoes tecnicas | Por que FastAPI? Por que SQLAlchemy? Por que Next.js no frontend? Cada decisao documentada com contexto, alternativas e consequencias. | Futuras equipes entendem o "por que" de cada decisao. Evita retrabalho e decisoes conflitantes. | R$ 360 |
| Manual do Desenvolvedor Setup do ambiente, convencoes de codigo, fluxo de Git, padrao de commits | Passo a passo para novo dev configurar ambiente, rodar Docker, executar testes, fazer deploy. | Onboarding de novos desenvolvedores em horas, nao semanas. Padronizacao de qualidade. | R$ 360 |
| Manual do Usuario Guia operacional para tripulantes, mecanicos e gestores do CBMMT | Screenshots, passo a passo de cada modulo, FAQ, troubleshooting. | Usuarios autonomos. Reduz chamados de suporte e necessidade de treinamento presencial continuo. | R$ 480 |
| Plano de Testes & QA Suite de testes automatizados (unit, integration, e2e) + plano de testes manuais | Testes Vitest (unit), Playwright (e2e), testes de seguranca OWASP, testes de carga. | Garantir que atualizacoes futuras nao quebrem funcionalidades existentes. Confianca para evoluir o sistema. | R$ 480 |
| Documentacao de Integracao Guias especificos para integracao com sistemas externos | Webhooks, formatos de dados, autenticacao inter-sistema, exemplos CIOPAer, ANAC/SACI, Defesa Civil. | Viabiliza integracoes futuras com minimo esforco. Padroniza contratos de dados entre sistemas. | R$ 360 |
| Subtotal Documentacao & QA | R$ 2.880 | ||
Justificativa — Documentacao Profissional: Sistemas governamentais exigem continuidade operacional independente de fornecedor. Uma documentacao completa (API, componentes, arquitetura, manuais) garante que qualquer desenvolvedor ou equipe futura possa dar manutencao, corrigir bugs, adicionar funcionalidades ou integrar com novos sistemas sem depender do conhecimento tacito do desenvolvedor original. O custo de NAO documentar e exponencialmente maior — reescrita parcial ou total do sistema.
Resumo do Investimento Total
Projecao para o primeiro ano de desenvolvimento e operacao
| Categoria | Tipo | Valor (R$) |
|---|---|---|
| 1. Licencas & Copilots de IA | Recorrente (anual) | R$ 13.236 |
| 2. Equipamento de Desenvolvimento | Investimento unico | R$ 12.500 |
| 3. Infraestrutura & Servicos | Recorrente (anual) | R$ 3.720 |
| 4. Documentacao & QA | Investimento unico | R$ 2.880 |
| TOTAL 1o ANO (setup + 12 meses) | R$ 32.336 | |
| Custo recorrente anual (anos seguintes) | R$ 16.956/ano | |
| Custo mensal recorrente (apos 1o ano) | R$ 1.413/mes | |
Observacoes Importantes:
1. Valores em Real (BRL) foram estimados com base na cotacao de R$ 6,00/USD. Licencas internacionais podem variar conforme cambio.
2. Copilots de IA nao sao luxo — sao multiplicadores de produtividade. Um desenvolvedor com Claude + Copilot + Cursor produz em 4 meses o equivalente a 8-10 meses de desenvolvimento tradicional. Para cumprir o cronograma Mar-Jun 2026, sao indispensaveis.
3. Documentacao e investimento, nao custo. Sistemas sem documentacao profissional custam 3-5x mais para manter a longo prazo. A documentacao entregue permite autonomia total do CBMMT para futuras evolucoes.
4. Equipamento permanece como patrimonio do CBMMT, podendo ser utilizado em outros projetos de TI apos a conclusao do SGOA.
5. ROI estimado: A digitalizacao do diario de bordo, ordens de servico e escalas elimina custos de impressao, reduz erros operacionais e economiza centenas de horas/ano em trabalho manual. O investimento total se paga em 6-12 meses de operacao.
1. Valores em Real (BRL) foram estimados com base na cotacao de R$ 6,00/USD. Licencas internacionais podem variar conforme cambio.
2. Copilots de IA nao sao luxo — sao multiplicadores de produtividade. Um desenvolvedor com Claude + Copilot + Cursor produz em 4 meses o equivalente a 8-10 meses de desenvolvimento tradicional. Para cumprir o cronograma Mar-Jun 2026, sao indispensaveis.
3. Documentacao e investimento, nao custo. Sistemas sem documentacao profissional custam 3-5x mais para manter a longo prazo. A documentacao entregue permite autonomia total do CBMMT para futuras evolucoes.
4. Equipamento permanece como patrimonio do CBMMT, podendo ser utilizado em outros projetos de TI apos a conclusao do SGOA.
5. ROI estimado: A digitalizacao do diario de bordo, ordens de servico e escalas elimina custos de impressao, reduz erros operacionais e economiza centenas de horas/ano em trabalho manual. O investimento total se paga em 6-12 meses de operacao.
Downloads
Documentos do Projeto
Documentacao tecnica completa do SGOA-CBMMT disponivel para download.
Projeto de Engenharia de Software e Arquitetura detalhada com stack FastAPI + Next.js.
Projeto de Engenharia de Software v2
Documento completo com requisitos funcionais e nao-funcionais, casos de uso, regras de negocio, modelo de dados e especificacoes tecnicas do SGOA-CBMMT.
↧ Download
Arquitetura FastAPI + Next.js v2
Arquitetura tecnica detalhada do stack FastAPI + Pydantic v2 + SQLAlchemy 2.0 no backend e Next.js 15 + React 19 no frontend. Inclui diagramas, fluxos e justificativas.
↧ Download