59 lines
1.9 KiB
Markdown
59 lines
1.9 KiB
Markdown
# Tasks — Spec 007 Mobile Push Notifications
|
|
|
|
**Status:** 📋 Backlog (draft)
|
|
**Prioridade:** P1
|
|
**API alvo:** `0.9.0-desk-push-ntfy` → `0.9.1-desk-push-pwa`
|
|
|
|
---
|
|
|
|
## Fase A — ntfy por usuário (MVP)
|
|
|
|
- [ ] **T001** Schema: `desk_users.ntfy_topic` estável + `push_ntfy_enabled`
|
|
- [ ] **T002** Migrar lógica de `ntfy_topic` de registration-only para user profile
|
|
- [ ] **T003** `GET /api/v1/push/settings`
|
|
- [ ] **T004** `POST /api/v1/push/ntfy/enable` · `disable`
|
|
- [ ] **T005** `POST /api/v1/push/test` (notificação teste)
|
|
- [ ] **T006** UI Minha conta — seção Notificações (toggle + link + QR)
|
|
- [ ] **T007** `push_service.py` — `notify_user()`, `notify_role()`
|
|
- [ ] **T008** Hook: ticket Wazuh criado → push `noc` + `ops_lead` + root
|
|
- [ ] **T009** Hook: pedido cadastro → push root
|
|
- [ ] **T010** Rate limit push · logs · falha silenciosa
|
|
- [ ] **T011** Testes manuais Android/iOS ntfy
|
|
- [ ] **T012** Docs quickstart + env `DESK_NTFY_BASE_URL`
|
|
|
|
## Fase B — Web Push PWA
|
|
|
|
- [ ] **T020** `manifest.json` + ícones Ligbox Ops
|
|
- [ ] **T021** Service Worker `sw.js` (push + notificationclick)
|
|
- [ ] **T022** Tabela `push_subscriptions`
|
|
- [ ] **T023** VAPID keys (env) + `pywebpush` no requirements
|
|
- [ ] **T024** `POST /api/v1/push/subscribe` · DELETE
|
|
- [ ] **T025** UI «Ativar notificações neste dispositivo»
|
|
- [ ] **T026** Integrar `push_service` dual-channel (ntfy + webpush)
|
|
- [ ] **T027** Teste iOS Safari PWA + Android Chrome
|
|
|
|
## Fase C — Futuro (fora MVP 007)
|
|
|
|
- [ ] **T030** Preferências por tipo de evento
|
|
- [ ] **T031** FCM para app nativo
|
|
- [ ] **T032** ntfy self-hosted (VM122 ou VM108)
|
|
- [ ] **T033** OneSignal avaliação (se FCM complexo demais)
|
|
|
|
---
|
|
|
|
## Dependências
|
|
|
|
- Spec 003 ✅ auth JWT
|
|
- Spec 004 ✅ Minha conta UI · ntfy OTP base
|
|
|
|
---
|
|
|
|
## Env vars (previstas)
|
|
|
|
```env
|
|
DESK_NTFY_BASE_URL=https://ntfy.sh
|
|
DESK_VAPID_PUBLIC_KEY=
|
|
DESK_VAPID_PRIVATE_KEY=
|
|
DESK_VAPID_MAILTO=ligbox-ops@ligbox.com.br
|
|
DESK_PUSH_ENABLED=true
|
|
```
|