Přeskočit na obsah

Lístky

Lístek je záznam ve frontě vydaný zákazníkovi ve chvíli, kdy se připojí. Je základní jednotkou systému front — vše od obrazovky až po rozhraní přepážky se točí kolem lístků.

  • Číslo lístku — pořadové celé číslo viditelné pro zákazníka, zobrazené na účtence z kiosku, na obrazovce a viditelné i v seznamu čekajících na přepážce. Čísla jsou vázána na frontu a monotónně rostou — nikdy se neresetují.
  • Hash lístku — náhodný 22znakový řetězec se 128 bity entropie. Tento hash slouží jako anonymní přihlašovací údaj zákazníka (viz níže).
  • Stav — jedna ze šesti hodnot (viz níže).
  • Fronta — fronta, ke které lístek patří.
  • Časová razítka — kdy byl lístek vytvořen, zavolán, dokončen atd.
  • Anotace (volitelné) — metadata zadaná personálem: jméno zákazníka, velikost skupiny a volný text poznámky. Viz Anotace lístku.

Lístek prochází během svého životního cyklu následujícími stavy:

StavKonečný?Význam
WAITINGNeZákazník je ve frontě a čeká na zavolání.
CALLEDNePřepážka tento lístek zavolala; zákazník by měl přijít k přepážce.
SKIPPEDNePřepážka tento lístek přeskočila. Lze znovu vyvolat — personál jej může vrátit do WAITING.
COMPLETEDAnoPřepážka označila obsluhu jako dokončenou.
CANCELEDAnoZákazník zrušil své vlastní místo ve frontě.
NO_SHOWAnoPřepážka potvrdila, že zákazník je nepřítomen. V analytice se počítá odděleně od SKIPPED.
WAITING → CALLED → COMPLETED
↘ SKIPPED → WAITING (přepážka zákazníka znovu vyvolá)
↘ NO_SHOW (přepážka potvrdí nepřítomnost)
↘ CANCELED (zákazník zruší své odložené místo)
WAITING → CANCELED (iniciováno zákazníkem)
CALLED → CANCELED (iniciováno zákazníkem)
SKIPPED → CANCELED (iniciováno zákazníkem — odstraní z fronty znovu-vyvolatelných)

SKIPPED je odložení s možností opětovného vyvolání — zákazník byl přeskočen, ale lístek je stále aktivní. Personál může zákazníka zavolat zpět pomocí akce Vrátit do fronty ve vyhledávacím zobrazení přepážky, nebo stisknutím Vrátit zpět do 5 sekund od přeskočení. Odběr push notifikací přeskočeného zákazníka zůstává aktivní, takže push notifikace o opětovném vyvolání → zavolání jej dosáhne, i když byla stránka lístku zavřená.

NO_SHOW je potvrzená, konečná nepřítomnost. Lístek je odstraněn z fronty znovu-vyvolatelných a v analytice se počítá odděleně. Použijte, jakmile jste si jisti, že zákazník odešel.

Úplný postup pro přepážku najdete v části Řešení nedostavení.

Personál může ke kterémukoli lístku připojit lehká metadata pomocí akce Anotovat na přepážce:

  • Jméno zákazníka — na přepážce zobrazeno vždy. Na obrazovce zobrazeno pouze pokud je zapnuto nastavení fronty Volat jménem, a to jen ve zkrácené podobě („Jan N.“) — nikdy celé jméno.
  • Velikost skupiny — na přepážce zobrazena vždy a odesílána i na obrazovku (číselný údaj s nízkou citlivostí).
  • Poznámka — volný text pro interní účely. Pouze na přepážce; nikdy se neodesílá na obrazovku ani zákazníkovi.

Důvod přeskočení (zadaný do pole Důvod přeskočení (nepovinné), když je lístek přeskočen) se ukládá do pole poznámky lístku a je viditelný ve vyhledávacím zobrazení přepážky.

Anotace lze přidávat nebo upravovat kdykoli, dokud lístek není v konečném stavu.

Lístek ve stavu WAITING lze přesunout do jiné fronty na stejné pobočce pomocí tlačítka Přesunout na přepážce. To se hodí, když se zákazník připojil do nesprávné fronty nebo když se při třídění zjistí, že potřebuje jinou službu.

Pravidla přesunu:

  • Přesunout lze pouze lístky ve stavu WAITING. Lístky ve stavu CALLED musí být nejprve dokončeny, přeskočeny nebo označeny jako nedostavené.
  • Zdrojová i cílová fronta musí být na stejné pobočce.
  • Cílová fronta musí být ACTIVE.
  • Přepážka musí být přiřazena jak ke zdrojové, tak k cílové frontě.
  • Je vyžadováno aktivní předplatné.

Zařazení po přesunu — lístek si zachová původní čas připojení zákazníka plus penalizaci 5 minut. Tím se zachová již odčekaná doba a zároveň se zabrání tomu, aby zákazník předběhl ty, kdo v cílové frontě čekají déle.

Hash lístku zůstává zachován — URL stránky lístku zákazníka zůstává platná. Lístek dostane v cílové frontě nové pořadové číslo. Aktualizace v reálném čase se okamžitě odesílají do obou front.

Postup krok za krokem najdete v části Přesun lístku do jiné fronty v průvodci pro přepážku.

Hash lístku jako přihlašovací údaj

Sekce “Hash lístku jako přihlašovací údaj”

Zákazníci jsou anonymní — pro připojení do fronty není potřeba žádné přihlášení ani účet. Místo toho slouží jako důkaz vlastnictví 22znakový hash lístku. Je vložen v URL stránky lístku:

https://customer.jonot.io/{org}/{location}/{queue}/{ticket-hash}/

Znalost hashe dokazuje, že daný lístek vlastníte. API pomocí hashe autorizuje:

  • ticketByHash — vyhledání vašeho lístku a pozice
  • cancelTicket — zrušení vlastního lístku (funguje pro lístky ve stavu WAITING, CALLED a SKIPPED)

Tento návrh je záměrný: odstraňuje veškeré tření z připojování do fronty. Žádný účet, žádná aplikace, žádné heslo — stačí URL.

Hash má 128 bitů entropie (odpovídá UUID v4), takže je výpočetně nemožné uhodnout hash lístku jiného zákazníka.

Ověření při neobvyklém provozu

Sekce “Ověření při neobvyklém provozu”

Při běžném provozu zůstává připojení zcela bez tření. Jako ochranu proti zneužití může fronta, pokud v krátkém okně obdrží neobvykle vysoký příval připojení, požádat zákazníky připojující se přes web (QR kód nebo odkaz) o rychlé ověření „Jsem člověk“, než je jejich lístek vydán. Většina legitimních návštěvníků jím projde neviditelně. Objevuje se pouze při náporech — při běžném provozu se žádné ověření nezobrazuje — a nikdy se netýká kiosku na místě, jehož připojení jsou důvěryhodná díky přihlašovacímu údaji zařízení.

Když je lístek ve stavu WAITING, stránka lístku zákazníka zobrazuje odhadovanou čekací dobu. Stejný odhad se zobrazuje i na potvrzovací obrazovce kiosku po připojení, aby si zákazník od kiosku odnesl číslo, které si zapamatuje. Jde o nejlepší možný odhad, nikoli záruku.

Odhad se počítá z nedávných intervalů obsluhy v dané frontě: pokud za posledních 90 minut existuje dostatek dokončených lístků, server odvodí medián doby obsluhy a vynásobí jej pozicí zákazníka ve frontě (počet lidí před ním + 0,5). Když je zákazník na řadě jako první (nikdo před ním), odhad se uvádí jako nula. Když je nedávná historie řídká, jako záložní hodnota se použije nakonfigurovaná Očekávaná doba obsluhy fronty. Odhad nese indikátor spolehlivosti (high, pokud je odvozen z živých dat nebo pokud je zákazník na řadě, low, pokud se používá nakonfigurovaná výchozí hodnota).

Odhad se zobrazuje pouze pro lístky ve stavu WAITING v aktivní frontě (ACTIVE). Nezobrazuje se, pokud je fronta pozastavena, a zmizí, jakmile je lístek zavolán.

  1. Zákazník se připojí přes QR kód nebo kiosek → je vydán lístek ve stavu WAITING.
  2. Zákazník otevře stránku lístku → v reálném čase vidí svou pozici ve frontě a, pokud je k dispozici, odhadovanou čekací dobu.
  3. Když přepážka zavolá jeho číslo, lístek přejde do stavu CALLED → stránka zákazníka se okamžitě aktualizuje.
  4. Zákazník přijde k přepážce. Po obsluze jej přepážka označí jako COMPLETED.
  5. Pokud zákazník nereaguje, přepážka může:
    • Přeskočit → lístek přejde do stavu SKIPPED (odložení s možností opětovného vyvolání). Na obrazovce zákazníka se zobrazí, že byl přeskočen, s možností dál čekat nebo se znovu připojit.
    • Nedostavil se → lístek přejde do stavu NO_SHOW (konečný stav). V analytice se počítá odděleně od přeskočených lístků.
  6. Přeskočeného zákazníka může personál znovu vyvolat (vrátí se do stavu WAITING na začátek fronty), nebo zákazník může své místo zrušit a znovu se připojit na konec fronty.