API: Notificacoes

Sistema de notificacoes internas do portal com integracao push via Web Push API. Cada notificacao e vinculada a um usuario e um nucleo.

Endpoints

MetodoRotaDescricao
GET/api/notificacoesListar notificacoes do usuario (paginado)
GET/api/notificacoes/countContador de notificacoes nao lidas
PATCH/api/notificacoes/:id/lerMarcar uma notificacao como lida
PATCH/api/notificacoes/ler-todasMarcar todas as notificacoes como lidas

Service Methods Internos (NotificacoesService)

Metodos expostos para uso por outros modulos do backend:

MetodoParametrosDescricao
criarParaUsuario(usuarioId, texto, linkAcao?)usuarioId: string, texto: string, linkAcao?: stringCria uma notificacao para um usuario especifico. O campo linkAcao e opcional e direciona o usuario ao clicar na notificacao.
criarParaTodos(nucleoId, texto, linkAcao?)nucleoId: string, texto: string, linkAcao?: stringCria notificacao para todos os membros ativos do nucleo. Insere em lotes de 500 registros para evitar timeout em nucleos grandes.

Modulos que Disparam Notificacoes

  • Enquetes: Ao criar uma enquete, notifica todos os membros do nucleo via criarParaTodos.
  • Comunicados: Ao publicar comunicado segmentado, notifica os usuarios alvo via criarParaUsuario.
  • Porta-Vozes: Ao sincronizar novas postagens (RSS automatico ou sync manual), notifica todos os membros sobre os novos posts via criarParaTodos.
  • Conquistas: Ao desbloquear um badge, notifica o usuario via criarParaUsuario.

Interface no Frontend

  • Icone de sino no header, visivel em todas as paginas.
  • Ao clicar, abre um dropdown com as 10 notificacoes mais recentes.
  • Polling a cada 30 segundos para atualizar o contador sem recarregar a pagina.
  • Badge vermelho sobre o icone exibindo a quantidade de notificacoes nao lidas. Desaparece quando todas sao marcadas como lidas.
  • Cada notificacao no dropdown mostra o texto e, se houver linkAcao, redireciona o usuario ao clicar.

Push via PushService (Integrado)

O sistema de notificacoes e integrado com o PushService para enviar push notifications alem das notificacoes in-app:

  • criarParaUsuario e criarParaTodos agora tambem enviam push via PushService, alem de inserir na tabela de notificacoes
  • O push e enviado para todas as subscriptions ativas do usuario (multiplos dispositivos/browsers)
  • Se a subscription for invalida (browser removeu permissao), e removida automaticamente da tabela

Push Opcional em Comunicados e Enquetes

Em modulos como Comunicados e Enquetes, o envio de push e opcional — controlado pelo parametro enviarPush:

  • Quando enviarPush=true (padrao): cria notificacao in-app + envia push via PushService
  • Quando enviarPush=false: apenas notificacoes in-app sao criadas (insert direto no banco, sem chamar o PushService)
  • Checkbox "Enviar push" no formulario de criacao de comunicados e enquetes controla esse parametro