Eventos de grupo
Canal específico para que los clientes propongan eventos privados (cumpleaños, comuniones, cenas de empresa, despedidas, afterworks) sin saturar el flujo de reservas normales.
Tipos de evento
- Cumpleaños (con campos extra: nombre y edad del cumpleañero)
- Comunión
- Afterwork
- Cena de empresa
- Despedida
- Otro
Flujo desde el cliente
En la página pública, si tienes activado group_events_enabled, aparece la opción "¿Es un evento? Envíanos una propuesta".
Formulario con:
- Tipo del evento.
- Fecha preferida + alternativa (opcional).
- Hora preferida (opcional, default 13:00).
- Tamaño del grupo (1-200).
- Presupuesto por persona (opcional, en céntimos).
- Datos del cliente: nombre, teléfono, email (recomendado).
- Requisitos (texto libre, hasta 2000 caracteres): dietas, alergias, decoración, música, etc.
- Campos según tipo: nombre del cumpleañero, dirección si es a domicilio…
El cliente envía y recibe confirmación visual con código de referencia.
Validaciones
- Rate limiting: máximo 3 propuestas/IP en 15 minutos.
- Idempotencia: misma propuesta enviada dos veces no duplica.
- Tamaño grupo entre 1 y 200.
Estados
Pendiente → Aceptada → Reserva creada
↓ ↘
Expirada Rechazada
- Pendiente: recién enviada, esperando respuesta.
- Aceptada: el hostelero aceptó y se creó una reserva provisional vinculada.
- Rechazada: el hostelero declinó (con mensaje opcional).
- Expirada: 14 días sin respuesta.
Caducidad automática a 14 días
Cada propuesta nace con expires_at = now() + 14 días. Un cron diario a las 03:15 UTC marca como expired las pendientes vencidas.
Esto garantiza que:
- El cliente no se queda esperando indefinidamente.
- El hostelero tiene un plazo claro.
- La bandeja de pendientes se mantiene limpia.
Gestión desde el dashboard
/app/eventos lista las propuestas con filtro por estado (default: pendientes).
Cada tarjeta muestra:
- Nombre y teléfono del cliente
- Tipo de evento (badge)
- Estado (badge coloreado)
- Fecha preferida + alternativa
- Tamaño y presupuesto
Click en una propuesta → panel lateral con detalle completo y dos acciones:
- Aceptar y crear reserva: requiere mensaje (mín. 2 caracteres) que el cliente recibe por email. Crea una reserva provisional vinculada con estado pending.
- Rechazar: también requiere mensaje. La propuesta queda como
declined.
Una vez respondida, no se puede repetir.
Email automático al hostelero
Cuando entra una propuesta, RestaPro envía un email al equipo (a los alert_emails configurados) con resumen y link directo al dashboard.
Aceptar = reserva creada
Al aceptar, el sistema:
- Crea una reserva con
source = group_event, statuspending, fecha y hora preferidas. - Vincula la reserva al
proposal_id. - Si el cliente dejó email, le envía confirmación con código de referencia y mensaje del hostelero.
Después puedes refinar la reserva en /app/reservas: asignar mesa concreta, ajustar hora, añadir notas internas.
Pinche también gestiona
- "Lista propuestas pendientes" → resumen conversacional.
- "Acepta la propuesta de Ana con este mensaje: confirmado, te llamamos el lunes" → ejecuta con confirmación previa.
- "Rechaza la propuesta de Carlos. Dile: ese día tenemos privado." → rechaza y avisa al cliente.
Buenas prácticas
- Responde en menos de 48 h: tasa de aceptación cae rápido si tardas.
- Personaliza el mensaje: tu cliente verá literal lo que escribas.
- Adjunta menú propuesto en el mensaje si tienes uno fijo para grupos (link al menú PDF).
- Si rechazas, propón alternativa: "esa fecha no, ¿pruebas el sábado?".
- Para grupos grandes (15+): pre-llama al cliente antes de aceptar para confirmar detalles operativos.