Events — el reglament d'esdeveniments
Estat (2026-04-28): model atòmic + festivals + refactor de tipus (9→5 valors) + sistema de tags + lloc polimòrfic (Venue o Location amb
kind) tot implementat. Vegeu memòria del sprint aproject_dev_state.mdi el reglament del lloc a Venues & Locations.
Què és un Event a LDP
Una activitat puntual amb data, hora i lloc. Si és recurrent (cada dimarts a la mateixa hora), no és un Event — és una classe.
Els 5 tipus
Pregunta't: a què va la gent principalment?
| Tipus | La gent va a... | Exemples |
|---|---|---|
| 🎉 FESTIVAL | Múltiples activitats sota un paraigua | "Festival Country Terrassa" (3 dies amb workshops + ballades + concerts) |
| 💃 SESSION | Ballar | Ballada setmanal, social, marató, party temàtica |
| 🎓 WORKSHOP | Aprendre (puntualment) | Taller iniciació, stage cap de setmana, conferència |
| 🎤 SHOW | Veure o escoltar | Concert, exhibició, competició, jam session |
| 🔧 OTHER | Cap de les anteriors | Reunió associació, casting, cas atípic |
La regla del polze quan dubtes
Entre SESSION i SHOW:
- Si la pista de ball és l'atracció principal → SESSION
- Si l'escenari és l'atracció principal → SHOW
Exemples per il·luminar la regla:
| Situació | Tipus | Per què |
|---|---|---|
| "Tribute Night ABBA, banda en directe + ball després" | SESSION | La gent ve a ballar, la banda ambienta |
| "Concert Lone Star Band, sense pista oficial" | SHOW | La gent ve a escoltar |
| "Marató 8h amb 3 DJs" | SESSION | És una ballada llarga |
| "Exhibició competitiva del club" | SHOW | La gent mira |
Tags — la classificació descriptiva
Després de triar el tipus, afegeixes tags per descriure l'event sense afectar el seu funcionament. Fins a 8 per event.
Categories de tags suggerits:
| Categoria | Exemples |
|---|---|
| Estil de ball | line-dance, country, two-step, west-coast-swing, bachata, salsa, swing |
| Nivell | beginner, intermediate, advanced |
| Preu | free, paid |
| Temàtica | christmas, halloween, tribute, charity |
| Públic | children, seniors, members-only |
| Format | marathon, practice, live-music, concert, competition, jam, open-mic, exhibition |
| Servei | dinner-included, costume-required, outdoor, online |
| Lliure | El que tu vulguis (text curt, normalitzat a kebab-case, fins a 40 caràcters) |
Tags oficials (els suggerits per la plataforma) tenen traducció. Tags lliures són text pur. Visualment es diferencien per color del chip.
Camps que demana el sistema segons el tipus
| Tipus | Setlist | Teacher | DJ | Notes |
|---|---|---|---|---|
| FESTIVAL | Prohibit | Prohibit | Prohibit | Les activitats filles tenen el seu |
| SESSION | Opcional | Opcional | Opcional | Cas majoritari, màxima flexibilitat |
| WORKSHOP | Prohibit | Obligat | Prohibit | El teacher és el cor |
| SHOW | Prohibit | Opcional | Opcional | El "teacher" pot ser un coreògraf que dirigeix l'exhibició |
| OTHER | Opcional | Opcional | Opcional | Escape hatch |
A més, tots demanen: nom, data/hora, venue (o location standalone, futur), descripció, imatge opcional.
Festivals — model parent-child
Un FESTIVAL és un contenidor: té rang de dates, descripció, venue principal opcional, però no té setlist propi. El que fa són activitats filles (events vinculats al festival via parent_event_id).
Cada activitat filla és un Event normal (qualsevol dels 5 tipus excepte FESTIVAL). Té venue propi, horari propi, teacher/DJ propis, setlist propi.
Regles:
- Un FESTIVAL no pot ser fill d'un altre (sense nesting)
- Una activitat filla NO pot ser de tipus FESTIVAL
- Les dates de les activitats han d'estar dins del rang del FESTIVAL pare
- Un FESTIVAL sense activitats és vàlid (es publica primer, s'omple després)
Persones a un Event (multi-rol)
Un Event pot tenir N persones amb diferents rols:
| Rol | Quan s'usa |
|---|---|
TEACHER | Imparteix workshop o classe oberta |
DJ | Posa la música de la sessió |
CHOREOGRAPHER | El coreògraf dels balls programats (per visibilitat) |
STAFF | Equip d'organització |
ARTIST | Artista/banda d'un show |
ORGANIZER | Organitzador delegat |
GUEST | Convidat especial |
Una mateixa persona només pot aparèixer un cop per event (amb el rol que fa al cap d'aquell event).
Atribució pública — qui consta com a organitzador
Cal distingir tres papers (refinat 2026-06-10): organitzador (qui fa l'event), registrant (qui l'introdueix a la plataforma) i font (d'on surt la informació). Sovint coincideixen — un promotor publica el seu propi event —, però NO als events importats, on l'admin és un steward de dades, no l'organitzador.
Cada event mostra "Organitzat per: [...]" amb prioritat:
- Si està vinculat a una Organització acreditada → "Organitzat per: [Nom Org]" (link a fitxa) — etiqueta
Verificat - Si té
organizerDisplayName(l'organitzador REAL: grup/persona) → "Organitzat per: [DisplayName]", i a sota, discret, "Registrat per [Nom user]" (+ "· via import" sisource = IMPORT) — etiquetaInformació no verificada - Si no → "Organitzat per: [Nom user creador]" (el creador és l'organitzador) — etiqueta
Informació no verificada
El registrant sempre és visible com a responsable de la publicació (responsabilitat inalienable), però no com a organitzador: l'organitzador és qui realment fa l'event. L'única manera d'amagar el nom personal del registrant és vincular l'event a una organització acreditada (futur), o atribuir-lo a una font col·laboradora (programa de col·laboradors, T-230).
Estats de publicació
| Estat | Visibilitat | Editable |
|---|---|---|
DRAFT | Només admins i el creador | Sí |
PUBLISHED | Tothom | Sí (camps no estructurals) |
Pendent (futur): CANCELLED, POSTPONED, ARCHIVED amb sistema de notificacions associat.
Confiança (Trust Levels)
Cada event té un trust level derivat que determina quina etiqueta li posem públicament:
| Nivell | Significat | Banner |
|---|---|---|
VERIFIED_OWNER | Creat per propietari acreditat del venue | Cap banner |
VERIFIED_ENTITY | Vinculat a organització acreditada | "Verificat" |
INFORMATIVE_ADMIN | Creat per admin sense propietari acreditat | "Informació no verificada" |
INFORMATIVE_USER | Creat per usuari sense entitat acreditada | "Informació no verificada per l'organitzador ni pel propietari del lloc" |
Què passa si tries malament
No passa res greu: pots editar el tipus en qualsevol moment, els tags, l'horari, etc. Cap dada es perd. Les úniques limitacions són:
- Un event passat no es pot reeditar (només canviar l'estat de publicació)
- Un FESTIVAL no es pot escurçar de dates si té activitats que quedarien fora
Què NO és un Event
- Una classe regular (cada dimarts a les 19h durant 6 mesos) → és un Course
- Un local físic → és un Venue
- Una cançó o un ball → és catàleg
Per què aquesta estructura
Cada nou cas d'ús (events benèfics, fires, temàtiques de Nadal…) pressiona per afegir un valor nou a un enum tradicional de tipus d'event. La llista creix linealment, el wizard es complica, els filtres es multipliquen.
La separació Type (5 valors estables) + Tags (lliures) evita aquesta inflació:
- El Type drives el flow del wizard, validacions, camps obligatoris
- Els Tags descriuen sense afectar el sistema
Quan apareix un cas nou (ex: "ballada zen al jardí"), no cal afegir un tipus — només els tags adequats (outdoor, meditation, experimental).