--- title: Obsluha (kuchařka) -- výdej obědů navTitle: Výdej obědů u okénka section: Průvodce pro obsluhu sectionOrder: 50 order: 0 summary: Návod pro obsluhu výdeje (roli kitchen_staff) na kuchyňském terminálu -- přihlášení PINem či čipem, výdej čipem včetně hlasového hlášení, manuální výdej, storno a ukončení směny. --- # Obsluha (kuchařka) -- výdej obědů Obsluha výdeje (kuchařka, paní jídelnová) má v edumeal vlastní uživatelskou roli **kitchen_staff** a vlastní UI surface: kuchyňský terminál na adrese `/scan/*`. Tato role je oddělená od role operátora -- obsluha nepřistupuje k jídelnímu lístku, cenám, recepturám ani správě uživatelů. Pracuje výhradně s výdejním rozhraním u okénka. > **Klíčový rozdíl:** obsluha nemá uživatelské jméno + heslo. Nepřihlašuje se do aplikace e-mailem -- místo toho zadá **PIN** nebo přiloží **služební čip** přímo na kuchyňském terminálu, který předem nastavil operátor. ## Co obsluha vidí a dělá | Co dělá | UI | Frekvence | | --- | --- | --- | | Přihlásit se na začátku směny a vybrat, co vydává | `/scan/start` -- PIN nebo služební čip | 1x denně (8h platnost) | | Skenovat čipy strávníků | `/scan` -- scanning mode | Každý oběd | | Manuální výdej (zapomenutý čip) | Tlačítko v `/scan` + dialog | Výjimečně | | Stornovat dnešní výdej | Tlačítko v `/scan` + dialog | Výjimečně | | Ukončit směnu | Tlačítko v `/scan` | Na konci výdejní špičky | ## Předpoklady (operátor zajistí jednorázově) Než obsluha přijde k terminálu poprvé, musí operátor jednorázově nachystat: 1. **Spárované zařízení** na konkrétním kuchyňském PC -- operátor v [RFID průvodci](/docs/operator/rfid) projde cestu `/operator/scan-setup` a vybere výdejní místo. Po úspěšném spárování PC pamatuje device token v localStorage prohlížeče. 1. **Uživatelský účet kitchen_staff** pro obsluhu -- vytvoří se z `/operator/kitchen-staff` → _+ Přidat uživatele obsluhy_. 1. **PIN** (4--8 číslic) a/nebo **služební čip** pro tohoto uživatele. Stačí jedno, oboje funguje jako fallback druhého. Bez těchto tří kroků se obsluha k terminálu nepřihlásí. Detaily najde operátor v sekci [RFID výdej obědů](/docs/operator/rfid). ## Zahájení směny Kuchyňské PC ráno otevře `https://edumeal.cz/` (nebo lokální URL kuchyně). Pokud je PC spárované a obsluha není ještě přihlášená, edumeal automaticky přesměruje na obrazovku **Přihlášení obsluhy** (`/scan/start`). ### Volba jídel, která budete vydávat Před přihlášením obsluha zaškrtne **všechna jídla, která u okénka vydává** -- klidně několik. Vybírá se z dlaždic, takže to jde i prstem na tabletu nebo telefonu: - **Snídaně** - **Přesnídávka** -- obě varianty - **Polévka** -- jde vybrat jen spolu s obědem, protože se vydává s hlavním jídlem - **Oběd** -- zahrnuje všechny varianty 1--5; systém najde tu, kterou konkrétní strávník objednal - **Svačina** (odpolední) -- obě varianty - **Večeře** -- obě varianty Typické směny: „Polévka + Oběd" u výdejního okénka, „Přesnídávka + Oběd" v malé kuchyni, která obojí vydává ve stejném okně, nebo „Večeře + Svačina" na internátu. **Jedno přiložení čipu vydá všechna objednaná jídla ze zaškrtnutých skupin.** Strávník, který má na dnešek přesnídávku i oběd, pípne jednou a panel ukáže obojí (viz [Výdej čipem](#výdej-čipem-každodenní-happy-path)). > **Pozor:** Výběr platí pro celou směnu. Co jste nezaškrtli, terminál odmítne s hláškou „Žádná objednávka" -- strávník to má objednané, jen ne v téhle směně. Změna uprostřed směny = ukončit směnu a zahájit novou. > **Polévka nemá vlastní směnu.** Vydává se vždy s hlavním jídlem, takže „Polévka" bez „Obědu" nejde zaškrtnout (výběr si to sám dorovná) a terminál by takovou směnu odmítl. Se zaškrtnutou polévkou se u pípnutí zaznamená výdej polévky i oběda; bez ní jen oběda. ### Přihlášení Obojí je na jedné obrazovce, nic se nepřepíná. Nejdřív zaškrtněte, co budete vydávat, pak se přihlaste kteroukoli cestou. **Služebním čipem** -- přiložte ho ke čtečce. UID se přečte samo, směna se rovnou otevře, žádné tlačítko netřeba. Funguje i když máte kurzor v políčku pro PIN. **PINem** -- zadejte 4--8 číslic klávesnicí, nebo velkými tlačítky na obrazovce (`⌫` maže poslední číslici, _Vymazat_ celý PIN); na dotykovém terminálu klávesnici nepotřebujete. Pak klikněte **Zahájit směnu**. Po přihlášení UI přejde na `/scan` s bannerem „Vydáváš: Polévka + Oběd" -- vypsaná jsou všechna zaškrtnutá jídla. > **Když nevyberete žádné jídlo**, terminál přihlášení odmítne s hláškou „Nejdřív vyber, co budeš vydávat." -- platí pro čip i PIN. > **Tip:** Služební čip je _jiný_ čip než ten, který nosí strávník -- ideálně vizuálně odlišený barvou náramku. Stejný fyzický čip nelze přiřadit zároveň obsluze a strávníkovi. ## Výdej čipem (každodenní happy path) Po přihlášení obrazovka ukazuje **scanning mode**: velký banner se slotem nahoře, čekání na sken uprostřed, kontextová tlačítka v pravém rohu (Manuální výdej, Storno, Ukončit směnu). 1. Strávník přiloží svůj čip ke čtečce. 1. Obrazovka se zaplaví zelenou, zazní krátký vyšší tón (880 Hz), ve velkém panelu se zobrazí: - vlevo **číslo varianty** na kontrastním bílém podkladu a nad ním druh jídla („Oběd 1") -- největší prvek celé obrazovky, čitelný na pár kroků od okénka, - nadpis **„Vydáno"**, - pod ním **velikost porce** -- věková kategorie strávníka a její koeficient („11--14 let · 0,80"), - řádek pod ním: _Jméno Příjmení · Oběd 1 -- Svíčková na smetaně s houskovým knedlíkem_. 1. Panel zůstane viditelný 30 sekund nebo do dalšího pípnutí -- kdy přijde další sken, aktuální feedback se okamžitě přepíše novým. 1. Kuchařka vydá konkrétní jídlo podle obrazovky. **Když směna vydává víc jídel** a strávník má na dnešek objednané třeba přesnídávku i oběd, jedno pípnutí vydá obojí: nadpis řekne **„Vydáno 2 jídla"** a pod ním je seznam, u každého jídla jeho číslo varianty a název. Velké číslo uprostřed se v tom případě neukazuje -- každé jídlo má svoje. Druhé pípnutí už hlásí „Již vydáno". Jídlo, které se vydat nedalo, panel vypíše i tak, s důvodem v závorce -- „Polévka (objednávka zrušena)" nebo „(již vydáno)". Zbytek směny se přitom vydá normálně. > **Číslo u porce** je koeficient věkové kategorie, jak ho má provoz nastavený -- stejné číslo, se kterým počítá kuchyně na výdejce a v žádance (0,80 = osm desetin plné porce). U druhu jídla, kde operátor věkový koeficient vypnul, je vždy 1,00. Dospělí (pedagogové, cizí strávníci) mají „Dospělí · 1,00". > **Číslo varianty** je pořadí jídla v rámci slotu: u obědů 1--5, u přesnídávky, odpolední svačiny a večeře 1 nebo 2. Slot, který má jen jednu variantu (snídaně), žádné číslo ani druh jídla nad ním neukazuje -- panel je pak stejný jako dřív. ### Hlasové hlášení Terminál umí výsledek i **přečíst nahlas** -- druh jídla („Oběd 1"), název jídla, nebo obojí; neúspěšný sken hlásí důvod. Zapíná to operátor v [Nastavení provozu](/docs/operator/settings#hlasové-hlášení-výdeje) pro celý provoz, výchozí stav je ticho. Když terminál mlčí, i když má mluvit, jde skoro vždy o jednu ze tří věcí: počítač nemá zvukový výstup nebo je ztišený, nemá nainstalovaný český hlas (na Windows jazykový balíček pro češtinu -- zajistí IT), nebo se stránka právě obnovila a nikdo v okně ještě neklikl. Poslední případ platí i pro pípání: klikněte kamkoli do stránky a zvuk se rozjede. ### Co znamenají barvy a hlášky | Barva | Titulek | Význam | Co dělat | | --- | --- | --- | --- | | Zelená | Vydáno | Pickup úspěšně zaznamenán | Vydat variantu podle velkého čísla, jídlo je pojmenované v řádku pod nadpisem | | Žlutá | Již vydáno | Strávník už dnes ten samý slot vyzvedl | Nevydávat. Pokud spor, řešit přes audit s operátorem. | | Červená | Žádná objednávka | Strávník nemá na dnešek objednané nic z jídel téhle směny | Zkontrolujte, co má směna zaškrtnuté. Pokud chce vyzvednout jiné jídlo, ukončete směnu a zahajte ji se správným výběrem, nebo použijte Manuální výdej. | | Červená | Neznámý čip | Čip není u nikoho přiřazen | Operátor přiřadí čip ke strávníkovi (`/operator/chips`). Mezitím použijte manuální výdej. | | Červená | Objednávka zrušena | Objednávka byla mezitím zrušena (rodičem nebo systémem) | Nevydávat. Případně manuální výdej s důvodem, řešit s operátorem. | | Červená | Cizí čip | Čip patří jiné kuchyni / tenantu | V praxi by nastat nemělo. Pokud ano, nahlásit operátorovi. | ## Manuální výdej (zapomenutý čip) Pokud strávník zapomněl čip, ztratil ho nebo je nový a ještě nedostal, obsluha může vydat ručně: 1. Klikněte tlačítko **Manuální výdej** v pravém horním rohu. 1. Otevře se dialog se seznamem strávníků. **Nabízí jen ty, kterým lze vydat** -- tedy kdo má na dnešek objednávku ve vašich druzích jídla a ještě si ji nevyzvedl. Na jednom výdejním místě to bývá pár desítek jmen ráno a pár odpoledne, takže obvykle stačí odrolovat a ťuknout. 1. Kliknutím vyberte strávníka. Kdo je vybraný, stojí vedle tlačítka _Vydat_. 1. Ťukněte na důvod manuálního výdeje -- jsou to tlačítka, ne rozbalovací seznam: - _Zapomněl/a čip_ (předvybrané, nejčastější) - _Ztracený/poškozený čip_ - _Nový strávník -- čip ještě nepřišel_ - _Jiné (volný text)_ -- odkryje políčko na vlastní popis 1. Klikněte **Vydat**. > **Nenašli jste ho v seznamu?** Pak dnes nemá nevyzvednutou objednávku na jídlo, které vydáváte -- manuální výdej by stejně skončil hláškou „Žádná objednávka". > > **Přepínač nad seznamem** je pro terminál, u kterého se vydává za víc výdejních míst. Výchozí **Toto výdejní místo** nabídne jen vaše okénko, **Všude** celý provoz. Volba se nepamatuje, po dalším otevření je zase na vašem okénku. > > **Hledání se spouští tlačítkem _Hledat_** (nebo Enterem), ne psaním. Hledá se na serveru, takže najde i toho, kdo se do seznamu nevešel. > **PIN obsluhy se u manuálního výdeje nezadává.** Dřív se vyžadoval; u okénka to znamenalo psát PIN pokaždé, když někdo zapomněl čip. Výdej se zapisuje pod přihlášenou obsluhu a s důvodem, takže je dohledatelný i bez něj. Po úspěchu se dialog zavře a velký feedback panel na `/scan` ukáže totéž jako u čipového výdeje -- zelená, číslo varianty, "Vydáno", jméno strávníka, název jídla. Pokud strávník už dnes oběd dostal, panel se zbarví **žlutě** s hláškou „Již vydáno" -- systém zablokuje dvojí výdej i přes manuální cestu. > **Pozor:** Manuální výdej vyžaduje, aby strávník měl _objednávku pro vybraný slot na dnešek_. Manuální výdej neumí udělat objednávku -- jen zaznamenat výdej existující objednávky bez čipu. Pokud strávník nemá objednáno, manuální výdej selže s hláškou "Strávník dnes nemá objednávku". ## Stornovat dnešní výdej Když se oběd vydá omylem, obsluha ho může stornovat. Dialog se jmenuje **Stornovat dnešní výdej**. 1. Klikněte tlačítko **Storno**. 1. UI zobrazí dnešní výdeje z tohoto okénka. Zaškrtněte řádky, které chcete stornovat. 1. Ťukněte na důvod -- opět tlačítka: - _Vydáno cizímu strávníkovi_ - _Vydáno do špatného slotu_ - _Jídlo poškozené, vydáno znovu_ - _Jiné (volný text)_ 1. Ověřte se: **Přiložit čip obsluhy** (tlačítko na 20 vteřin zapne čtečku), nebo napište PIN na klávesnici v dialogu. Stačí jednou za celý výběr. > **Jedno přiložení čipu vydá víc jídel, tak se i stornují společně.** Když směna vydává polévku i oběd, zapíše se řádek za každé jídlo -- zaškrtnutí jednoho vezme i to druhé ze stejného přiložení. Odškrtnout jednotlivě jde dál. Dokud v seznamu něco zbývá, dialog zůstane otevřený, takže můžete stornovat dál. Když nezbyde nic, sám se zavře a na hlavní obrazovce se krátce ukáže, kolik storn proběhlo. Stornovaný výdej v záznamech zůstává -- není smazán, jen označen časem storna a důvodem. **Po stornu lze tentýž čip znovu „pípnout" a jídlo vydat standardně** -- storno uvolní objednávku, takže druhý pokus už nehlásí „Již vydáno". > **Čtečka při otevřeném dialogu neposlouchá**, dokud nestisknete _Přiložit čip obsluhy_. Je to schválně: kdyby poslouchala pořád, ťuknutí strávníka ve frontě by se spotřebovalo jako neúspěšné ověření a on by o svůj výdej přišel. ## Co když... ### ...se obrazovka omylem reloadne (F5, restart prohlížeče)? Vaše směna přežije reload. Edumeal ukládá staff session token do localStorage prohlížeče s 8hodinovou platností, takže po reloadu obrazovky obsluha pokračuje tam, kde skončila -- žádné znovupřihlašování PINem. Reload sice neukáže poslední vydaný oběd v panelu (paměťový state se vyprázdní), ale samotná směna pokračuje. Pokud reload trefí přesně do okamžiku přechodu mezi dvěma skeny, může se objevit prázdná scanning mode obrazovka -- to je v pořádku, další sken funguje normálně. ### ...zadám špatný PIN? Terminál odmítne přihlášení a **hned nad tlačítkem, které jste stiskla**, se objeví červená hláška -- „PIN nebo služební čip nesouhlasí" u zahájení směny, „Nesprávný PIN" u storna. Obrazovka se k ní sama posune, takže na tabletu ani telefonu není potřeba nic dorolovávat. Pole PINu se přitom vyprázdní, takže se dá hned psát znovu; opravovat rozepsaný PIN není třeba. Odmítnutý **čip** pole PINu nemaže -- rozepsaný PIN vám zůstane. U manuálního výdeje tahle hláška nastat nemůže: PIN se tam nezadává. Po **pěti** neúspěšných pokusech během 15 minut se PIN dočasně zamkne a terminál odpoví „Příliš mnoho neúspěšných pokusů o PIN". To je ochrana proti hádání čtyřmístného kódu. Zámek platí jen pro PIN, takže kdo má služební čip, přiloží ho a jde vydávat hned; jinak pomůže počkat, do 15 minut se zámek sám uvolní. Kdo si PIN nepamatuje, ať ho operátor rotuje v `/operator/kitchen-staff`; rotace zámek nezruší, ale za čtvrt hodiny už platí nový PIN. ### ...se přihlásil někdo jiný omylem mým PINem? PIN je vázán na konkrétního _uživatele kitchen_staff_, ne na konkrétní směnu. Pokud má kolega stejný PIN (nemělo by se stávat -- operátor by měl vystavit každému vlastní), systém by ho přiřadil tomu, komu PIN aktuálně patří. Pokud si nejste jistá, ukončete směnu a operátor PIN _rotuje_ (vystaví nový, starý zneplatní) v sekci `/operator/kitchen-staff`. ### ...musíme přepnout, co vydáváme (např. dovydávat svačinu po obědě)? 1. Klikněte **Ukončit směnu** v pravém horním rohu. 1. Potvrďte v dialogu. 1. UI vás vrátí na `/scan/start` -- zaškrtněte, co budete vydávat teď, a přihlaste se znovu. (Nebo si příště zaškrtněte obojí najednou -- jedna směna zvládne oběd i svačinu.) ### ...vypadne internet? Edumeal **nemá offline režim** -- výdej vyžaduje spojení se serverem. Pokud síť vypadne, sken selže s hláškou „Chyba sítě" a výdej je potřeba po obnovení připojení zopakovat. Žádné skeny se lokálně nefrontí ani se nic nesynchronizuje pozadu. Dvě věci ale výpadek přežijí: - **Přihlášená směna zůstává.** Session obsluhy se ukládá do localStorage prohlížeče, takže reload stránky nebo restart aplikace směnu neshodí -- není nutné se znovu přihlašovat PINem. - **Opakování výdeje nezdvojí platbu.** Každý výdej nese idempotenční klíč, takže když sken po timeoutu zopakujete, systém nevytvoří druhý výdej ani nestrhne kredit dvakrát. ## Ukončení směny 1. Na konci výdejní špičky klikněte **Ukončit směnu** (pravý horní roh). 1. Potvrďte. UI vás vrátí na `/scan/start`. 1. Pokud žádná další obsluha nepřichází, můžete prohlížeč zavřít -- terminál zůstane spárovaný a další směna se otevře PINem/čipem dalšího pracovníka. > **Bezpečnostní poznámka:** Edumeal sám sebe neodhlašuje na pasivním terminálu. Pokud necháte otevřenou scanning mode obrazovku bez dohledu, kdokoli fyzicky u kuchyňského PC může (až do vypršení 8h session) skenovat čipy. Při delším přerušení vždy "Ukončit směnu" nebo PC zamknout na úrovni OS. ## Co obsluha nedělá Tyto akce dělá operátor, ne obsluha: - Přiřazení / zneplatnění čipu strávníka (`/operator/chips`) - Vystavení / rotace PINu obsluhy (`/operator/kitchen-staff`) - Spárování nebo odpárování terminálu (`/operator/scan-setup`) - Změna jídelního lístku, cen, receptů - Řešení sporů přes audit log Pokud nastane situace, kterou obsluha sama vyřešit nemůže, kontaktuje operátora -- buď osobně, nebo přes výdejní průchod si dělá poznámku, kterou později předá. ## Časté otázky ### Můžu si změnit PIN sama? Ne. PIN vystavuje a rotuje výhradně operátor. Pokud máte podezření, že váš PIN někdo zná, požádejte operátora o rotaci -- nový PIN dostanete na rukou. ### Co když na začátku směny PC nepřesměruje na "Přihlášení obsluhy"? Znamená to, že PC _není spárovaný_. Kontaktujte operátora -- musí projít pairing přes `/operator/scan-setup`. Po spárování stačí reload prohlížeče a edumeal vás přesměruje správně. ### Co když na obrazovce vidím "Terminál není spárovaný nebo bylo jeho oprávnění odebráno"? Operátor zařízení v admin UI revoke-nul, nebo došlo k resetu databáze. Kontaktujte operátora -- musí PC znovu spárovat. ### Můžu zkusit přiložit cizí čip, který někdo zapomněl? Klidně. Systém ho odmítne jako "Neznámý čip", pokud nebyl nikomu přiřazen, nebo jako "Cizí čip", pokud patří jiné kuchyni. Žádné riziko -- na fyzické úrovni žádná data z čipu neukládáme, jen čteme UID. ### Vidím v některých případech anglický text místo českého. Co s tím? Hlaste operátorovi (přepošle do edumeal supportu). Backend by měl vracet překladatelné kódy chyb, ale ojediněle se může objevit nepřeložený technický stav. Edumeal ho doplní v další verzi.