Pular para conteúdo

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.