Servicio en vivo: rediseño profundo y lista de espera nativa
Tres días largos sobre /app/local, la pantalla de servicio en sala. El detonante fue Fisher's, nuestro piloto en Velázquez (Madrid), con alto volumen de walk-ins: pedían lista de espera nativa, walk-ins más rápidos y un plano que no se quedara viejo. Las tres cosas están en producción. De paso hemos limpiado la fricción acumulada de cinco iteraciones anteriores.
Lista de espera nativa
Antes la espera se gestionaba con papel o nota mental. Ahora vive dentro de RestaPro:
- Botón "Espera" en el header del kiosko, al lado de "+ Walk-in". Cuando hay alguien esperando, sale un contador ámbar.
- Tap → diálogo rápido con 8 botones grandes de comensales (1 a 8) y un input para grupos mayores. Nombre y teléfono opcionales.
- Sección "En espera" arriba de la sidebar, ordenada por orden de llegada. Cada entry muestra el tiempo esperando ("12m"). A los 30 min sale un anillo ámbar de aviso.
- Tap "Sentar" sobre una entry → modo de asignación: el banner emerald arriba dice "Sentando espera: Pepe (4 pax) → toca una mesa libre". Tap a una mesa disponible y queda sentado en una sola interacción.
La entry no se borra al sentar; se enlaza a la reserva creada en el historial. Sirve para futuros analytics de tiempo medio de espera por turno.
Walk-in en dos toques desde el plano
Antes: 6-7 taps para registrar un walk-in (abrir form, teclear nombre obligatorio, elegir hora, mesa, comensales, notas). Ahora:
- Tap a una mesa libre del plano → abre diálogo "Walk-in · Mesa 4".
- Tap a un botón de comensales (1-8) → reserva creada, asignada a la mesa y marcada como llegada en sala. Una sola interacción adicional.
El nombre se autorrellena (Walk-in HH:mm); si quieres ponerle nombre real, hay un "+ nombre / 9 o más" que abre el formulario completo con todos los datos prellenados.
Cambiar mesa: tap reserva, tap mesa, listo
Reasignar una reserva ya no abre un modal. En el dropdown de cada fila hay "Cambiar mesa":
- Tap → banner emerald "Asignando: María (4 pax) · 20:30 → toca una mesa libre".
- Tap a una mesa disponible del plano → reasignada y banner desaparece.
Esc cancela en cualquier momento. El modal antiguo sigue disponible para combinar varias mesas o forzar una con conflicto.
Plano siempre fresco
El plano de mesas ahora se actualiza en tiempo real entre dispositivos. Si otro miembro del equipo marca llegada o reasigna desde la barra, la pantalla del jefe de sala lo refleja en menos de un segundo. Si se cae la conexión realtime, hay una red de seguridad que refresca cada 15 s.
Además, marcar llegada / sentar / completar pinta el cambio al instante (sin esperar al servidor). Si la operación falla, vuelve atrás solo. Adiós al medio segundo de "¿se ha guardado?".
Badge de alergia en filas y mesas
Si las notas de la reserva mencionan una alergia o restricción (gluten, lactosa, vegano, frutos secos, mariscos, celíaco…), aparece automáticamente:
- Badge rojo "⚠ Alergia" en la fila de la sidebar, junto al nombre.
- Icono rojo en la esquina de la mesa del plano.
No hace falta marcar nada manualmente: una expresión regular detecta los patrones más habituales en español y catalán básico. Cualquier mención dispara el aviso. En sala vale más exceso de aviso que omisión.
Tarde con grace para confirmadas
Antes solo las pendientes se marcaban como overdue cuando pasaba la hora. Una confirmada que se retrasaba 30 min no se distinguía. Ahora ambos casos comparten tratamiento visual:
- Borde rojo a la izquierda de la fila.
- Chip "tarde 8 min" junto al nombre.
- Botón ámbar "Llamar" inline con tap-to-call directo (cuando hay teléfono).
El umbral por defecto para confirmadas es 10 min. Antes se asume que el cliente está llegando.
Chip de servicio con fases
El chip "Próximo servicio" del header ahora cambia con el tiempo:
| Fase | Cuándo | Visual |
|---|---|---|
| En curso | Servicio activo | Verde, "Comida · termina 16:00" |
| Cierra pronto | ≤15 min para cerrar | Ámbar pulsante, "Comida · cierra en 12 min" |
| Próximo | Más de 60 min antes de abrir | Gris discreto, "Próx · Cena 20:00" |
| Prepárate | ≤60 min antes de abrir | Ámbar saturado, "Prepárate · Cena 20:00 · en 45 min" |
Pensado para anticipar transiciones sin tener que mirar el reloj.
Sonido diferenciado por severidad
Cuando entra una reserva online:
- Beep normal (2 pulsos suaves) → reserva estándar.
- Beep crítico (3 pulsos descendentes, más fuertes) → cliente con alergia en notas o con historial de no-shows. El oído lo distingue sin mirar la pantalla.
Toggle de sonido en el icono de campana del header (se persiste por dispositivo).
Sidebar densa
El panel lateral del kiosko se ha condensado:
- KPI strip horizontal (cubiertos en sala · mesas libres · % ocupación · no-shows) en una fila en lugar del cuadrado 2×2.
- Buscar + chips de filtro + acciones en una sola fila.
- Quick actions colapsadas a 1 botón primario contextual + dropdown con el resto. Antes: grid de 4 botones siempre visibles bajo cada reserva. Ahora: 50 % más reservas above-the-fold.
- Selector de turno (Comida / Cena) inline en la card de fecha en lugar de banda dedicada.
Resultado: en una tablet 1024×768 caben 9 reservas above-the-fold en lugar de 6.
Pinche puede crear reservas
Hasta hoy solo modificaba existentes. Ahora le puedes decir "crea una reserva mañana a las 13 para María, 4 personas" y Pinche pide confirmación, valida los datos y la registra como cualquier alta interna. Ver recetas comunes.
Accesibilidad y ergonomía
- Touch targets ≥44 px en todos los controles del kiosko (dedos sucios, dedos rápidos).
- Mesas accesibles por teclado: Enter / Espacio activan el clic, ring azul visible al focus, lector de pantalla anuncia "Mesa 4, 4 comensales, libre" completo.
- Skip-link al main para usuarios de teclado: salta header + banners directamente al plano y la sidebar.
Por qué importa para Fisher's
El piloto entra a 100 % el 2026-05-11. El vector crítico era el alto volumen de walk-ins en la calle Velázquez: con la lista de espera nativa, el walk-in 2-tap y la asignación inline, el host sienta a alguien con literalmente dos toques en el plano. Sin abrir formularios, sin teclear, sin papel.
Si tu restaurante tiene un perfil parecido, esta versión te va a quitar fricción visible.
Y mañana
Lo siguiente en cola: vista Gantt (línea de tiempo horizontal de mesas durante el servicio), seguimiento de cursos (entrante / principal / postre / cuenta) y un copilot de Pinche dentro del kiosko que sugiera reasignaciones cuando la cocina vaya saturada. Los tres traen la pantalla a nivel de SevenRooms / Resy, pero en español y sin comisión.
Por ahora, salir y probarlo.