RF68: Sistema notifica usuario sobre recompensa
Descripción
El sistema notifica al usuario cuando obtiene una recompensa (RF67) para informarle y motivarlo a canjearla (RF69).
Se envía por push y/o email respetando el consentimiento de notificaciones del usuario; el contenido invita a canjear e indica vigencia si aplica.
| Campo | Valor |
|---|---|
| Módulo | Rewards Module |
| Actor | Sistema (emite) → Usuario (recibe) |
| Endpoint | Interno: servicio de notificaciones |
| Precondiciones | Se generó una recompensa (RF67); usuario con datos de contacto |
| Prioridad | Baja (post-MVP) |
| Etapa | MBI 2 |
| Requisitos relacionados | RF67, RF69, RF24 |
Reglas de negocio
- RN-68.1 — Solo se envía push a usuarios con consentimiento de notificaciones (opt-in); el email transaccional puede enviarse como parte del servicio.
- RN-68.2 — La notificación indica el tipo de recompensa, cómo canjearla y su vigencia.
- RN-68.3 — Al tocar la notificación se abre la sección de recompensas (deep link).
- RN-68.4 — El envío es idempotente: una recompensa no genera notificaciones duplicadas.
Validaciones de entrada
| Campo | Reglas | Comportamiento |
|---|---|---|
pushToken | Válido y vigente. | Si es inválido, se marca y no se reintenta indefinidamente. |
notificationsConsent | Requerido para push. | Sin consentimiento no se envía push. |
Criterios de aceptación
Escenario 1: Notificación de recompensa recibida
Dado que obtuve una recompensa y tengo notificaciones activas, Cuando se genera (RF67), Entonces recibo un push/email indicando la recompensa y cómo canjearla, Y al tocarlo se abre la sección de recompensas (RF69).
Escenario 2: Usuario sin consentimiento de push
Dado que no autoricé notificaciones push, Cuando obtengo una recompensa, Entonces no recibo push, Y la recompensa queda disponible en la app de todos modos.
Escenario 3: Token de push inválido
Dado que mi token de push es inválido, Cuando falla el envío, Entonces el sistema lo marca y no reintenta indefinidamente.
Escenario 4: Sin duplicados (idempotencia)
Dado que una recompensa ya generó su notificación, Cuando se reintenta el proceso, Entonces no se envía una notificación duplicada.
Criterios no funcionales
- Envío asíncrono e idempotente.
- Comunicación TLS 1.2+ con el proveedor de push.