Cómo funciona la agenda
Una cita ocupa el tiempo del servicio más los buffers (antes y después). Los buffers son tiempo extra que no se cobra al cliente pero se reserva para preparar/limpiar/desplazarse. El motor comprueba tres capas antes de aceptar una cita:
- Horario laboral (por día y por recurso).
- Excepciones (días cerrados u horarios especiales).
- Bloqueos manuales y otras citas activas.
El hueco libre es el intervalo entre dos citas o entre el inicio del día y la primera cita, menos los buffers correspondientes.
Servicios: duración y buffers
La duración es el tiempo con el cliente. Los buffers antes y después se añaden encima. Si tu servicio dura 30 minutos y tienes 5 de buffer después, cada cita ocupa 35 minutos de agenda.
Los servicios "rellena-huecos" (marcados como is_filler) son servicios cortos que solo se ofrecen dentro de huecos flanqueados por al menos una cita real: entre dos citas, o entre el borde del turno y una cita. Nunca aparecen en jornadas completamente vacías, para no bloquear tramos grandes con reservas pequeñas.
Requieren el toggle Permitir servicios rellena-huecos encendido en Ajustes → Agenda. Si está apagado, el servicio existe pero no ofrece horarios en la página pública. Aplica igual en Malla fija, Dinámico y Encadenado.
Ejemplo
Manicura: "Uñas completas" (75 min) y "Retoque" (20 min) marcado como rellena-huecos. En un día vacío, "Retoque" no aparece. Si dos citas grandes dejan un hueco de 25 minutos entre ellas, "Retoque" sí se ofrece dentro de ese hueco.Recursos y disponibilidad
Un recurso (persona, sala, equipo o capacidad) sólo aparece como opción en las reservas cuando tiene un horario configurado. Sin horario, el motor no sabe cuándo puede aceptar citas y devolverá "sin huecos" incluso si el servicio está activo.
Al crear un recurso nuevo tienes tres opciones para el horario inicial:
- Horario base (L–V, 09:00–18:00): punto de partida cómodo que puedes ajustar después en Disponibilidad.
- Copiar de otro recurso: ideal cuando incorporas a un compañero con el mismo horario que uno ya existente.
- Configurar después: el recurso queda creado pero sin disponibilidad. Recuerda añadirle horas antes de que pueda recibir reservas.
Políticas de generación de horas
El sistema puede generar las horas ofrecidas al cliente de tres formas distintas. Se configura en Ajustes → Agenda por cada negocio.
1) Malla fija (por defecto)
Genera horas cada X minutos (por ejemplo cada 15 o cada 30) desde el inicio del horario laboral. Es predecible para el cliente: siempre ve horas "redondas" (10:00, 10:15, 10:30…).
Cuándo usarlo
Pocos servicios de duraciones parecidas. Quieres una agenda muy predecible.
Cuándo no
Mezclas servicios muy dispares (20 vs 90 min): aparecerán huecos muertos.
¿Qué es el "Paso de la malla"?
El paso es cada cuántos minutos se ofrece una hora de inicio al cliente. No es la duración de la cita, ni el buffer, ni el intervalo entre citas ya reservadas.
- Bloque de la cita =
duración + buffers. Lo fija el servicio, no el paso. - Paso de la malla = la rejilla de horas de inicio que se le muestran al cliente. Cambiar el paso solo cambia qué horas ve.
Ejemplo
Corte 30 min + buffer 5 min = bloque 35 min. Apertura 09:00.Paso 15, agenda vacía: se ofrece 09:00. Tras esa reserva (09:00–09:35), los siguientes válidos son 09:45, 10:00…
Paso 5: tras la reserva, se ofrece 09:35 directamente. Cero minutos muertos, pero horas más "raras".
2) Dinámico anclado al hueco libre
La malla no arranca desde el inicio del día, sino desde el final de la cita anterior (más buffer). Cada nueva reserva reinicia el ritmo dentro del hueco disponible. Elimina la desalineación clásica de servicios mixtos.
Cuándo usarlo
Mezclas servicios de duraciones muy distintas y quieres aprovechar cada minuto.
Cuándo no
Prefieres horas 'redondas' predecibles (10:00, 10:15…). En dinámico verás 10:35, 11:07…
Horas exactas (encendido): ofrece el primer minuto posible tras la cita anterior. Cita a las 18:00 + servicio 61 min + buffer 3 → siguiente opción 19:07.
Apagado: redondea al siguiente múltiplo del paso configurado. Con paso 5 → 19:10; con paso 15 → 19:15.
3) Encadenado (pegado)
Solo se ofrece una hora por cada hueco libre: la del inicio exacto del hueco. En este modo se ignoran "Horas exactas" y "Paso dinámico": siempre se ancla al minuto exacto en el que empieza el hueco.
Cuándo usarlo
Máxima ocupación. Tienes mucha demanda y prefieres que el cliente se adapte.
Cuándo no
Quieres dar al cliente varias opciones de hora.
Encadenado estricto: solo ofrece horas pegadas al final de otra cita. Si el día empieza vacío, no se ofrece la primera hora del turno hasta que exista alguna cita a la que pegarse.
Reglas comunes a todos los modos
- Tamaño mínimo del hueco libre: descarta huecos cuyo tamaño total sea menor. Evita ofrecer restos pequeños e inservibles.
- Permitir rellena-huecos: activa o desactiva globalmente los servicios marcados como fillers.
Reprogramar citas
Al reprogramar tienes dos opciones que aparecen en el diálogo:
- Respetar duración original: la cita mantiene el tiempo con el que se creó. Recomendado si el cliente contrató en las condiciones anteriores.
- Alinear con el servicio actual: se recalcula usando la configuración vigente. Útil para normalizar la agenda.
Todas las reprogramaciones quedan registradas en la auditoría de la cita.
Overrides administrativos
Sólo los roles owner y admin pueden forzar una cita en un horario ocupado. Al hacerlo:
- El sistema muestra las citas con las que se solapa.
- Se exige un motivo obligatorio.
- La acción queda registrada en el historial de la cita.
El override no está disponible en la página pública ni en la gestión por token: es una herramienta operativa interna.
Lista de espera (próximamente)
La lista de espera te permitirá anotar clientes que quieren una cita dentro de una ventana de tiempo. Cuando se libere un hueco compatible, el sistema podrá notificarte y ofrecer la cita a la primera persona en la lista.
Reservas públicas y gestión por token
La página pública de tu negocio (/reservar/<slug>) permite a cualquier cliente reservar sin cuenta. Al confirmar, recibe un enlace único con un token que le permite ver, cancelar o reprogramar su cita desde cualquier dispositivo, sin registrarse.
Los tokens se guardan cifrados (hash SHA-256) en la base de datos y expiran junto con la cita.