Operativa diaria
Cómo lleva un encargado el servicio en buffet sin sobresaltos: el Kiosk de buffet en Admin → Buffet → Kiosk es la pantalla que mira todo el día. De ahí se controlan pausa, cierre, override y ajustes por mesa.
Vista de mesas activas
El Kiosk muestra una tarjeta por sesión abierta con:
- Mesa y número de comensales (con desglose si aplica).
- Ronda actual y countdown del cooldown si está esperando.
- Tiempo desde el inicio (verde < 75% del tiempo límite, naranja 75-95%, rojo >95%).
- Importe estimado = cubierto + premium + bebidas + desperdicio acumulado.
Tap en cualquier tarjeta abre las acciones por mesa.
Abrir una mesa desde el TPV (staff-driven)
Si activaste el modo "el camarero abre la mesa", en cada tarjeta vacía verás un botón Abrir buffet:
- Pulsa el botón → modal "Comensales".
- Marca adultos / niños / mayores con los +/− y confirma.
- La sesión arranca con esos números bloqueados; el cliente sólo escanea y pide.
El kiosk refleja la mesa en menos de 2s vía SignalR (BuffetHub).
Pausa temporal del servicio
Cuando la cocina se satura puedes pausar el buffet sin cerrar las mesas en curso:
- Admin → Buffet → Kiosk → Pausar (5, 10, 15, 20, 30 min).
- Los clientes que ya están dentro pueden seguir comiendo lo que ya tienen — sólo se bloquea pedir rondas nuevas.
- El QR público muestra un mensaje "Estamos terminando la ronda anterior, vuelve en X min".
- Las sesiones nuevas (escaneo de QR) se bloquean hasta el fin de la pausa.
Puedes cancelar la pausa antes del tiempo con el mismo botón.
Forzar cierre de mesa
Si una sesión "se queda colgada" (cliente se fue sin pagar, fallo de red, mesa abandonada):
- Toca la tarjeta → Acciones → Forzar cierre.
- Confirma comensales (puedes ajustar si fue distinto al inicio).
- La sesión pasa a Closed; el pedido queda listo para cobro en el TPV como cualquier otro.
Cuidado: forzar cierre cobra el cubierto. Si fue un escaneo accidental y no hubo consumo, usa Anular sesión en lugar de cerrar.
Anular sesión (sin cobro)
Para escaneos de prueba, fallos del QR o salidas sin consumo:
- Acciones → Anular → razón obligatoria.
- La sesión se elimina del kiosk; no genera ticket; queda en el log de auditoría.
- Sólo disponible para personal con rol Manager o superior.
Acciones en bloque
Botón Seleccionar varias en la cabecera del kiosk: marca varias mesas y aplica:
- Cerrar todas — útil al final del servicio cuando ya nadie va a pedir más.
- Reiniciar cooldown — cancela esperas en mesas seleccionadas si la cocina ya está al día.
- Avisar al cliente — envía push al QR del cliente con un mensaje predefinido (ej. "cerramos cocina en 10 min").
Ajustar comensales (semántica snapshot)
Una sesión guarda el precio del cubierto y las tarifas (niños/mayores) en el momento de abrirla. Eso significa que:
- Si admin desactiva la tarifa de mayores a mitad de servicio, las mesas con mayores ya cargados siguen pagando con la tarifa que tenían — no se vuelven gratis de golpe.
- Si ajustas seniors en una mesa existente desde la Kiosk, lo aceptamos aunque la tarifa esté desactivada globalmente (es una sesión legalmente abierta bajo el flag anterior).
- El precio del cubierto capturado al inicio sólo cambia si el operador lo modifica desde Override por mesa.
Para abrir nuevas mesas con tarifa desactivada, el TPV rechaza la apertura con un error claro. Snapshot ≠ post-open editing.
Override por mesa
Cambia tiempo límite, cooldown, tope por ronda o precio del cubierto sólo en UNA mesa, sin tocar la configuración global. Útil para grupos VIP, cumpleaños o errores de cobro:
- Tarjeta → Acciones → Ajustes por mesa.
- Cambia el valor; el resto del restaurante NO se ve afectado.
- El override sólo dura lo que dura esta sesión — al cerrar la mesa, vuelve a los valores globales.
Lectura desde cocina
La pantalla KDS es independiente y se ve en /cocina/{slug}. Tres atajos útiles desde el kiosk:
- Acciones → Marcar ronda entregada — si la cocina olvidó marcarlo, lo hace el encargado para que el cooldown empiece a correr.
- Acciones → Llamar al cliente — vibra/notifica al QR para que vaya a por la comanda lista (útil sin sistema de buscas).
- Acciones → Marcar desperdicio — abre la pantalla de marcado de platos sin tocar para añadir cargo al ticket.
TV de cocina/sala
En /admin/{slug}/buffet/tv tienes una pantalla grande pensada para televisores: una mesa por celda con countdown ring, ronda actual y comensales. Sin controles — sólo visualización.
Sigue el mismo SignalR del kiosk, refresco < 2s. Útil colgada en el pase para que cocina vea de un vistazo qué mesas piden a la vez.
Cierre del servicio
Al terminar el turno:
- Pausa el buffet (evita escaneos de última hora).
- Espera a que cada mesa pida la cuenta y pague.
- Cierra mesas pendientes con Forzar cierre si alguien se va sin pagar.
- El Cuadre de caja en Admin → Caja ya incluye los ingresos del buffet desglosados — no hay paso extra.
Checklist diario sugerido
- 🌅 Apertura: revisar franja horaria activa y stock de premium con cupo diario.
- 🍱 Pre-servicio: 1 escaneo de prueba en una mesa para validar QR + impresora + KDS, anular después.
- 👀 Durante el servicio: vigilar tarjetas en rojo (>95% tiempo límite) y avisar antes de cobrar.
- 🌙 Cierre: pausar 10 min antes del cierre real, asegurarse de que no quedan mesas activas, revisar informe del día.