# Push Web com FCM

Este projeto agora tem base para Web Push com Firebase Cloud Messaging na central de notificacoes.

## Escopo atual

- Fase 1 ativa primeiro a area `adm`
- O navegador registra um token FCM por usuario e por contrato
- O backend envia pelo FCM HTTP v1
- O canal `push` da central usa as subscriptions ativas quando existirem

## SQL obrigatorio

Rode:

- [sql/2026-04-13-create-app-push-subscriptions.sql](/G:/Clientes/PREVCLUBE/Clientes/DrTigre/sistema/sql/2026-04-13-create-app-push-subscriptions.sql:1)

## Configuracao do contrato

Em [pages/admin/contrato-configuracoes.php](/G:/Clientes/PREVCLUBE/Clientes/DrTigre/sistema/pages/admin/contrato-configuracoes.php:1), na aba `Comunicacao`, preencha:

- `Push web com FCM`
- `Firebase API key`
- `Firebase auth domain`
- `Firebase project id`
- `Firebase app id`
- `Firebase messaging sender id`
- `Chave publica VAPID`

Esses dados sao publicos do app web do Firebase e podem ficar por contrato.

## Configuracao do servidor

As credenciais privadas do Firebase ficam no ambiente do servidor.

Defina:

- `TIIX_FIREBASE_PUSH_ENABLED=1`
- `TIIX_FIREBASE_PROJECT_ID=...`
- `TIIX_FIREBASE_CLIENT_EMAIL=...`
- `TIIX_FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"`

O backend le essas variaveis em [FirebasePushConfig.php](/G:/Clientes/PREVCLUBE/Clientes/DrTigre/sistema/src/Integrations/Firebase/FirebasePushConfig.php:1).

## Fluxo operacional

1. O admin entra em [notificacoes.php](/G:/Clientes/PREVCLUBE/Clientes/DrTigre/sistema/pages/admin/notificacoes.php:1).
2. Clica em `Ativar neste navegador`.
3. O front busca a configuracao publica via `Notifications/pushConfig`.
4. O navegador pede permissao.
5. A URL publica continua em [firebase-messaging-sw.js](/G:/Clientes/PREVCLUBE/Clientes/DrTigre/sistema/firebase-messaging-sw.js:1), mas a logica real fica em [public/js/firebase-messaging-sw.js](/G:/Clientes/PREVCLUBE/Clientes/DrTigre/sistema/public/js/firebase-messaging-sw.js:1).
6. O token FCM e salvo via `Notifications/pushRegister`.
7. O canal [PushChannel.php](/G:/Clientes/PREVCLUBE/Clientes/DrTigre/sistema/src/Modules/Notifications/Channels/PushChannel.php:1) passa a enviar para esse navegador.

## Endpoints

No `api_v3`, o controller de notificacoes agora expoe:

- `POST /adm/api/Notifications/pushConfig`
- `POST /adm/api/Notifications/pushStatus`
- `POST /adm/api/Notifications/pushRegister`
- `POST /adm/api/Notifications/pushUnregister`

## Observacoes importantes

- Sem subscription ativa, o canal `push` nao quebra o fluxo da notificacao.
- Se houver subscription ativa e o servidor nao estiver configurado, o log do canal pode registrar erro de push.
- O registro atual cobre admin primeiro; expansao para `cliente` e `parceiro` pode reaproveitar a mesma base.
- Mantivemos um shim minimo na raiz apenas para preservar o scope `/` do service worker e cobrir `/adm`.
