Cambio de estado de cita → push solo en cancelación
Objetivo
Avisar al dueño de una mascota cuando la clínica cancela una cita, sin generar ruido en las demás transiciones de estado.
Cómo empieza
Staff cambia el estado de una cita en petid-crm.
Pasos principales
PATCHde estado →UpdateAppointmentStatusUseCase.execute()actualiza la cita.- Solo si la transición es hacia
CANCELLEDdesde un estado que no eraCANCELLED→ busca la mascota, emiteAppointmentCancelledEvent→ push al dueño. - Cualquier otra transición (
COMPLETED,NO_SHOW, vuelta aSCHEDULED) actualiza la cita igual, pero no emite ningún evento.
Reglas de negocio
- La razón (comentada en el código): el dueño no estaba presente cuando se canceló, a diferencia de
COMPLETED/NO_SHOW, que ocurren después de una visita donde ya estuvo. Es una decisión deliberada, no un flujo a medio implementar. - Si en el futuro alguien “completa” esto agregando push para los demás estados, es un cambio de producto consciente, no un bug que arreglar.
Interacciones
petid-crm → petid-api → evento → notification-api → push a petid-client.
Dónde seguir mirando
petid-api/src/application/appointments/update-appointment-status.use-case.ts— toda la lógica (incluido el comentario que explica el porqué) está en ~20 líneas.
Casos especiales
- Cancelar una cita que ya estaba
CANCELLEDno vuelve a disparar el evento (existing.status !== AppointmentStatus.CANCELLEDen la condición) — evita pushes duplicados por un doble submit o una actualización redundante.