“Vencido” no se guarda: un incidente está vencido cuando su vencimiento ya pasó y sigue pendiente (Abierto, En progreso o En espera). Como nadie hace un cambio en ese momento, ningún evento lo anuncia: una tarea programada lo busca cada 5 minutos.
Paso a paso
- SchedulerCorre notifications:overdue
Cada 5 minutos y sin solaparse con la corrida anterior (
withoutOverlapping). - Base de datosBusca los que vencieron en las últimas 24 h sin aviso
Pendientes cuyo vencimiento cayó en el último día y que no tienen un aviso de vencido creado después de vencer. Así cada vencimiento avisa una sola vez sin columnas nuevas, y si la tarea estuvo detenida más de un día no llega una avalancha de avisos viejos.
- Scheduler¿Hay alguno?
- SchedulerTermina hasta la siguiente corrida
- Base de datosBusca a quienes pueden asignar
- Base de datosGuarda "vencido" para el asignado y quienes asignan
Un aviso por persona e incidente, en la pestaña Actividad.
- ReverbEnvía notifications.changed
Una sola vez por persona, aunque reciba varios avisos en la misma corrida.
- DestinatariosLa campana muestra los vencidos
Si un vencido se reprograma con una fecha nueva y vuelve a vencer, vuelve a avisar: el aviso anterior fue creado antes del nuevo vencimiento.
Dónde está en el código
NotifyOverdue: ventana de 24 h y destinatarios.DatabaseOverdueIncidents: la búsqueda sin aviso previo.routes/console.php: la programación cada 5 minutos.- Explicación: Módulo Notifications.