Skip to content

Reservar clase

Ruta: /student/book · Auth: Magic link (alumno)

Wizard de 3 pasos para que el alumno reserve una sesion usando sus creditos.


Grid de enrollments activos mostrando creditos restantes por cada uno. Solo se muestran enrollments con creditos disponibles.

Grid de servicios elegibles filtrados por eligibleServiceIds del enrollment. Si el enrollment tiene servicios cross-service, se muestran todos los compatibles.

Calendario semanal con slots agrupados por periodo del dia:

PeriodoHorarioIcono
MananaAntes de 12:00Sol
Tarde12:00 – 18:00Sol parcial
NocheDesde 18:00Luna

Navegacion semanal: Flechas izquierda/derecha con rango de fechas visible. Maximo 4 semanas de anticipacion (weekOffset 0-3).

Horas preferidas:

  • Toggle para mostrar/editar preferencias horarias del alumno
  • Selectores de hora inicio/fin (intervalos de 30 min)
  • Selector de dias de la semana (7 toggles Lun-Dom)
  • Los slots que coinciden con las preferencias muestran una estrella ambar

Confirmacion: Barra inferior con nombre del servicio + hora seleccionada antes de reservar.

Estado de exito: Checkmark + “Reserva exitosa” + boton “Reservar otra”.


FeatureDescripcionEstadoImplementado
Heatmap de disponibilidadIndicador visual de densidad de slots disponibles por dia en las cabeceras del calendario. Permite ver de un vistazo que dias tienen mas opcionesBatch 4
Selector de timezone manualDropdown de timezone junto al display de GMT offset. El alumno puede ajustar manualmente si viajaBatch 4
Multi-select de slotsSolo se puede reservar una sesion a la vez. Para paquetes grandes, deberia poder reservar varias sesiones en una misma operacionImplementado ✅

BugDescripcionEstadoCorregido
Sin validacion endTime mayor que startTimeLas preferencias horarias no validaban que la hora de fin sea posterior a la de inicio. Corregido con validacion client-side y backendBatch 4
Horas preferidas sin leyenda inicialComponente StarLegend muestra icono estrella ambar + texto explicativo, con tooltip auto-show en primera visita (6s, localStorage)Batch 5

MejoraDescripcionDificultadEstadoImplementado
Selector de timezoneDropdown de timezone junto al display de GMT offsetFacilBatch 4
Heatmap visualIndicador de intensidad en las cabeceras de dia mostrando cantidad de slots disponiblesMedioBatch 4
Reserva multiplePermitir seleccionar multiples slots y reservar en batch, descontando creditos de una vezDificil

ArchivoProposito
apps/web/src/routes/student/book.lazy.tsxWizard de reserva
EndpointMetodoProposito
/student/teacherGETInfo del profesor + servicios
/student/enrollmentsGETEnrollments activos del alumno
/student/preferred-hoursGET/PATCHPreferencias horarias
/public/:slug/service-availabilityGETSlots disponibles (con flag isPreferred)
/student/sessionsPOSTReservar sesion