Las notificaciones viven en la campana del dock, en dos pestañas: Conversaciones (mensajes) y Actividad (cambios). Se crean en la cola, para que nunca demoren ni hagan fallar el cambio que las originó. Nadie recibe aviso de lo que hizo él mismo.
| Hecho | Recibe el aviso |
|---|---|
| Mensaje nuevo | Quien creó el incidente, el asignado y quienes ya escribieron |
| Asignado | La persona que lo recibe |
| Cambio de estado | Quien lo creó y el asignado |
| Reabierto | Quien lo creó, el asignado y quien pidió la reapertura |
| Reapertura rechazada | Quien la pidió |
| Creado, reapertura pedida y vencido | Ver Avisos de coordinación |
Paso a paso
- APISe guarda un mensaje o una entrada del historial
Emite
IncidentCommentedoIncidentActivityRecordedtras confirmar la transacción. - ColaCreateNotifications toma el evento
- Cola¿Hay a quién avisar?
Recipientscalcula los destinatarios a partir del registro (no del incidente actual: la cola corre después y el asignado pudo cambiar). Borrar un mensaje no avisa. - ColaTermina sin avisos
- Base de datosGuarda un aviso por persona
En
notifications, con FK a la persona, al incidente y al mensaje o al registro del historial. Para mensajes hay un solo aviso sin leer por incidente y persona (columna calculada única): si ya existe, sube su contador y pasa a ser el más reciente. - ReverbEnvía notifications.changed a cada uno
Por su canal personal, sin datos.
- DestinatarioLa campana pide GET /notifications/unread
Cuántos sin leer hay en cada pestaña.
- DestinatarioAbre el centro de notificaciones
GET /notifications?category=&before=, 20 por página. Si ya no puede ver el incidente, el aviso sale sin título ni texto. - DestinatarioAbre un aviso y queda leído
POST /notifications/{id}/read, o todos de una pestaña conPOST /notifications/read. Mientras el chat de un incidente está abierto, sus avisos de mensajes se marcan leídos solos. Los avisos se borran a los 90 días.
Qué ve la persona en cada error
| Código | HTTP | Cuándo | Mensaje en pantalla |
|---|---|---|---|
NOTIFICATION_NOT_FOUND | 404 | El aviso ya no existe (se borró por antigüedad) o es de otra persona | Esa notificación ya no existe: se borró por antigüedad. Actualiza la lista. |
Dónde está en el código
Recipients: a quién se avisa de cada cosa.CreateNotificationsyNotifyParticipants.DatabaseNotificationStore: un aviso de mensajes por incidente.NotificationController.useNotificationsStore,NotificationBellyNotificationCenter.- Explicación: Módulo Notifications.