Pular para conteúdo

Modelo de dados

Arquivo gerado automaticamente

Não edite à mão. Gere novamente com python manage.py gerar_doc_modelo.

Núcleo (usuários e auditoria) (core)

erDiagram
    core_Usuario {
        BigAuto id PK
        Char password
        DateTime last_login
        Boolean is_superuser
        Char first_name
        Char last_name
        Boolean is_staff
        Boolean is_active
        DateTime date_joined
        Char email
        Char papel
        Char whatsapp
        FK parceiro_id FK
    }
    core_RegistroAuditoria {
        BigAuto id PK
        DateTime criado_em
        FK usuario_id FK
        Char usuario_nome
        Char acao
        Char entidade
        Char entidade_id
        Char descricao
        JSON antes
        JSON depois
        Array campos_alterados
        GenericIPAddress ip
    }
    parceiros_Parceiro ||--o{ core_Usuario : parceiro
    core_Usuario ||--o{ core_RegistroAuditoria : usuario

Usuário — core_usuario

Campo Tipo Obrigatório Descrição
id BigAuto não ID
password Char sim senha
last_login DateTime não último login
is_superuser Boolean sim Indica que este usuário tem todas as permissões sem atribuí-las explicitamente.
first_name Char não primeiro nome
last_name Char não último nome
is_staff Boolean sim Indica que usuário consegue acessar este site de administração.
is_active Boolean sim Indica que o usuário será tratado como ativo. Ao invés de excluir contas de usuário, desmarque isso.
date_joined DateTime sim data de registro
email Char sim e-mail
papel Char sim papel
whatsapp Char não WhatsApp
parceiro_id FK não Preencha só para usuários de parceiros: eles apenas consultam e veem somente o que é das VLANs do parceiro (ADR 0011). Deixe vazio para a equipe interna. → parceiros_parceiro

Registro de auditoria — core_registroauditoria

Campo Tipo Obrigatório Descrição
id BigAuto não ID
criado_em DateTime não criado em
usuario_id FK não usuario → core_usuario
usuario_nome Char sim usuario nome
acao Char sim acao
entidade Char não entidade
entidade_id Char não entidade id
descricao Char não descricao
antes JSON não antes
depois JSON não depois
campos_alterados Array não campos alterados
ip GenericIPAddress não ip

Parceiros e VLANs (parceiros)

erDiagram
    parceiros_Parceiro {
        BigAuto id PK
        Char nome
        Char documento
        Char contato
        Char whatsapp
        Char email
        Boolean ativo
        Text observacoes
    }
    parceiros_Vlan {
        BigAuto id PK
        PositiveSmallInteger numero
        Char nome
        FK parceiro_id FK
        Text descricao
    }
    parceiros_Parceiro ||--o{ parceiros_Vlan : parceiro

Parceiro — parceiros_parceiro

Campo Tipo Obrigatório Descrição
id BigAuto não ID
nome Char sim nome
documento Char não CPF/CNPJ
contato Char não pessoa de contato
whatsapp Char não WhatsApp
email Char não e-mail
ativo Boolean sim ativo
observacoes Text não observações

Vlan — parceiros_vlan

Campo Tipo Obrigatório Descrição
id BigAuto não ID
numero PositiveSmallInteger sim número
nome Char não nome
parceiro_id FK não Dono da VLAN. Vazio = VLAN da própria operadora. → parceiros_parceiro
descricao Text não descrição

Rede física (rede)

erDiagram
    rede_Pop {
        BigAuto id PK
        Char nome
        Char endereco
        Point local
        Text observacoes
    }
    rede_Poste {
        BigAuto id PK
        Char codigo
        Point local
        Decimal altura_m
        Char material
        Char proprietario
        Char codigo_concessionaria
        Char endereco
        Text observacoes
    }
    rede_Caixa {
        BigAuto id PK
        Char codigo
        Char nome
        Char tipo
        Point local
        FK poste_id FK
        FK pop_id FK
        Char situacao
        Char endereco
        Text observacoes
    }
    rede_ModeloCabo {
        BigAuto id PK
        Char nome
        PositiveSmallInteger quantidade_fibras
        PositiveSmallInteger fibras_por_tubo
        Char padrao_cores
    }
    rede_Cabo {
        BigAuto id PK
        Char codigo
        FK modelo_id FK
        Char tipo
        LineString tracado
        Decimal comprimento_m
        Char situacao
        FK ponta_a_caixa_id FK
        FK ponta_a_pop_id FK
        FK ponta_b_caixa_id FK
        FK ponta_b_pop_id FK
        Text observacoes
    }
    rede_Fibra {
        BigAuto id PK
        FK cabo_id FK
        PositiveSmallInteger numero
        PositiveSmallInteger tubo
        Char cor
        Char cor_tubo
    }
    rede_ReservaTecnica {
        BigAuto id PK
        FK cabo_id FK
        Point local
        Decimal metros
        FK caixa_id FK
        Text observacoes
    }
    rede_Fusao {
        BigAuto id PK
        FK caixa_id FK
        FK fibra_a_id FK
        FK fibra_b_id FK
        Char tipo
        Decimal perda_db
    }
    rede_Splitter {
        BigAuto id PK
        Char nome
        FK caixa_id FK
        FK pop_id FK
        Char razao
        Char desbalanceamento
        Boolean balanceado
        Decimal perda_db
        FK entrada_fibra_id FK
        FK entrada_porta_id FK
        FK entrada_pon_id FK
        FK porta_pon_origem_id FK
    }
    rede_PortaSplitter {
        BigAuto id PK
        FK splitter_id FK
        PositiveSmallInteger numero
        Char papel
        Char estado
        Decimal perda_db
        FK fibra_saida_id FK
    }
    rede_Poste ||--o{ rede_Caixa : poste
    rede_Pop ||--o{ rede_Caixa : pop
    rede_ModeloCabo ||--o{ rede_Cabo : modelo
    rede_Caixa ||--o{ rede_Cabo : ponta_a_caixa
    rede_Pop ||--o{ rede_Cabo : ponta_a_pop
    rede_Caixa ||--o{ rede_Cabo : ponta_b_caixa
    rede_Pop ||--o{ rede_Cabo : ponta_b_pop
    rede_Cabo ||--o{ rede_Fibra : cabo
    rede_Cabo ||--o{ rede_ReservaTecnica : cabo
    rede_Caixa ||--o{ rede_ReservaTecnica : caixa
    rede_Caixa ||--o{ rede_Fusao : caixa
    rede_Fibra ||--o{ rede_Fusao : fibra_a
    rede_Fibra ||--o{ rede_Fusao : fibra_b
    rede_Caixa ||--o{ rede_Splitter : caixa
    rede_Pop ||--o{ rede_Splitter : pop
    rede_Fibra ||--o{ rede_Splitter : entrada_fibra
    rede_PortaSplitter ||--o{ rede_Splitter : entrada_porta
    olt_PortaPon ||--o{ rede_Splitter : entrada_pon
    olt_PortaPon ||--o{ rede_Splitter : porta_pon_origem
    rede_Splitter ||--o{ rede_PortaSplitter : splitter
    rede_Fibra ||--o{ rede_PortaSplitter : fibra_saida

Pop — rede_pop

Campo Tipo Obrigatório Descrição
id BigAuto não ID
nome Char sim nome
endereco Char não endereço
local Point sim localização
observacoes Text não observações

Poste — rede_poste

Campo Tipo Obrigatório Descrição
id BigAuto não ID
codigo Char não código
local Point sim localização
altura_m Decimal não altura (m)
material Char não material
proprietario Char não proprietário
codigo_concessionaria Char não código na concessionária
endereco Char não endereço
observacoes Text não observações

Caixa — rede_caixa

Campo Tipo Obrigatório Descrição
id BigAuto não ID
codigo Char sim código
nome Char não nome
tipo Char sim tipo
local Point não Obrigatória, exceto para caixas dentro de um POP (ex.: DIO).
poste_id FK não poste → rede_poste
pop_id FK não Para DIO e armários dentro de um POP. → rede_pop
situacao Char sim situação
endereco Char não endereço
observacoes Text não observações

Modelo de cabo — rede_modelocabo

Campo Tipo Obrigatório Descrição
id BigAuto não ID
nome Char sim nome
quantidade_fibras PositiveSmallInteger sim quantidade de fibras
fibras_por_tubo PositiveSmallInteger sim fibras por tubo
padrao_cores Char sim padrão de cores

Cabo — rede_cabo

Campo Tipo Obrigatório Descrição
id BigAuto não ID
codigo Char sim código
modelo_id FK sim modelo → rede_modelocabo
tipo Char sim tipo
tracado LineString sim traçado
comprimento_m Decimal não Calculado pelo traçado.
situacao Char sim situação
ponta_a_caixa_id FK não ponta a caixa → rede_caixa
ponta_a_pop_id FK não ponta a pop → rede_pop
ponta_b_caixa_id FK não ponta b caixa → rede_caixa
ponta_b_pop_id FK não ponta b pop → rede_pop
observacoes Text não observações

Fibra — rede_fibra

Campo Tipo Obrigatório Descrição
id BigAuto não ID
cabo_id FK sim cabo → rede_cabo
numero PositiveSmallInteger sim número
tubo PositiveSmallInteger sim tubo
cor Char sim cor
cor_tubo Char sim cor do tubo

Reserva técnica — rede_reservatecnica

Campo Tipo Obrigatório Descrição
id BigAuto não ID
cabo_id FK sim cabo → rede_cabo
local Point sim localização
metros Decimal sim metros
caixa_id FK não caixa → rede_caixa
observacoes Text não observações

Fusão — rede_fusao

Campo Tipo Obrigatório Descrição
id BigAuto não ID
caixa_id FK sim caixa → rede_caixa
fibra_a_id FK sim fibra A → rede_fibra
fibra_b_id FK sim fibra B → rede_fibra
tipo Char sim tipo
perda_db Decimal sim Vem dos Parâmetros ópticos (fusão ou conector).

Splitter — rede_splitter

Campo Tipo Obrigatório Descrição
id BigAuto não ID
nome Char não nome
caixa_id FK não caixa → rede_caixa
pop_id FK não POP → rede_pop
razao Char sim razão
desbalanceamento Char não Só para desbalanceado (2 saídas): porta 1 = saída menor, porta 2 = maior. Vazio = balanceado.
balanceado Boolean sim balanceado
perda_db Decimal não Calculada pela razão (não se digita).
entrada_fibra_id FK não entrada por fibra → rede_fibra
entrada_porta_id FK não entrada por porta de outro splitter (cascata) → rede_portasplitter
entrada_pon_id FK não Use só quando o caminho de fibra até a OLT não está documentado. → olt_portapon
porta_pon_origem_id FK não Calculada pelo caminho da fibra até a OLT. → olt_portapon

Porta de splitter — rede_portasplitter

Campo Tipo Obrigatório Descrição
id BigAuto não ID
splitter_id FK sim splitter → rede_splitter
numero PositiveSmallInteger sim número
papel Char sim papel
estado Char sim estado
perda_db Decimal não Só no desbalanceado; vem da tabela do splitter.
fibra_saida_id FK não Fibra de cabo que sai desta porta (ex.: primário na CEO levando sinal à CTO). → rede_fibra

OLTs (olt)

erDiagram
    olt_Olt {
        BigAuto id PK
        Char nome
        FK pop_id FK
        Char fabricante
        Char modelo
        Char tecnologia
        Char driver
        GenericIPAddress ip
        Char firmware
        Char numero_serie
        Decimal potencia_tx_dbm
        Char snmp_versao
        PositiveInteger snmp_porta
        Text snmp_community_leitura
        Text snmp_community_escrita
        Char cli_metodo
        PositiveInteger cli_porta
        Char cli_usuario
        Text cli_senha
        Char situacao
        DateTime ultimo_teste_em
        Boolean ultimo_teste_ok
        Text observacoes
    }
    olt_PortaPon {
        BigAuto id PK
        FK olt_id FK
        PositiveSmallInteger placa
        PositiveSmallInteger porta
        Decimal potencia_tx_dbm
        FK fibra_saida_id FK
        Char descricao
        Boolean ativa
    }
    rede_Pop ||--o{ olt_Olt : pop
    olt_Olt ||--o{ olt_PortaPon : olt
    rede_Fibra ||--o{ olt_PortaPon : fibra_saida

Olt — olt_olt

Campo Tipo Obrigatório Descrição
id BigAuto não ID
nome Char sim nome
pop_id FK não POP → rede_pop
fabricante Char sim fabricante
modelo Char não modelo
tecnologia Char sim tecnologia
driver Char sim driver
ip GenericIPAddress sim IP de gerência
firmware Char não firmware
numero_serie Char não nº de série
potencia_tx_dbm Decimal sim potência TX padrão (dBm)
snmp_versao Char sim versão do SNMP
snmp_porta PositiveInteger sim porta SNMP
snmp_community_leitura Text não community de leitura
snmp_community_escrita Text não community de escrita
cli_metodo Char sim acesso por linha de comando
cli_porta PositiveInteger sim porta da linha de comando
cli_usuario Char não usuário
cli_senha Text não Vazio quando o acesso é por chave SSH.
situacao Char sim situação
ultimo_teste_em DateTime não último teste de conexão
ultimo_teste_ok Boolean não último teste deu certo
observacoes Text não observações

Porta pon — olt_portapon

Campo Tipo Obrigatório Descrição
id BigAuto não ID
olt_id FK sim OLT → olt_olt
placa PositiveSmallInteger sim placa
porta PositiveSmallInteger sim porta
potencia_tx_dbm Decimal não Vazio = potência padrão da OLT.
fibra_saida_id FK não Fibra do cabo alimentador ligada nesta porta (liga a OLT à rede física). → rede_fibra
descricao Char não descrição
ativa Boolean sim ativa

ONUs (onu)

erDiagram
    onu_Onu {
        BigAuto id PK
        FK olt_id FK
        FK porta_pon_id FK
        Char mac
        Char numero_serie
        PositiveSmallInteger id_na_pon
        FK porta_cto_id FK
        FK caixa_id FK
        FK vlan_id FK
        Char nome_cliente
        Decimal comprimento_drop_m
        Point local
        Char modelo
        Char firmware
        Char estado
        Char estado_operacional
        Decimal ultimo_rx_dbm
        Decimal ultimo_tx_dbm
        DateTime ultima_leitura_em
        Char pendencia_vinculo
        Char descricao_olt
        DateTime autorizada_em
        FK autorizada_por_id FK
        Text observacoes
    }
    onu_OnuPendente {
        BigAuto id PK
        FK olt_id FK
        FK porta_pon_id FK
        Char mac
        Char numero_serie
        DateTime detectada_em
        DateTime vista_em
        PositiveSmallInteger avisos_enviados
        DateTime ultimo_aviso_em
    }
    onu_EventoOnu {
        BigAuto id PK
        FK onu_id FK
        FK olt_id FK
        FK porta_pon_id FK
        Char identificador
        Char tipo
        JSON detalhes
        FK usuario_id FK
        DateTime ocorrido_em
    }
    onu_ConfiguracaoOnu {
        BigAuto id PK
        Char formato_descricao
        Char formato_sem_porta
        Char formato_sem_cto
        PositiveSmallInteger digitos_cto
        PositiveSmallInteger digitos_porta
        Char caixa_cliente
        Boolean autorizacao_automatica
    }
    olt_Olt ||--o{ onu_Onu : olt
    olt_PortaPon ||--o{ onu_Onu : porta_pon
    rede_PortaSplitter ||--o{ onu_Onu : porta_cto
    rede_Caixa ||--o{ onu_Onu : caixa
    parceiros_Vlan ||--o{ onu_Onu : vlan
    core_Usuario ||--o{ onu_Onu : autorizada_por
    olt_Olt ||--o{ onu_OnuPendente : olt
    olt_PortaPon ||--o{ onu_OnuPendente : porta_pon
    onu_Onu ||--o{ onu_EventoOnu : onu
    olt_Olt ||--o{ onu_EventoOnu : olt
    olt_PortaPon ||--o{ onu_EventoOnu : porta_pon
    core_Usuario ||--o{ onu_EventoOnu : usuario

Onu — onu_onu

Campo Tipo Obrigatório Descrição
id BigAuto não ID
olt_id FK sim OLT → olt_olt
porta_pon_id FK sim porta PON → olt_portapon
mac Char não ONUs EPON.
numero_serie Char não ONUs GPON.
id_na_pon PositiveSmallInteger não ID na PON
porta_cto_id FK não Porta onde o drop desta ONU está ligado. → rede_portasplitter
caixa_id FK não CTO do cliente. Com porta, vem dela; sem porta (ex.: reaproveitamento de cabo), pode ser informada sozinha. → rede_caixa
vlan_id FK não Define o parceiro dono do atendimento e entra na descrição. Vazia = ainda não identificada (ONU lida da OLT com descrição fora do padrão). → parceiros_vlan
nome_cliente Char sim nome do cliente
comprimento_drop_m Decimal não comprimento do drop (m)
local Point não localização da instalação
modelo Char não modelo
firmware Char não firmware
estado Char sim estado
estado_operacional Char sim estado operacional
ultimo_rx_dbm Decimal não último RX (dBm)
ultimo_tx_dbm Decimal não último TX (dBm)
ultima_leitura_em DateTime não última leitura
pendencia_vinculo Char não Por que a leitura da OLT não ligou esta ONU a uma porta de CTO (descrição incompleta, porta ocupada, MAC duplicado...). Vazio = sem pendência.
descricao_olt Char não O que está de fato gravado na OLT (atualizado pelo provisionamento).
autorizada_em DateTime não autorizada em
autorizada_por_id FK não autorizada por → core_usuario
observacoes Text não observações

Onu pendente — onu_onupendente

Campo Tipo Obrigatório Descrição
id BigAuto não ID
olt_id FK sim OLT → olt_olt
porta_pon_id FK sim porta PON → olt_portapon
mac Char não MAC
numero_serie Char não nº de série
detectada_em DateTime sim detectada em
vista_em DateTime sim vista por último em
avisos_enviados PositiveSmallInteger sim avisos enviados
ultimo_aviso_em DateTime não último aviso em

Evento de onu — onu_eventoonu

Campo Tipo Obrigatório Descrição
id BigAuto não ID
onu_id FK não onu → onu_onu
olt_id FK não OLT → olt_olt
porta_pon_id FK não porta PON → olt_portapon
identificador Char sim Guardado mesmo se a ONU for excluída.
tipo Char sim tipo
detalhes JSON não detalhes
usuario_id FK não usuario → core_usuario
ocorrido_em DateTime sim ocorrido em

Configuração de onu — onu_configuracaoonu

Campo Tipo Obrigatório Descrição
id BigAuto não ID
formato_descricao Char sim Use {vlan}, {cto} (código, ex.: CTO-010), {cto_numero} (só o número), {porta} e {cliente}. Ex.: {vlan}.{cto_numero}.{porta}-{cliente} → 3030.010.04-JOAO_DA_SILVA
formato_sem_porta Char sim Ex.: 100.010-JOAO_DA_SILVA. Mesmas variáveis, sem {porta}.
formato_sem_cto Char sim Ex.: 100-JOAO_DA_SILVA (reaproveitamento de cabo, CTO desconhecida).
digitos_cto PositiveSmallInteger sim Completa {cto_numero} com zeros à esquerda (3 → 010). 0 = sem completar.
digitos_porta PositiveSmallInteger sim Completa {porta} com zeros à esquerda (2 → 04). 0 = sem completar.
caixa_cliente Char sim Como o nome do cliente vai na descrição gravada na OLT.
autorizacao_automatica Boolean sim autorização automática

Sinal e monitoramento (monitoramento)

erDiagram
    monitoramento_LeituraOptica {
        BigAuto id PK
        FK onu_id FK
        DateTime medido_em
        Decimal rx_dbm
        Decimal tx_dbm
        Decimal temperatura_c
        Char origem
        FK usuario_id FK
        Char observacao
    }
    monitoramento_ResumoDiarioOptico {
        BigAuto id PK
        FK onu_id FK
        Date dia
        Decimal rx_minimo
        Decimal rx_medio
        Decimal rx_maximo
        PositiveInteger leituras
    }
    monitoramento_LimiaresSinal {
        BigAuto id PK
        Decimal rx_bom_a_partir_de
        Decimal rx_critico_abaixo_de
    }
    monitoramento_ParametrosOpticos {
        BigAuto id PK
        Decimal perda_km_1310
        Decimal perda_km_1490
        Decimal perda_fusao
        Decimal perda_conector
        Decimal margem_seguranca
        PositiveSmallInteger retencao_leituras_dias
    }
    onu_Onu ||--o{ monitoramento_LeituraOptica : onu
    core_Usuario ||--o{ monitoramento_LeituraOptica : usuario
    onu_Onu ||--o{ monitoramento_ResumoDiarioOptico : onu

Leitura óptica — monitoramento_leituraoptica

Campo Tipo Obrigatório Descrição
id BigAuto não ID
onu_id FK sim ONU → onu_onu
medido_em DateTime sim medido em
rx_dbm Decimal não RX (dBm)
tx_dbm Decimal não TX (dBm)
temperatura_c Decimal não temperatura (°C)
origem Char sim origem
usuario_id FK não medido por → core_usuario
observacao Char não observação

Resumo diário de sinal — monitoramento_resumodiariooptico

Campo Tipo Obrigatório Descrição
id BigAuto não ID
onu_id FK sim ONU → onu_onu
dia Date sim dia
rx_minimo Decimal não RX mínimo (dBm)
rx_medio Decimal não RX médio (dBm)
rx_maximo Decimal não RX máximo (dBm)
leituras PositiveInteger sim nº de leituras

Limiares de sinal — monitoramento_limiaressinal

Campo Tipo Obrigatório Descrição
id BigAuto não ID
rx_bom_a_partir_de Decimal sim RX bom a partir de (dBm)
rx_critico_abaixo_de Decimal sim RX crítico abaixo de (dBm)

Parâmetros ópticos — monitoramento_parametrosopticos

Campo Tipo Obrigatório Descrição
id BigAuto não ID
perda_km_1310 Decimal sim perda por km em 1310 nm (dB)
perda_km_1490 Decimal sim perda por km em 1490 nm (dB)
perda_fusao Decimal sim perda por fusão (dB)
perda_conector Decimal sim perda por conector (dB)
margem_seguranca Decimal sim margem de segurança (dB)
retencao_leituras_dias PositiveSmallInteger sim Depois disso fica só o resumo diário.

Importação (importacao)

erDiagram
    importacao_ChaveImportada {
        BigAuto id PK
        Char sistema
        Char tabela
        Char id_origem
        FK tipo_id FK
        PositiveBigInteger objeto_id
        DateTime atualizado_em
    }
    contenttypes_ContentType ||--o{ importacao_ChaveImportada : tipo

Chave importada — importacao_chaveimportada

Campo Tipo Obrigatório Descrição
id BigAuto não ID
sistema Char sim sistema
tabela Char sim tabela
id_origem Char sim ID na origem
tipo_id FK sim tipo → django_content_type
objeto_id PositiveBigInteger sim objeto id
atualizado_em DateTime não atualizado em

Notificações (WhatsApp) (notificacoes)

erDiagram
    notificacoes_ConfiguracaoWhatsapp {
        BigAuto id PK
        Char provedor
        Char evolution_url
        Text evolution_chave
        Char evolution_instancia
        Char waha_url
        Text waha_chave
        Char waha_sessao
        Char endereco_noc
        Boolean avisar_pendente
        PositiveSmallInteger repetir_pendente_min
        PositiveSmallInteger max_avisos_pendente
        PositiveSmallInteger rompimento_minimo
        Boolean avisar_offline
        Boolean avisar_volta
        BigInteger ultimo_evento
    }
    notificacoes_Destino {
        BigAuto id PK
        Char nome
        Char numero
        Boolean ativo
        Boolean recebe_pendente
        Boolean recebe_rompimento
        Boolean recebe_offline
    }
    notificacoes_Envio {
        BigAuto id PK
        FK destino_id FK
        Char numero
        Char tipo
        Text texto
        Char provedor
        Boolean sucesso
        Text erro
        DateTime enviado_em
    }
    notificacoes_Destino ||--o{ notificacoes_Envio : destino

Configuração do whatsapp — notificacoes_configuracaowhatsapp

Campo Tipo Obrigatório Descrição
id BigAuto não ID
provedor Char sim Qual dos dois usar para enviar. Troque aqui se um deles der problema.
evolution_url Char não Evolution: endereço do servidor
evolution_chave Text não Evolution: chave de API (apikey)
evolution_instancia Char não Evolution: instância
waha_url Char não WAHA: endereço do servidor
waha_chave Text não WAHA: chave de API (X-Api-Key)
waha_sessao Char não WAHA: sessão
endereco_noc Char não Ex.: https://noc.exemplo.com.br — link nas mensagens (vazio = sem link).
avisar_pendente Boolean sim Uma mensagem quando a OLT acusa uma ONU nova (vai só para destinos da equipe).
repetir_pendente_min PositiveSmallInteger sim Enquanto ninguém autorizar. 0 = avisar uma vez só.
max_avisos_pendente PositiveSmallInteger sim máximo de avisos por pendente
rompimento_minimo PositiveSmallInteger sim A partir de quantas quedas na mesma leitura vira um aviso de rompimento.
avisar_offline Boolean sim Pode gerar muitas mensagens; deixe desligado se só interessa rompimento.
avisar_volta Boolean sim avisar quando o rompimento normalizar
ultimo_evento BigInteger sim ultimo evento

Destino — notificacoes_destino

Campo Tipo Obrigatório Descrição
id BigAuto não ID
nome Char sim nome
numero Char sim Pessoa: DDI+DDD+número, só dígitos (ex.: 5567999990000). Grupo: o ID do grupo (termina em @g.us).
ativo Boolean sim ativo
recebe_pendente Boolean sim ONU pedindo autorização
recebe_rompimento Boolean sim rompimento (várias quedas)
recebe_offline Boolean sim ONU caiu (individual)

Envio — notificacoes_envio

Campo Tipo Obrigatório Descrição
id BigAuto não ID
destino_id FK não destino → notificacoes_destino
numero Char sim numero
tipo Char sim tipo
texto Text sim texto
provedor Char sim provedor
sucesso Boolean sim sucesso
erro Text não erro
enviado_em DateTime sim enviado em