Reservas online: capacidad, recursos y calendarios sin cruces
Un sistema de reservas no consiste en pintar huecos libres. Debe decidir si un servicio puede prestarse con las personas, salas, equipos, aforo y tiempo de preparación disponibles, y mantener esa decisión cuando dos clientes actúan a la vez. Primero se modelan recursos, reglas y estados; después se elige una agenda estándar, una integración o una aplicación a medida.
Lo esencial, antes de empezar
- Un hueco horario solo es reservable cuando coinciden servicio, duración, recursos, capacidad, políticas y ocupación externa.
- Consultar disponibilidad y confirmar son operaciones distintas; la última plaza necesita una reserva atómica o una retención con caducidad.
- La herramienta se elige después de documentar reglas, fuente de verdad y casos de prueba, no por el aspecto del calendario.
La respuesta corta: modela la unidad que realmente vendes
Define cada servicio con duración, recursos obligatorios, capacidad consumida, preparación anterior o posterior, ubicación, ventana de reserva y política de cambio. Un hueco de 10:00 a 11:00 puede estar libre para una llamada y ser imposible para una actividad que necesita dos personas y una sala. Si el modelo parte únicamente de eventos del calendario, estas restricciones acaban dispersas en notas y comprobaciones manuales.
Una agenda estándar suele bastar para una persona, duraciones fijas y reglas sencillas. La integración es razonable cuando varias agendas existentes determinan disponibilidad. Una aplicación cobra sentido cuando la reserva consume inventario o aforo, calcula precio, coordina recursos alternativos o desencadena un flujo propio. Esta es una aplicación operativa; la comparación general entre web y aplicación a medida ayuda a ubicar esa diferencia.
Convierte personas, salas y equipos en capacidad explícita
Crea una ficha por servicio: duración y granularidad; perfiles que pueden prestarlo; recursos físicos; unidades consumidas; combinaciones válidas; sedes; reglas de sustitución; y tiempos de limpieza o preparación. Separa capacidad total de disponibilidad individual. Una clase puede aceptar ocho personas con un instructor y una sala; una revisión puede exigir un profesional concreto y un equipo que también se usa en otro servicio.
| Pregunta | Ejemplo hipotético | Decisión |
|---|---|---|
| ¿Qué se consume? | 1 técnico + 1 equipo | Ambos deben estar libres |
| ¿Cuánta capacidad? | 6 plazas | Cada reserva resta unidades |
| ¿Qué preparación? | 15 minutos | Bloqueo antes o después |
| ¿Hay alternativas? | Sala A o B | Asignación al confirmar |
| ¿Quién manda? | Agenda operativa | Fuente de ocupación definida |
Aplica las reglas en un orden que se pueda explicar
Empieza por horario base y zona horaria; aplica cierres y excepciones; resta ocupación externa; añade preaviso mínimo, horizonte máximo, buffers, máximo diario, capacidad y reglas de cancelación. Google Calendar documenta que sus horarios de citas pueden configurar ventana, preaviso, excepciones, tiempo entre citas y máximo diario. Esa lista es un buen inicio, pero no sustituye las reglas de recursos compartidos o inventario.
Conserva el motivo por el que una opción no está disponible, aunque el cliente reciba un mensaje simple. Para soporte no es lo mismo “fuera de horario” que “equipo ocupado” o “calendario externo sin respuesta”. Establece también prioridad entre reglas: un cierre de sede debe prevalecer sobre un horario individual abierto. Publica las zonas horarias de forma explícita y guarda instantes en un formato coherente para evitar citas desplazadas en cambios estacionales.
Separa disponibilidad, retención y confirmación
Consultar un hueco no lo bloquea. Entre mostrarlo y confirmar pueden actuar otras personas. Define estados como disponible, retenido, confirmado, cancelado, expirado y pendiente de pago; especifica qué consume capacidad y durante cuánto tiempo. Para la última plaza, la comprobación y la asignación deben resolverse como una operación indivisible o bajo un control equivalente. Microsoft indica en su FAQ de Shared Bookings que, si varias personas intentan reservar la misma hora, solo una la obtiene.
Si hay pago, decide cuándo nace la retención, cuánto dura y qué ocurre con fallo, abandono o confirmación tardía. No mantengas capacidad indefinidamente por una sesión cerrada. Usa una clave de idempotencia para que un reintento no cree dos reservas y ofrece una respuesta recuperable si el cliente pierde conexión después del cobro. El mensaje de éxito debe aparecer cuando el estado comprometido sea real, no al pulsar el botón.
Decide qué papel tienen los calendarios externos
Un calendario puede ser fuente de ocupación, destino informativo o ambas cosas. Escribe la dirección de cada sincronización, latencia tolerada, tratamiento de eventos privados, duplicados, borrados y fallos parciales. La consulta freeBusy de Google Calendar API devuelve intervalos ocupados para calendarios dentro de un rango, con límites y errores por calendario. No crea una reserva ni garantiza por sí sola que el último recurso siga libre.
Si una agenda externa tarda o falla, elige una política: bloquear nuevas reservas, usar una caché dentro de un margen conocido o permitir y someter a revisión. La elección depende del coste de un cruce. Mantén un proceso de reconciliación que detecte reservas sin evento, eventos sin reserva y cambios posteriores. Un aviso de sincronización no basta; hace falta una vista operativa con responsable y acción segura.
Elige solución con escenarios y prueba los bordes
Haz una tabla de requisitos y comprueba primero un producto estándar con casos reales. Configura o integra si cubre las reglas sin trabajo manual peligroso. Define un MVP con criterios de aceptación cuando las diferencias formen parte central del negocio. El servicio de aplicaciones a medida encaja cuando el modelo de capacidad, la operación y las integraciones necesitan una interfaz propia y verificable. Mide cruces, reservas incompletas, tiempo de resolución y ocupación útil, no solo volumen reservado.
Elige el cobro según el momento de la reserva
Cuando la reserva exige señal o pago, decide si conviene enviar un enlace después de validar disponibilidad o presentar un checkout dentro del recorrido. La comparación entre enlace de pago y checkout integrado ayuda a repartir estados, reintentos y responsabilidades de seguridad sin mezclar una reserva pendiente con una pagada.
Fuentes y referencias
Documentación oficial y referencias de mercado consultadas para verificar los puntos que cambian con el tiempo.