petid-wikimemoria rápida, no arquitectura
‹ todos los flujos

Recordatorios de cita (cron diario)

petid-apipetid-client
actualizado 2026-09-02

Objetivo

Avisar al dueño el día antes de una cita, sin backend involucrado del lado clínica — es 100% autónomo del dominio appointments.

Cómo empieza

SendAppointmentRemindersTask.run(), @Cron(CronExpression.EVERY_DAY_AT_6PM) — sin trigger manual.

Pasos principales

  1. Si env.ENABLE_CRON es falso, el método retorna sin hacer nada — ni loguea.
  2. appointments.findScheduledBetween(mañana 00:00 UTC, mañana 23:59 UTC) — la query en Prisma filtra scheduledFor en ese rango y reminderSentAt: null. Ese segundo filtro es el dedup real, no una verificación aparte en memoria.
  3. Por cada cita: busca la mascota y sus dispositivos, dispara push (sendToTokens) si hay al menos uno, y siempre marca reminderSentAt = now al final — haya o no haya dispositivos.
  4. El code del push depende del estado: appointment-reminder-suggested si AppointmentStatus.SUGGESTED (la clínica sugirió la cita, el dueño no la agendó todavía), appointment-reminder-scheduled para cualquier otro estado.

Reglas de negocio

Interacciones

Cron interno de petid-apiPushSendernotification-apipetid-client. No hay ida y vuelta con petid-crm.

Dónde seguir mirando

Casos especiales