S1 — Výběr vstupenek (neadresné sezení)
Účel obrazovky
Pro akce bez seat mapy — výběr cenových kategorií pomocí quantity counterů. Uživatel zvolí počet vstupenek v jednotlivých cenových úrovních (parter, balkón, VIP…) a pokračuje do košíku.
Content Priority
- Header — název akce, datum, místo konání, zpět na P3 — Detail akce App Bar / Top NavigationBack Button
- Accordion cenových kategorií — každá kategorie: název (např. „Parter"), krátký popis, cena za kus, dostupnost („Zbývá X" / „Vyprodáno") Accordion / Expandable
- Quantity counter — +/- tlačítka pro každou kategorii (stepper), výchozí hodnota 0 Counter (+/-)
- Real-time pricing — průběžný přepočet celkové ceny při změně množství Price Summary
- Bottom bar — sticky bar s celkovou cenou a CTA „Pokračovat do košíku" CTA Sticky BarPrimary Button
- Countdown timer — pokračuje z P3, rezervační countdown Countdown Timer
Interakce
| Trigger | Akce | Cíl |
|---|---|---|
| Tap na + u kategorie | Zvýšení quantity o 1, přepočet ceny | Real-time update bottom bar |
| Tap na − u kategorie | Snížení quantity o 1 (min 0) | Real-time update bottom bar |
| Quantity = 0 | − tlačítko disabled | Visual feedback |
| Quantity = max dostupnost | + tlačítko disabled | Visual feedback |
| Tap „Pokračovat do košíku" | Validace (alespoň 1 vstupenka), přechod | P5 — Košík |
| Tap „Pokračovat" s 0 vstupenkami | CTA disabled, nelze pokračovat | Blokáda |
| Swipe zpět / Back | Návrat bez uložení | P3 — Detail akce |
Stavy
| Stav | Popis | Vizuální chování |
|---|---|---|
| Loading | Načítání cenových kategorií | Skeleton accordion, disabled countery |
| Loaded | Kategorie dostupné | Accordion rozbalený, aktivní countery |
| Category sold out | Jedna kategorie vyprodána | Šedá/disabled, badge „Vyprodáno", counter skryt |
| All sold out | Všechny kategorie vyprodány | Disabled CTA, banner „Tato akce je vyprodaná" |
| Partial selection | Uživatel vybral některé kategorie | Aktivní bottom bar s celkovou cenou |
Edge Cases a Error States
| Scénář | Řešení |
|---|---|
| Kategorie vyprodána během výběru | Toast „Kategorie X byla právě vyprodána", refresh dostupnosti, odebrání z košíku pokud byla vybrána |
| Limit max vstupenek na objednávku (např. 10) | Zobrazit limit u counteru „Max 10 na objednávku", disable + při dosažení celkového součtu |
| Uživatel tlačítkem Pokračovat s 0 vstupenkami | CTA vždy disabled pokud součet = 0, nelze odeslat |
| Změna ceny na serveru během výběru | Info banner „Ceny se mohly změnit", refresh z API před přechodem do P5 |
| Částečně vyprodán (zbývá 2, uživatel má 3) | Při refresh: snížení quantity na max dostupné, toast „Kategorie X — zbývají jen 2 vstupenky" |
Mobilní patterny a odlišení od webu
Co přebíráme
- Accordion struktura cenových kategorií
- Real-time cenový souhrn
- Countdown timer z P3
Co děláme jinak
- Haptic feedback na tap +/− — lehký tap pro potvrzení akce
- Větší touch targety pro counter tlačítka (min 48dp) — na webu stačí menší click area
- Stepper místo textového inputu — nikdy ne číselné pole pro quantity na mobilu (lepší UX, méně chyb)
- Sticky bottom bar — vždy viditelný při scrollu, web má CTA níže v layoutu
Aplikované patterny
- iOS:
UISteppernebo custom stepper sUIImpactFeedbackGeneratorpro haptiku - Android:
MaterialButtonsMaterialButtonToggleGroupneboIconButton+OutlinedTextField,HapticFeedbackConstantspro click feedback
API Data
GET/cashdesk/event/{eventId}POST/cart/ticket/add/event-non-numberedGET/cart| Operace | Endpoint | Trigger | Poznámka |
|---|---|---|---|
| Cenové kategorie | GET /cashdesk/event/{eventId} | Otevření obrazovky | Vrací HallSection s view_type: NON (non-numbered), cenové kategorie |
| Přidání neadresných | POST /cart/ticket/add/event-non-numbered | Tap „Pokračovat" | Odešle ticket_count per kategorie |
| Aktuální košík | GET /cart | Po přidání | Vrací aktualizovaný košík s validity (countdown) |
CoreAPI poznatek
Neadresné akce mají HallSection.view_type = NON. Cenové kategorie (PriceCategory) mají barvu a abbreviation pro vizuální rozlišení. CustomerCategory (student, senior) se aplikuje přes PUT /cart/ticket/set-customer-category až v P5 Košík.
Reference — Aktuální web
SCR-WEB-27Neadresné — kategorie s countery, cenové kategorieSCR-WEB-28S navigací a total bottom barReference — CineStar benchmark
CineStar je zaměřen na kinematografie se sedadlovým výběrem; neadresné sezení není typický use case. Pro srovnání viz S1 adresné — Seat map.

