Pular para conteúdo

Rede física

Código: backend/apps/rede/ · Diagrama completo: Modelo de dados · Decisão: ADR 0012

Toda geografia usa geography (SRID 4326, latitude/longitude): distâncias e comprimentos saem em metros, sem projeção.

Entidades

Model Uso Regras
Pop Ponto de presença (onde ficam OLTs e DIOs) —
Poste Poste com código, proprietário e código da concessionária —
Caixa CTO (atende clientes), CEO (emenda) ou DIO (distribuidor no POP) Código único sem diferenciar maiúsculas (guardado em maiúsculas). Precisa de localização ou de POP
ModeloCabo Quantidade de fibras, fibras por tubo e padrão de cores (ABNT ou EIA) —
Cabo Alimentador, distribuição ou drop, com traçado no mapa e pontas A/B (caixa ou POP) Comprimento calculado pelo traçado; fibras criadas automaticamente pelo modelo
Fibra Fibra do cabo: número, tubo e cores Criadas pelo sistema
ReservaTecnica Sobra de cabo num ponto (metros) —
Fusao Liga duas fibras dentro de uma caixa (fusão ou conector), com perda Fibra A ≠ fibra B
Splitter Na caixa ou no POP/armário; razão 1:2 a 1:64, balanceado ou não (ex.: 5:95 = 1:2 desbalanceado) Uma única entrada: fibra, porta de outro splitter (cascata) ou porta PON direta (quando o caminho de fibra não está documentado)
PortaSplitter Porta de saída. Na CTO é a porta da CTO onde liga a ONU. Pode ter fibra de saída (leva o sinal por um cabo até outra caixa) Uma ONU por porta; portas de CEO/DIO nascem como cascata; porta com fibra de saída é de cascata

Caminho até a OLT

Splitter.porta_pon_origem é calculado (não se edita). A partir do splitter, o sistema sobe pela entrada de cada um: porta PON direta (fim); porta de outro splitter (sobe para ele); ou fibra — segue as fusões e encontra a porta PON cuja fibra_saida está nesse caminho, ou a porta de splitter cuja fibra_saida está nele (ex.: primário na CEO), e continua subindo. É recalculado automaticamente, uma vez por transação, quando muda um splitter, uma fusão ou uma porta PON (apps/rede/sinais.py).

flowchart LR
  PON[Porta PON] -->|fibra_saida| F1[Fibra do alimentador]
  F1 -->|Fusão na CEO| F2[Fibra da distribuição]
  F2 -->|entrada_fibra| S1[Splitter 1:8 na CTO]
  S1 --> P[Porta da CTO]
  P --> ONU
  S1 -->|porta de cascata| S2[Splitter 1:2]

Ocupação das portas

PortaSplitter.situacao: ocupada (tem ONU ou alimenta outro splitter), livre, reservada ou defeito.

GET /api/rede/caixas/{id}/ocupacao/ lista as portas de atendimento com a ONU de cada uma. Para parceiro: a ONU só vem identificada quando é de uma VLAN dele; as demais portas aparecem só como ocupada ou livre (ADR 0011).

API (leitura)

Endpoint Filtros Parceiro
/api/rede/caixas/ tipo, busca só CTOs, sem poste/POP
/api/rede/caixas/{id}/ocupacao/ — mascarada
/api/rede/cabos/, /api/rede/splitters/ (caixa), /api/rede/postes/, /api/rede/pops/ — vazio

Também: GET /api/rede/mapa/ (?bbox=oeste,sul,leste,norte) com todas as camadas do mapa em GeoJSON — parceiro recebe só as CTOs, com a contagem de portas — e GET /api/busca/?q= (caixas e ONUs).

Pontos e traçados saem em GeoJSON. Cadastro e edição pela API chegam na F2; até lá, pelo admin.