Módulo de Eventos (Panel) — PMV

Propósito

El módulo de eventos del panel (v0.4.1) permite al operador crear eventos deportivos que bloquean una cancha mediante una reserva de tipo Evento, definir metadatos (título, tipo, capacidad) y asignar participantes por casilla consumiendo boletos de tirillas disponibles.

No confundir con:

  • Inscripciones a clases (enrollment, API trainer): flujo de entrenador/alumno.

  • Eventos de dominio Relay: mensajes Socket.io (Reservation Created, etc.); ver xref:diagrams.adoc#relay-domain-events.

Modelo de datos

Entidad Rol

event_type

Catálogo (Evento, Cursos, …)

event

Metadatos + reservation_id UNIQUE

reservation

Bloqueo de cancha (checking/checkout hora mural)

event_participant

Cliente + ticket_id + slot (1..capacity)

Detalle de columnas: xref:data-model.adoc#_2_17_event_type.

Rutas del panel

Ruta Uso

/events

Listado de eventos

/events/new

Wizard: disponibilidad → datos → participantes

/events/:id

Detalle del evento

/events/:id/participants

Gestión de casillas y boletos

/events/:id/availability

Revisión del slot reservado

Flujo del wizard

  1. Disponibilidad: el operador elige cancha y rango horario en calendario (/events/new).

  2. Datos: título, tipo de evento, capacidad, descripción opcional.

  3. Creación: POST /admin/events crea reserva pendiente (tipo Evento) + fila event.

  4. Participantes: asignación por casilla con client_id o ticket_id (POST …​/participants).

  5. Agenda: la reserva aparece en booking con event_id asociado.

Integración con tickets (v0.4.1)

  • Emisión de tirillas/boletos: panel /tickets (wizard) y API GET /admin/tickets/sales.

  • Al inscribir un participante, el backend valida que el boleto esté disponible y lo vincula en event_participant.

Hora mural

Los horarios del evento provienen de reservation.checking y checkout (TIMESTAMP WITHOUT TIME ZONE, hora mural Bogotá).

La API devuelve checking_date, checking_time, checkout_date, checkout_time y cadenas checking/checkout sin Z. En el frontend usar utilidades de @cortex-ia-com-co/common (reservation-wall-time); no interpretar esos valores con new Date(isoZ).

Ver también: xref:api-reference.adoc#_fechas_y_horas_hora_mural, xref:coding-standards.adoc#_fechas_de_reserva_y_eventos.

API

Endpoints documentados en xref:api-reference.adoc#_eventos_admin_panel.

Roadmap (no implementado)

Las capacidades siguientes no están disponibles en v0.4.1; se documentan como visión futura:

Torneos y brackets

  • Generación de llaves, fases (grupos, eliminatoria), fixtures automáticos.

  • Emparejamientos y resultados por partido.

Ranking y estadísticas

  • Tablas de posiciones, historial de rendimiento por jugador/equipo.

Quinielas y pronósticos

  • Pools de predicción, puntuación por aciertos, cierres de ronda.

Integración contable automática

  • Asientos NIIF por inscripción a torneo (el módulo accounting existe por separado; no está acoplado a eventos panel).

Para el estado actual del producto, usar únicamente el flujo PMV descrito arriba.