SGOA-CBMMT
Sistema de Gestao de Operacoes Aereas
Scroll p/ zoom • Arraste p/ mover • Duplo-clique p/ resetar
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.
■ Arquitetura Geral
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
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.
▶ Modulos Funcionais
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
● Diagrama ER
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
▸ Fluxo Operacional
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.
□ Mapa de Telas
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
⚠ Hierarquia RBAC + Fluxo de Seguranca
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.
☁ Infraestrutura
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
☰ Cronograma Gantt
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
R$ 13.236/ano
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
R$ 12.500 (unico)
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
R$ 3.720/ano
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
R$ 2.880 (unico)
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.
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.
Selecionar Secao
Overview 1 / 11