Saltar al contingut principal

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:

  1. Crea una reserva amb source = group_event, status pending, data i hora preferides.
  2. Vincula la reserva al proposal_id.
  3. 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.
ESENCA