obsidian-vault/ligbox-ops-platform/specs/007-mobile-push-notifications/tasks.md
2026-06-19 17:26:42 +00:00

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
```