# 2026-04-17 - Avisos internos via painel com banner, modal e histÃ³rico

## O que mudou
- Expandida a central em `pages/admin/notificacoes.php` com um compositor de avisos manuais para `admins`, `devs` ou ambos, incluindo tom visual, link opcional, validade e escolha de exibiÃ§Ã£o por `toast`, `banner`, `modal` e `push`.
- Criada a migration `sql/2026-04-17-create-app-notification-broadcasts.sql` para registrar os disparos de aviso com metadados de pÃºblico, canais, validade, contagem de destinatÃ¡rios e auditoria do emissor.
- Adicionado o repositÃ³rio `src/Modules/Notifications/AnnouncementBroadcastRepository.php` para persistir e listar o histÃ³rico operacional dos avisos enviados pelo painel.
- EvoluÃ­do `src/Modules/Notifications/Http/NotificationsController.php` com:
  - novo tipo `manual_team_announcement` persistido no catÃ¡logo;
  - endpoint `announcementBroadcast` com gravaÃ§Ã£o do broadcast, resoluÃ§Ã£o de destinatÃ¡rios e disparo das notificaÃ§Ãµes;
  - endpoint `announcementList` para alimentar histÃ³rico e auditoria no admin.
- Atualizado `scripts/notifications-center.js` para enviar avisos com mais opÃ§Ãµes, recarregar histÃ³rico recente e permitir reaproveitar um aviso anterior como base para um novo disparo.
- Atualizado `scripts/notifications-announcements.js` para:
  - renderizar banner logo abaixo do header compartilhado;
  - respeitar validade do aviso;
  - abrir modal de aviso quando configurado;
  - permitir marcar o aviso como lido a partir da experiÃªncia global.
- Ligado o host global de avisos nos templates compartilhados:
  - `includes/template/body-start.php`
  - `pages/cliente/includes/template/body-start.php`
  - `pages/parceiro/includes/template/body-start.php`
- Refinada a topbar em `includes/template/matdash/topbar-notifications.php` para tratar avisos manuais com Ã­cone prÃ³prio e posicionamento coerente dos toasts.

## Resultado
- o time passa a conseguir disparar avisos internos direto do painel sem depender apenas de WhatsApp
- os avisos agora podem aparecer como balÃ£o, banner fixado abaixo do breadcrumb/header e modal de atenÃ§Ã£o
- o admin ganha trilha de auditoria dos avisos enviados, com pÃºblico, emissor e volume realmente entregue

## ObservaÃ§Ãµes
- a exibiÃ§Ã£o global continua usando a leitura individual da notificaÃ§Ã£o, entÃ£o `Entendi` remove o banner/modal apenas para quem marcou como lido
- o histÃ³rico do broadcast fica separado das notificaÃ§Ãµes individuais, o que facilita evoluir para relatÃ³rios, reenvio e filtros futuros
- nesta etapa o fluxo prioriza o ambiente `adm`, que Ã© onde estÃ£o os colaboradores e devs mencionados na demanda

## ValidaÃ§Ã£o
- `php -l src/Modules/Notifications/AnnouncementBroadcastRepository.php`
- `php -l src/Modules/Notifications/Http/NotificationsController.php`
- `php -l src/Modules/Notifications/NotificationTypes.php`
- `php -l pages/admin/notificacoes.php`
- `php -l includes/template/body-start.php`
- `php -l pages/cliente/includes/template/body-start.php`
- `php -l pages/parceiro/includes/template/body-start.php`
- `node --check scripts/notifications-center.js`
- `node --check scripts/notifications-announcements.js`
