Technická architektura
Vychází z architektonického schématu od Patrika (Perfect System), whiteboard brainstormingu a schema.md. Kompletní raw data: context/analysis/architecture-real.md.
Přehled systémů
| # | Systém | Technologie | Role |
|---|---|---|---|
| 1 | DatoCMS | Headless CMS (SaaS) | Content management — vlastní instance per portál |
| 2 | PORTAL | Next.js 16 | BFF vrstva — web + REST API pro APP + sync skript |
| 3 | Colosseum | Backend (proprietární) | Hlavní ticketingový systém — dvě API (SOAP + JSON) |
| 4 | APP | React Native (pravděpodobně) | Mobilní aplikace — předmět tendru |
| 5 | Elastic | Elasticsearch | Fulltext vyhledávání |
| 6 | Notification Server | Dedikovaná služba | Push notifikace — auto triggery + marketing webhooky |
| 7 | Firebase | FCM (Google) | Doručování push notifikací na zařízení |
Diagram datových toků
Datové zdroje per doména
| Doména | Zdroj dat | Protokol | Příklady dat |
|---|---|---|---|
| Program / Akce | PORTAL (cache z DatoCMS) | REST | Seznam akcí, detail, filtry, doporučené, galerie |
| Pořadatelé / Místa | PORTAL (cache z DatoCMS) | REST | Detail pořadatele, venue, GPS |
| Mediální obsah | PORTAL (cache z DatoCMS) | REST | Obrázky, video, texty, credits |
| Vyhledávání | PORTAL → Elastic | REST | Fulltext výsledky |
| Seat map / Sál | CoreAPI přímý | JSON | Sedadla (x1,y1,x2,y2), sekce, stavy |
| Košík | CoreAPI přímý | JSON | Vstupenky, balíčky, vouchery, fees, services |
| Objednávky | CoreAPI přímý | JSON | Order (pre-payment), storno, obnovení |
| Platby | CoreAPI přímý | JSON | Payment URL, ověření stavu |
| Prodeje / Wallet | CoreAPI přímý | JSON | Sale items, barcodes, e-tickets |
| Dokumenty | CoreAPI přímý | JSON | E-vstupenka, e-voucher, e-účtenka |
| Účet / Auth | CoreAPI přímý | JSON | Login, registrace, OAuth, profil |
| Notifikace | Firebase FCM | Push | Transakční + marketingové push |
Popis systémů
Colosseum — hlavní backend
Colosseum vystavuje dvě oddělená API:
| API | Protokol | Účel | Konzument |
|---|---|---|---|
| SOAP API | SOAP/XML | Synchronizace představení a pořadatelů do DatoCMS | PORTAL (sync skript) |
| JSON API (CoreAPI) | REST/JSON | Zákaznická zóna — 70 endpointů, 13 domén | APP (přímý přístup) |
JSON API = coreapi_online.json (OpenAPI v17.0.0.0), JWT autentizace per session.
Podrobný přehled endpointů: CoreAPI integrace.
PORTAL — BFF vrstva (Next.js 16)
- Sync skript: Synchronizuje data z Colossea (SOAP) do DatoCMS
- REST cache: Vystavuje cachované endpoints pro APP — program, konfigurace, obsah
- Web frontend: Programový obsah pro webový portál
- Elastic integrace: Indexace + fulltext query
- Požadavek: AI-ready codebase (rules, skills, AGENTS.md)
APP nikdy nevolá DatoCMS přímo. Veškerý programový obsah jde přes PORTAL REST cache endpoints, aby se šetřily DatoCMS API cally.
DatoCMS — content management
- Headless CMS — vlastní instance per portál
- Přijímá synchronizovaná data z Colossea (přes PORTAL sync skript)
- GraphQL API pro PORTAL
- Webhooky pro Notification Server (marketingové notifikace)
Notification Server
Dedikovaná služba pro push notifikace s vlastní databází (uživatelé + FCM tokeny).
Dva zdroje triggerů:
| Zdroj | Typ | Příklady |
|---|---|---|
| Colosseum | Automatické (AUT.) | Zrušení akce, transakční potvrzení, změna |
| DatoCMS | Marketingové (webhooky) | Nová akce, slevová kampaň, doporučení |
Cílení: per-uživatel, per-zařízení, broadcast, nebo skupinové (pravidlo).
Firebase (FCM)
Firebase Cloud Messaging — delivery vrstva pro push notifikace. Device subscription management.
APP — mobilní aplikace
| Aspekt | Detail |
|---|---|
| Technologie | React Native (pravděpodobně — frontend tým) |
| Repository | Vlastní repo (ne od dodavatele) |
| AI-ready | Rules, skills, dokumentace pro AI |
| CI/CD | Build + deployment do App Store a Google Play |
Komunikuje se třemi systémy:
- PORTAL (REST) — programový obsah, vyhledávání
- CoreAPI (JSON) — zákaznická zóna (login, košík, platby, wallet)
- Notification Server (REST) — registrace FCM tokenu
Integrace třetích stran
| Služba | Účel | Stav |
|---|---|---|
| DatoCMS | Content management (per portál) | Existující |
| Elasticsearch | Fulltext vyhledávání | Existující |
| Firebase (FCM) | Push notifikace delivery | Existující |
| Apple Pay | Mobilní platba (PaymentType.ApplePay) | Potvrzeno (CoreAPI) |
| Google Pay | Mobilní platba (PaymentType.GooglePay) | Potvrzeno (CoreAPI) |
| OAuth | Apple ID, Google, Facebook login | Potvrzeno (CoreAPI) |
| Platební brány | GPWebPay, GoPay, ČSOB eAPI, Comgate, PayPal | Konfigurovatelné (CoreAPI) |
| Benefit karty | Pluxee, Edenred, BenefitPlus, Benefity | Volitelné (CoreAPI) |
| Zásilkovna / Balíkovna | Fyzické doručení vstupenek | Volitelné (CoreAPI) |
Datové toky — vizualizace
Programový obsah
Colosseum (SOAP API) → PORTAL sync skript → DatoCMS → PORTAL (GraphQL) → Next.js cache → APP (REST)
Zákaznická zóna
APP ↔ Colosseum JSON API (CoreAPI) — přímá obousměrná komunikace
Vyhledávání
PORTAL → Elasticsearch (indexace) + APP → PORTAL REST → Elasticsearch (query)
Push notifikace
Colosseum (AUT. triggery) → Notification Server → Firebase → APP
DatoCMS (webhooky) → Notification Server → Firebase → APP
APP → Notification Server (registrace FCM tokenu)