A app igrp-notifications-ui — definições por aplicação, templates, histórico de envios e inbox; o que configurar no Access Management para a pôr a funcionar.
A igrp-notifications-ui é uma app Next.js do iGRP Framework para gerir o Notification Service sem chamar a API à mão. Cada página trabalha sobre uma aplicação do Access Management, escolhida no campo Aplicação (e guardada em ?applicationCode= no URL).
| Menu | Rota | Para quê |
|---|---|---|
| Inbox | /inbox, /inbox/[id] | Notificações IN_APP do utilizador autenticado |
| Envios | /notifications, /notifications/[id] | Histórico de envios da aplicação e estado de cada entrega |
| Templates | /templates, /templates/novo, /templates/[id], /templates/[id]/editor | Criar, editar, publicar e arquivar templates |
| Definições | /settings | Canais, callbacks, retenção, remetentes e quotas da aplicação |
Pôr a consola a funcionar
- Registar a app no Access Management. Cria uma aplicação (por exemplo
IGRP_NOTIFICATIONS, slug/apps/notifications) e usa esse código emIGRP_APP_CODE. - Sincronizar os menus. Os menus (Inbox, Envios, Templates, Definições) estão no código. Com
IGRP_SYNC_ACCESS=trueeIGRP_SYNC_ON_CODE_MENUS=truea consola cria-os na aplicação no arranque; sem isso a barra lateral mostra Aplicação sem menus. - Registar o callback de login. O cliente OAuth usado no login tem de aceitar
<origem><basePath>/api/auth/callback/igrp-auth; senão o Access Management responde 401 no/oauth2/authorize. - Dar permissões a quem a usa. Templates, definições, destinatários e recorrências exigem
igrp.notification.admin; o histórico de envios,igrp.notification.read; a inbox,igrp.notification.inbox. O serviço regista estas permissões no Access Management quando arranca. - Ligar o serviço ao Access Management. Para verificar se o utilizador tem acesso à aplicação escolhida, o Notification Service precisa de
notification.access-management.enabled=true(combase-url,client-id,client-secret). Sem isso as páginas mostramACCESS_MANAGER_UNAVAILABLE.
Definições
Por aplicação: canais permitidos e ordem preferida (para channelStrategy=PREFERRED), URL e domínios de callback, retenção (ISO 8601, por exemplo P90D), remetentes e quotas (limit por HOUR, DAY ou MONTH, opcionalmente por canal). Um canal fora de Canais permitidos é recusado no envio (CHANNEL_NOT_ENABLED).

Remetentes ainda não chegam ao email
Os remetentes ficam guardados, mas o provider SMTP envia sempre com o from da sua configuração (notification.providers.email-smtp.from). A retenção é guardada como duração normalizada (P90D aparece como PT2160H).
Templates
A lista mostra os templates da aplicação com código, idioma, versão e estado. Novo template abre o assistente; o lápis abre o template e o ícone de arquivo arquiva-o.

O passo a passo de criação (metadados → ponto de partida → editor → publicar) está em Templates › Criar na consola.
Na página do template editas os metadados e o corpo em três vistas: Código (HTML), WYSIWYG e Visual (o editor por blocos):

| Ação | O que faz |
|---|---|
Guardar num DRAFT | Atualiza o rascunho (PUT /templates/{id}) |
Guardar num PUBLISHED/ARCHIVED | Cria um DRAFT na versão seguinte (POST /templates) |
| Publicar | Publica o rascunho e arquiva as outras versões publicadas do mesmo código, canal e locale |
| Arquivar | POST /templates/{id}/archive |
Envios
O histórico da aplicação, com pesquisa por businessKey e filtros (categoria, prioridade, canal, estado, datas). Cada linha abre o detalhe ou reenvia.

O detalhe mostra os dados do pedido (aplicação, estratégia, template, locale, chave de idempotência), uma linha por entrega com o estado, destinatário, tentativas e erro, e o conteúdo renderizado. Reenviar chama POST /notifications/{id}/resend.

O email do exemplo, tal como chega ao destinatário (aqui, numa caixa de testes):

Inbox
As notificações IN_APP do utilizador autenticado (lidas com o token dele, não M2M): pesquisa, filtros, marcar como lida, marcar todas e arquivar.

Variáveis de ambiente
# Login (igrp-auth)
AUTH_PROVIDER=igrp-auth
IGRP_AUTH_ISSUER=https://<gateway>/igrp-access-management
IGRP_AUTH_CLIENT_ID=<cliente OAuth>
IGRP_AUTH_CLIENT_SECRET=<segredo>
NEXTAUTH_URL=https://<host>/apps/notifications/api/auth
NEXTAUTH_SECRET=<segredo>
# Aplicação e Access Management
IGRP_APP_CODE=IGRP_NOTIFICATIONS
NEXT_PUBLIC_IGRP_APP_CODE=IGRP_NOTIFICATIONS
IGRP_ACCESS_MANAGEMENT_API=https://<gateway>/igrp-access-management
IGRP_M2M_CLIENT_ID=<cliente M2M>
IGRP_M2M_CLIENT_SECRET=<segredo>
IGRP_SYNC_ACCESS=true
IGRP_SYNC_ON_CODE_MENUS=true
# Notification Service (sem /api/v1)
IGRP_NOTIFICATION_API=https://<gateway>/igrp-notification-service
# Base path
NEXT_PUBLIC_BASE_PATH=/apps/notificationsNOTIFICATION_SERVICE_BASE_URL também é aceite em vez de IGRP_NOTIFICATION_API. NEXTAUTH_URL inclui o base path, e o callback registado no cliente OAuth é <NEXTAUTH_URL>/callback/igrp-auth.
Com IGRP_PREVIEW_MODE=true a consola arranca sem login real, com menus e utilizador de exemplo.
Última atualização:
