Arquitetura¶
Visão geral¶
flowchart LR
U[Usuários] -->|HTTPS| NPM[Nginx Proxy Manager]
NPM -->|HTTP :80| NG[nginx interno]
subgraph CT Proxmox - Debian 12 - Docker Compose
NG -->|/docs| DOCS[Documentação estática]
NG -->|/api /admin| WEB[web - Django + Gunicorn]
WEB --> DB[(PostgreSQL 17 + PostGIS)]
WEB --> R[(Redis)]
BEAT[beat - agendador] --> R
R --> WK[worker - Celery]
WK --> DB
end
WK -->|SNMP / SSH / Telnet| OLT[OLTs]
OLT -.->|traps / syslog - F4| WK
WK -->|F4| WA[Evolution API - WhatsApp]
| Container | Função |
|---|---|
nginx |
Porta de entrada. Serve a documentação e encaminha API/admin para o web |
web |
Aplicação Django: API, admin, regras de negócio. Aplica as migrações ao subir |
worker |
Executa tarefas em segundo plano: consultas às OLTs, alertas, relatórios |
beat |
Dispara as tarefas agendadas (horários editáveis no admin) |
db |
PostgreSQL 17 + PostGIS: todos os dados, inclusive geográficos |
redis |
Fila de tarefas entre beat, web e worker |
Módulos (apps Django)¶
| Módulo | Conteúdo | Fase |
|---|---|---|
core |
Usuários, papéis, auditoria | F0 |
rede |
POP, poste, cabo, fibra, emenda, reserva técnica, CTO, splitter, portas | F1/F2 |
olt |
OLT, placa, porta PON, drivers por fabricante | F1/F3 |
onu |
ONU (entidade única), pendentes, autorização, eventos | F1/F3 |
clientes |
Cliente (fonte única), vínculo ONU ↔ porta de CTO | F1/F2 |
potencia |
Orçamento óptico calculado × RX medido | F2/F4 |
monitoramento |
Histórico de RX, limiares, alertas, offline, rompimento | F4 |
notificacoes |
WhatsApp: templates, destinos, automações | F4 |
importacao |
Importadores (somente leitura) de sistemas anteriores | F5 |
Cadeia central do modelo: OLT → porta PON → splitter(s) → CTO → porta da CTO → cliente ↔ ONU.
Comunicação com as OLTs¶
O núcleo do sistema não conhece a marca da OLT. Cada fabricante tem um driver que implementa a mesma interface. Detalhes em ADR 0007.
Fora do escopo inicial¶
Integrações com MikroTik/BNG, MK-Auth/RADIUS, TR-069/ACS e Zabbix ficam para depois da virada.