Flujos de Trabajo

Este documento describe los flujos de trabajo principales del sistema UnoSportClub.

Flujo de Reserva por Cliente

El flujo completo de reserva realizado por un cliente incluye los siguientes pasos:

  1. Cliente accede al sitio web

  2. Cliente hace clic en "Reservar"

  3. Sistema muestra el asistente de reserva

  4. Cliente selecciona cantidad de canchas necesarias

  5. Sistema consulta disponibilidad

  6. Sistema muestra calendario semanal con disponibilidad

  7. Cliente selecciona fecha y hora

  8. Sistema verifica canchas disponibles para esa fecha/hora

  9. Cliente selecciona canchas específicas y define lapso de tiempo

  10. Sistema crea la reserva (estado: amarillo/pendiente)

  11. Sistema muestra datos de pago y campo para número de confirmación

  12. Cliente ingresa número de confirmación de pago

  13. Sistema conecta WebSocket para escuchar registro de pago

  14. Sistema compara número de referencia:

    • Si el pago fue registrado antes del número ingresado: alinea automáticamente

    • Si el número fue ingresado antes del pago: espera coincidencia

  15. Cuando hay coincidencia, sistema cambia estado de reserva a "comprada" (verde)

  16. Cliente llega a la cancha y solicita Check-in

  17. Operador registra la presencia del cliente

  18. Sistema confirma asistencia registrada

Ver diagrama de secuencia completo en Diagrama de Secuencia: Flujo de Reserva.

Flujo de Reserva por Operador

El flujo de reserva realizado por un operador es similar pero gestionado directamente:

  1. Operador accede al sistema

  2. Operador crea reserva para cliente

  3. Operador selecciona cantidad de canchas

  4. Sistema consulta disponibilidad

  5. Operador selecciona fecha, hora y canchas

  6. Operador define lapso de tiempo

  7. Sistema crea la reserva

  8. Operador registra el pago

  9. Sistema confirma pago

  10. Cuando el cliente llega, operador registra asistencia

  11. Sistema confirma asistencia registrada

Ver diagrama de secuencia completo en Diagrama de Secuencia: Flujo de Reserva (Operador).

Flujo de Pagos Huérfanos

Este flujo maneja el caso especial donde los pagos pueden registrarse sin conocer la reservación asociada:

Escenario 1: Pago registrado antes del número ingresado

  1. Webservice recibe notificación de pago del gateway

  2. Sistema busca pago existente con transaction_id

  3. Si no existe, crea pago huérfano (reservation_id = NULL)

  4. Cliente ingresa número de confirmación de pago

  5. Sistema busca pago huérfano que coincida con el número

  6. Sistema alinea el pago con la reserva (reservation_id actualizado)

  7. Sistema cambia estado de reserva a "comprada"

Escenario 2: Número ingresado antes del pago registrado

  1. Cliente ingresa número de confirmación de pago

  2. Sistema busca pago huérfano con ese número

  3. Si no encuentra, espera (WebSocket escucha)

  4. Webservice recibe notificación de pago del gateway

  5. Sistema crea pago huérfano

  6. Sistema compara números y encuentra coincidencia

  7. Sistema alinea el pago con la reserva

  8. Sistema cambia estado de reserva a "comprada"

Implementación

El proceso de alineación se realiza mediante el endpoint:

PATCH /admin/payments/:id

Request Body:

{
  "reservation_id": 123
}

Este endpoint permite asignar un reservation_id a un pago huérfano, alineándolo con una reserva existente.

O mediante búsqueda automática cuando: * Se crea una nueva reserva y hay pagos huérfanos pendientes * Se recibe un webhook de pago y hay reservas pendientes de pago

Flujo de Disponibilidad

El sistema calcula la disponibilidad considerando:

  1. Consulta todas las reservas existentes para el rango de fechas

  2. Filtra por cancha y tipo de cancha si se especifica

  3. Calcula slots disponibles basándose en:

    • Horarios de operación de las canchas

    • Reservas existentes (ocupadas)

    • Cantidad de canchas requeridas vs disponibles

  4. Retorna slots disponibles marcados como disponibles/no disponibles

Un slot se marca como no disponible si: * Ya hay una reserva confirmada en ese horario * No hay suficientes canchas disponibles para la cantidad requerida

Flujo de Check-in

Cuando un cliente llega a la cancha:

  1. Cliente solicita Check-in (desde la aplicación o en persona)

  2. Sistema notifica al operador sobre la solicitud

  3. Operador verifica la identidad del cliente

  4. Operador registra la presencia del cliente

  5. Sistema actualiza RESERVATION.checking con la fecha/hora actual

  6. Sistema confirma el Check-in al cliente

Flujo de Check-out

Al finalizar el uso de la cancha:

  1. Cliente o operador solicita Check-out

  2. Sistema registra RESERVATION.checkout con la fecha/hora actual

  3. Sistema calcula tiempo de uso real vs tiempo reservado

  4. Sistema genera reporte si es necesario