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.