Esdeveniments de grup
Canal específic perquè els clients proposin esdeveniments privats (aniversaris, comunions, sopars d'empresa, comiats, afterworks) sense saturar el flux de reserves normals.
Tipus d'esdeveniment
- Aniversari (amb camps extra: nom i edat de l'aniversariant)
- Comunió
- Afterwork
- Sopar d'empresa
- Comiat
- Altre
Flux des del client
A la pàgina pública, si tens activat group_events_enabled, apareix l'opció "És un esdeveniment? Envia'ns una proposta".
Formulari amb:
- Tipus de l'esdeveniment.
- Data preferida + alternativa (opcional).
- Hora preferida (opcional, per defecte 13:00).
- Mida del grup (1-200).
- Pressupost per persona (opcional, en cèntims).
- Dades del client: nom, telèfon, correu (recomanat).
- Requeriments (text lliure, fins a 2000 caràcters): dietes, al·lèrgies, decoració, música, etc.
- Camps segons el tipus: nom de l'aniversariant, adreça si és a domicili…
El client envia i rep confirmació visual amb codi de referència.
Validacions
- Rate limiting: màxim 3 propostes/IP en 15 minuts.
- Idempotència: la mateixa proposta enviada dues vegades no duplica.
- Mida del grup entre 1 i 200.
Estats
Pendent → Acceptada → Reserva creada
↓ ↘
Expirada Rebutjada
- Pendent: acabada d'enviar, esperant resposta.
- Acceptada: l'hostaler la va acceptar i s'ha creat una reserva provisional vinculada.
- Rebutjada: l'hostaler la va declinar (amb missatge opcional).
- Expirada: 14 dies sense resposta.
Caducitat automàtica a 14 dies
Cada proposta neix amb expires_at = now() + 14 dies. Un cron diari a les 03:15 UTC marca com a expired les pendents vençudes.
Això garanteix que:
- El client no es queda esperant indefinidament.
- L'hostaler té un termini clar.
- La safata de pendents es manté neta.
Gestió des del dashboard
/app/eventos llista les propostes amb filtre per estat (per defecte: pendents).
Cada targeta mostra:
- Nom i telèfon del client
- Tipus d'esdeveniment (badge)
- Estat (badge acolorit)
- Data preferida + alternativa
- Mida i pressupost
Clic en una proposta → tauler lateral amb detall complet i dues accions:
- Acceptar i crear reserva: requereix missatge (mín. 2 caràcters) que el client rep per correu. Crea una reserva provisional vinculada amb estat pending.
- Rebutjar: també requereix missatge. La proposta queda com a
declined.
Un cop respost, no es pot repetir.
Correu automàtic a l'hostaler
Quan entra una proposta, RestaPro envia un correu a l'equip (als alert_emails configurats) amb resum i enllaç directe al dashboard.
Acceptar = reserva creada
En acceptar, el sistema:
- Crea una reserva amb
source = group_event, statuspending, data i hora preferides. - Vincula la reserva al
proposal_id. - Si el client va deixar correu, li envia confirmació amb codi de referència i missatge de l'hostaler.
Després pots refinar la reserva a /app/reservas: assignar taula concreta, ajustar hora, afegir notes internes.
Pinche també gestiona
- "Llista propostes pendents" → resum conversacional.
- "Accepta la proposta de l'Anna amb aquest missatge: confirmat, et truquem dilluns" → executa amb confirmació prèvia.
- "Rebutja la proposta del Carles. Digues-li: aquell dia tenim privat." → rebutja i avisa el client.
Bones pràctiques
- Respon en menys de 48 h: la taxa d'acceptació cau ràpid si trigues.
- Personalitza el missatge: el teu client veurà literalment el que escrius.
- Adjunta menú proposat al missatge si en tens un de fix per a grups (enllaç al menú PDF).
- Si rebutges, proposa alternativa: "aquesta data no, proves dissabte?".
- Per a grups grans (15+): pre-truca al client abans d'acceptar per confirmar detalls operatius.