# História jedálneho lístka — september 2024 až január 2025

**Zostavené:** 27. 9. 2026 · **Pre:** tím Monády
**Oblasti:** kuchyňa
**Otázka:** čo sa podávalo v jednotlivých týždňoch podľa histórie verzií dokumentu *Jedálny lístok – Monáda bistro* a čo treba overiť pred importom do databázy receptov.

---

## TL;DR

- Z 128 uložených verzií Google Docu *Jedálny lístok* je obnovených **17 týždenných menu**: 16 týždňov od 2. 9. 2024 do 31. 1. 2025 a starý týždeň 8.–12. 4. 2024.
- **544 riadkov podaných jedál, 255 rôznych jedál** — každé s ID, počtom dní a týždňov, porciami, cenami a alergénmi.
- **Alergény 9–11 treba overiť v kuchyni.** Vlastný zoznam alergénov v menu sa od kódu 9 líši od EÚ číslovania a kód 11 („med") na väčšine jedál pravdepodobne znamená sezam.
- Chýbajú týždne **16. 12. 2024 – 24. 1. 2025** a všetko pred 31. 8. 2024 okrem apríla 2024 — Google ich v histórii verzií nevrátil.
- **Databáza jedál je prepojená na receptár v ops.** 255 jedál sa zlučuje do **164 rodín** (to isté jedlo s inou prílohou či bielkovinou). **87 rodín má recept** v `monada.recipes`, **18 má len kandidáta na overenie** a **59 rodín (76 jedál) do receptára nikdy neprešlo** — to je backlog nižšie.
- **Predaj je doplnený.** Objednávky z Airtable (v DB `monada.orders`) sú spárované s menu: pre 82 dní so známym menu vieme, **koľko porcií ktorého jedla sa predalo** — 5 266 hlavných jedál, 4 968 polievok, 382 sladkostí, v priemere 64 hlavných jedál denne. Combo menu (2 jedlá v jednej porcii, 204 ks) je vedené zvlášť a do jedál sa nerátá. Pre všetkých 246 dní od januára 2024 do januára 2025 je aspoň súčet po číslach menu.
- Tabuľka: [`historia-menu-2024-2025.xlsx`](/internal/historia-menu-2024-2025.xlsx) · databáza: [`historia-menu-2024-2025.json`](/internal/historia-menu-2024-2025.json) · jedlá ako CSV: [`historia-menu-2024-2025-jedla.csv`](/internal/historia-menu-2024-2025-jedla.csv) · predaj: [`…-predaj.csv`](/internal/historia-menu-2024-2025-predaj.csv) (jedlo × deň), [`…-predaj-dni.csv`](/internal/historia-menu-2024-2025-predaj-dni.csv) (deň)

---

## Zdroj

Google Doc *Jedálny lístok – Monáda bistro* (vytvorený 14. 1. 2022). Všetky verzie, ktoré vracia Google Drive, boli 27. 9. 2026 zálohované do priečinka *Jedálny lístok – version backup* na Drive (128 textových súborov). Každý podaný riadok v tabuľke je skontrolovaný proti zdrojovému súboru — názov jedla, porcia aj kódy alergénov.

Časy uloženia sú v UTC+3 (časová zóna zálohovacieho skriptu), teda o 1–2 hodiny pred slovenským časom.

## Čo je v tabuľke

| Hárok | Obsah |
|---|---|
| Overview | súhrn, prekryvy medzi verziami, čo overiť |
| Timeline | podané menu — jeden riadok na jedlo × menu × deň; hlavný zdroj pre databázu |
| Dishes | katalóg jedál s ID (D001…), počtom dní a týždňov, prvým a posledným podaním, porciami, alergénmi a cenami |
| Weeks | všetky týždne vrátane chýbajúcich: počet verzií, kedy bolo menu hotové, úpravy počas týždňa |
| Changes | 181 skutočných úprav v rámci týždňa: výmeny jedál, premenovania, alergény, porcie, ceny, zatvorené dni |
| Planned, not served | 15 jedál, ktoré boli v návrhu, ale nie vo finálnom menu daného týždňa |
| Versions | všetkých 128 súborov zálohy — ku ktorému týždňu patria a či obsahujú niečo jedinečné |
| Allergen codes | oba systémy číslovania alergénov vedľa seba s počtom použití |

Názvy hárkov a stĺpcov sú po anglicky, dáta (jedlá, dni, označenia) po slovensky tak, ako boli v menu.

## Databáza jedál a väzba na receptár

Z tabuľky je vytiahnutá štruktúrovaná databáza [`historia-menu-2024-2025.json`](/internal/historia-menu-2024-2025.json) (schéma `monada.historia-menu/2` — verzia 2 pridáva predaj, pôvodné kľúče sa nemenili), prepojená na receptár v ops cez `monada.recipes.id`. Je to východisko pre ďalšiu prácu: dopisovanie chýbajúcich receptov, variantov a import histórie do `daily_menu`. [`historia-menu-2024-2025-jedla.csv`](/internal/historia-menu-2024-2025-jedla.csv) je to isté po jedlách, na filtrovanie v tabuľkovom editore.

### Štruktúra

Tri úrovne: **rodina** (jedlo ako koncept, to, čo má mať jeden recept) → **jedlo** (konkrétny zápis z menu, `D001`…`D255`, ID zhodné s hárkom *Dishes*) → **podanie** (jedlo × menu × deň).

| Kľúč | Záznamy | Obsah |
|---|---|---|
| `rodiny` | 164 | `id` (slug), `nazov`, `chod`, `jedla[]`, `dni`, `prve` / `posledne`, `recept` {id, nazov, zhoda}, `stav` |
| `jedla` | 255 | `id`, `chod`, `nazov`, `ine_zapisy[]`, `rodina`, `dni`, `tyzdne`, `prve_podanie` / `posledne_podanie`, `porcie[]`, `ceny_eur[]`, `bezlepkove`, `vegan`, `alergeny[]` (názvy), `alergeny_kody`, `podobne[]`, `v_daily_menu_2025_od`, `recept` {id, nazov, zhoda, poznamka} |
| `recepty` | 99 | snapshot prepojených receptov z `monada.recipes`: `id`, `nazov`, `typ_jedla`, `status`, `ma_link_recept`, `suroviny` (počet), `daily_menu_riadky`, `jedla[]` |
| `podania` | 544 | `tyzden`, `datum`, `den`, `menu`, `jedlo_id`, `chod`, `nazov_v_menu`, `porcia`, `cena_eur`, `oznacenia`, `bezlepkove`, `vegan`, `alergeny_kody[]`, `alergeny[]`, `legenda` (`monada` / `eu`) |
| `tyzdne` | 23 | týždne vrátane chýbajúcich, počet verzií a podaní |
| `ciselniky` | — | hodnoty `chod`, `zhoda`, `stav`, obe legendy alergénov, `predaj_varianty`, `predaj_parovanie` |
| `predaj` | 454 | predané porcie po jedlách a dňoch — pozri [Predaj](#predaj--koľko-porcií-sa-predalo) |
| `predaj_dni` | 246 | súhrn každého dňa s objednávkami: počet objednávok, porcie podľa chodu a podľa čísla menu, počet combo, tržba |
| `predaj_mimo_menu` | 13 | jedlá predávané mimo zrekonštruovaného menu (langoš, miso polievka, burger …) |
| `predaj_nezaradene` | 14 | objednávky na slot, ktorý v Google Docu v ten deň chýba |

Jedlá, rodiny a týždne majú navyše objekt `predaj` (porcie, dni s predajom, priemer na deň); CSV po jedlách má stĺpce `predane_porcie`, `dni_s_predajom`, `priemer_porcii_na_den`.

**Zhoda s receptom** (`jedla[].recept.zhoda`):

- `presna` — to isté jedlo ako recept v receptári (120 jedál).
- `variant` — rovnaký základ, iná príloha, bielkovina alebo plnka (34 jedál). Recept existuje, ale variant v ňom zapísaný nie je — napr. *Kimchi jjigae* s jelením namiesto hovädzieho, dhal z adzuki či čiernej fazule ku *Zaúdenému fazuľovému dhalu*.
- `overit` — len kandidát podľa názvu a popisu receptu (25 jedál). Takéto jedlo **nemá rodinu podľa kandidáta** — ostáva vo vlastnej, kým kuchyňa zhodu nepotvrdí.
- `null` — recept v receptári nie je (76 jedál).

**Stav rodiny:** `v_receptari` (87) · `overit` (18) · `chyba_recept` (59).

Párovanie je ručne prejdené proti názvom aj popisom receptov v DB. Názov v menu opisuje celý tanier (hlavná zložka + príloha), recept v ops býva pomenovaný kratšie — *Tridošický šošovicový dhal, čistá indická ryža* → *Indický šošovicový dhal*. Niektoré jedlá sú poskladané z dvoch receptov (napr. adzuki nákyp s kôprovou omáčkou zdieľa omáčku s *Kôprovou omáčkou s tofu nádivkou*); databáza drží len hlavnú väzbu a zdieľanú zložku píše do `poznamka`.

`v_daily_menu_2025_od` je dátum, kedy sa rovnaký názov objavil v `monada.daily_menu` (tá začína 27. 1. 2025). 23 jedál pokračovalo do roku 2025, no tamojšie riadky z prvých mesiacov nemajú `recipe_id` — väzbu na recept dopĺňa až táto databáza.

### Backlog — rodiny bez receptu

Zoradené podľa počtu dní v menu. Rodiny podané aspoň 2 dni:

| Rodina | Chod | Dni | Jedlá |
|---|---|---|---|
| Dan Dan ryžové rezance | hlavné | 7 | D028, D074, D119, D219, D248 |
| Ryžové rezance so slivkovo-zemiakovou omáčkou, pučené tofu, čili olej | hlavné | 7 | D075 |
| Bánh mi s duseným jelením mäsom, nakladaná zelenina, sardinkové terrine | hlavné | 6 | D161 |
| Batátové brownies | dezert | 5 | D019, D104 |
| Dvojzrnkové gnocchi na hurmikaki-mrkvovej omáčke | hlavné | 4 | D234 |
| Gnocchi s tekvicovou omáčkou | hlavné | 4 | D103 |
| Minestrone | polievka | 4 | D086, D128, D155, D232 |
| Dvojzrnkový tvarohový koláč | dezert | 3 | D030 |
| Dvojzrnkové gnocchi s kešu-kari omáčkou | hlavné | 3 | D066 |
| Jablkový páj | dezert | 3 | D062 |
| Ragú alla Genovese s jelením mäsom | hlavné | 3 | D046, D217 |
| Sečuánske dusené tofu s fazuľovou omáčkou | hlavné | 3 | D135 |
| Šošovicové bobotie | hlavné | 3 | D032 |
| Adzuki polievka s kelom | polievka | 2 | D112, D181 |
| Fasolada — grécka fazuľová polievka | polievka | 2 | D024, D184 |
| Hubové stir-fry | hlavné | 2 | D071, D100 |
| Japonské jasai kari, sushi ryža | hlavné | 2 | D069 |
| Kórejské hubové soté, tteokbokki | hlavné | 2 | D085 |
| Matcha cheesecake | dezert | 2 | D220 |
| Panzanella — toskánsky chlebový šalát | hlavné | 2 | D008 |
| Slovenské rizoto s údeným tempehom | hlavné | 2 | D126, D230 |
| Tacos s jelením mäsom, pico de gallo, guacamole | hlavné | 2 | D052 |
| Tekvicové krémové rizoto | hlavné | 2 | D099, D239 |
| Tekvicové soté s červenou šošovicou, pučené zemiaky | hlavné | 2 | D139 |
| Tom Yum | polievka | 2 | D009, D191 |
| Vyprážané hlivové kúsky, kewpie majonéza, nakladaná zelenina | hlavné | 2 | D170 |
| Zapekané pšeno s edamame | hlavné | 2 | D051, D097 |
| Zeleninová polievka so žltou šošovicou | polievka | 2 | D037, D096 |

Ďalších 31 rodín bolo v menu len 1 deň — sú v databáze so `stav: "chyba_recept"`.

### Na overenie v kuchyni — len kandidát

| Jedlo z menu | Kandidát v receptári | Dni | Čím sa líši |
|---|---|---|---|
| Mrkvovo-tekvicová torta / koláč | Mrkvová torta so škoricou | 7 | tekvica v ceste |
| Ajurvédska kukuričná polievka (s kokosovým mliekom) | Kukuričná s feniklom | 5 | kokosové mlieko; recept má pikantnú nôtu a koriander |
| Japonský teriyaki bowl so soba haluškami | Teriyaki bowl s vajíčkom | 4 | soba namiesto sushi ryže |
| Burrito s trhaným jelením mäsom a fazuľou | Zaudené Vegan Burrito | 3 | jelenie mäso namiesto tempehu |
| Zapekaná pohánka s hlivou a sušenými paradajkami | Pohánkový nákyp s paradajkovou | 3 | hliva, sušené paradajky |
| Cícerové kari so zeleninou | Tekvicové kari s cícerom | 2 | bez tekvice v názve |
| Hlivová polievka na spôsob držkovej | Zeleninová s hlivou a pohánkou | 2 | úprava „ako držková“ |
| Batatovo-mrkvový krém | Tekvicovo-batatový krém | 1 | mrkva namiesto tekvice |
| Cannelloni so špenátom a ricottou | Cannelloni bolognese | 1 | iná plnka |
| Hlivový guláš, kváskový chlieb | Hlivový perkelt | 1 | guláš vs. perkelt |
| Luxusné mandľové kari s pečeným baklažánom | Mandľové ragú s baklažánom | 1 | v menu ako kari |
| Mrkvovo-kokosové kari, divoká ryža | Mrkvové kari | 1 | príloha, kokos |
| Plnené bataty s BBQ hlivou | Plnené batáty so šošovicou | 1 | iná plnka |
| Pšenový pilaf z červenej repy, batatu, karfiolu, cíceru | Pšenový pilaf s tekvicou | 1 | iná zelenina |
| Šošovicové ragú z čiernej šošovice | Soté s čiernou šošovicou | 1 | ragú, nie soté |
| Yangový strukovinový prívarok, dusené tofu | Šošovicový prívarok s tempehom | 1 | tofu namiesto tempehu |
| Zapekaný baklažán s cícerom | Marocký plnený baklažán | 1 | recept je s hovädzím ragú |
| Zeleninové Kung Pao | Kurácie KungPao s jazmínovou ryžou | 1 | zeleninová verzia |

Keď kuchyňa zhodu potvrdí, v `jedla[]` sa `zhoda` zmení na `presna` alebo `variant` a `rodina` sa prepíše na rodinu receptu. Ak ju zamietne, `recept` sa vynuluje a rodina prejde do backlogu.

### Ako s databázou pracovať ďalej

- **Nový recept z backlogu** — napísať podľa šablóny `!vzor` s `ops_nazov` rovným názvu rodiny, v receptári ho založiť a do všetkých jedál rodiny doplniť `recept.id`.
- **Variant** — doplniť ho do existujúceho receptu (zložka, príloha, bielkovina), nie zakladať nový recept.
- **Import do `daily_menu`** — `podania` sa dajú nahrať ako história pred 27. 1. 2025: `datum`, `menu`, `nazov_v_menu` → `dish_name`, `cena_eur` → `cena`, `recept.id` z jedla → `recipe_id`. Alergény ukladať ako názvy (`alergeny`), nie kódy.
- **Snapshot receptára je z 27. 9. 2026.** ID receptov sú stabilné, názvy a stavy sa v ops môžu zmeniť — pri použití brať ako pravdu DB.

## Predaj — koľko porcií sa predalo

**Zdroj:** objednávky z Airtable, migrované do DB ops (`monada.orders` + `monada.order_items`), deň = dátum doručenia. Zostavené 27. 9. 2026. V súboroch sú len súčty — žiadne údaje o zákazníkoch.

### Ako sa predaj páruje s jedlami

Objednávka v roku 2024 neobsahuje názov jedla, len položku typu *Menu 2 (8,-)*. Jedlo sa preto dopĺňa podľa **dátumu a čísla menu** z rekonštruovaného menu toho dňa:

| Položka v objednávke | Rátané ako |
|---|---|
| *Menu N (x,-)*, firemné/zľavnené menu | 1 hlavné jedlo menu N + 1 polievka |
| *Menu N bez polievky* | 1 hlavné jedlo |
| *Menu N - Combo* | plné menu s dvoma jedlami spojenými do jednej porcie — **nerátané k žiadnemu jedlu ani polievke**, len počet za deň (`predaj_dni.combo`, spolu 204 ks); štatisticky nevýznamné |
| *Polievka- old*, *Menu 1 - Pol.* (2 €) | 1 polievka dňa |
| *Menu 3 - Koláčik* (4 €), *Koláčik - Mini* | 1 sladkosť dňa — napriek názvu to nie je Menu 3 |
| *Menu 3 - Burger*, *Langoš*, *Rokudon* … | samostatné jedlo mimo menu |
| džúsy, múka, pivo, cateringy | nerátané ako porcie (len v tržbe dňa) |

Od 27. 1. 2025 objednávky nesú aj názov jedla z `daily_menu` — ten má prednosť pred Google Docom. Práve tak sa ukázalo, že 28. 1. 2025 sa ako Menu 1 predávalo *Batatovo-arašidové kari*, nie rizoto z Google Docu. Stĺpec `parovanie` hovorí, odkiaľ väzba je (`slot`, `nazov`, `k_menu` …).

Čísla menu sa v Airtable nemenili, keď sa počas týždňa menilo jedlo. Ak kuchyňa jedlo vymenila a Google Doc to nezachytil, porcie idú na pôvodné jedlo — týka sa to hlavne dní, kde hárok *Changes* ukazuje výmenu.

### Čo z toho vyplýva

- **Priemerný deň: 64 hlavných jedál, 61 polievok, 39 objednávok.** Najsilnejšia je streda (69 hlavných), najslabší pondelok (56).
- **Polievka ide s takmer každým menu** — 91 % hlavných jedál bolo predaných s polievkou, len 461 bez nej. Preto majú polievky najvyššie čísla na deň.
- **Sladkosť pribalí asi každá siedma objednávka** — v 53 dňoch, keď bola v menu, sa jej predalo v priemere 6 kusov denne.

Hlavné jedlá s najvyšším priemerom (aspoň 2 dni v menu):

| Jedlo | ID | Dni | Porcie | Na deň |
|---|---|---|---|---|
| Šošovicové pečené fašírky, klzký zemiakový šalát | D137 | 2 | 99 | 49,5 |
| Pečená balzamiková tekvica, feta syr, paradajkové orzo | D095 | 2 | 71 | 35,5 |
| Zeleninový Pad thai so shitake | D021 | 2 | 69 | 34,5 |
| Batatovo-arašidové kari, kokosová ryža | D067 | 2 | 69 | 34,5 |
| Japonské jasai kari, sushi ryža | D069 | 2 | 64 | 32 |
| Krémové rizoto so sušených paradajok | D025 | 4 | 126 | 31,5 |
| Luxusné mandľové kari so špenátom, jasmínová ryža s limetkou | D077 | 2 | 63 | 31,5 |
| Dan Dan ryžové rezance so shiitake a tofu | D028 | 3 | 93 | 31 |

Porovnávať treba v rámci dňa: jedlo v menu s tromi hlavnými jedlami má iný strop ako v menu so štyrmi.

**Backlog podľa predaja.** Z rodín bez receptu sa najviac predávali *Minestrone* (244 porcií za 4 dni), *Dan Dan ryžové rezance* (216 za 7 dní — najpredávanejšie hlavné jedlo celého obdobia) a polievky *Zeleninová so žltou šošovicou*, *Fasolada* a *Adzuki s kelom* (každá okolo 110 za 2 dni). Tie sú prvé kandidátky na zápis receptu.

### Pokrytie

| Mesiac | Dni s objednávkami | Z toho so známym menu | Hlavné jedlá |
|---|---|---|---|
| 2024-01 až 2024-03 | 59 | 0 | 3 843 |
| 2024-04 | 21 | 5 | 1 401 |
| 2024-05 až 2024-08 | 85 | 0 | 5 179 |
| 2024-09 | 21 | 21 | 1 421 |
| 2024-10 | 23 | 23 | 1 456 |
| 2024-11 | 20 | 20 | 1 297 |
| 2024-12 | 10 | 9 | 515 |
| 2025-01 | 7 | 4 | 228 |

Pre dni bez menu je v `predaj_dni` súčet po číslach menu (*Menu 1: 19, Menu 2: 23 …*). Keď sa nájde menu pre ďalšie týždne, jedlá sa k nim dajú priradiť rovnakým postupom: doplniť ich do `podania` a pustiť [`scripts/historia-menu-predaj.mjs`](https://github.com/bolebruch/monada-web/blob/main/scripts/historia-menu-predaj.mjs) — prepočíta JSON, CSV aj hárky v xlsx (čísla v tomto texte treba prepísať podľa jeho výpisu).

**Nezaradené:** 75 porcií na 12 dňoch — hlavne sladkosť v piatky, ktorú Google Doc neuvádza, a Menu 4/5 v dňoch, keď v dokumente chýba (zoznam v `predaj_nezaradene`).

## Prekryvy medzi verziami

- **Návrhy toho istého týždňa.** Väčšina verzií je ten istý týždeň rozpísaný počas niekoľkých dní. Do hárku Timeline ide len posledná verzia každého týždňa.
- **Presné opakovania.** 12 verzií je zhodných s predchádzajúcou (9 úplne, 3 sa líšia len medzerami) a ďalších 6 má rovnaký obsah ako finálne menu svojho týždňa.
- **Skopírovaný minulý týždeň.** Týždne 23. 9., 30. 9., 4. 11. a 11. 11. vznikli skopírovaním predošlého týždňa a postupnou výmenou jedál. Tieto zvyšky sa v zozname úprav nepočítajú ako nové jedlá.
- **Vložené staré menu.** 13. 9. 2024 o 18:40 bolo do dokumentu vložené celé menu z 8.–12. 4. 2024 a do 21:35 znova odstránené. Je to jediná kópia toho týždňa, preto je v Timeline (sivé riadky). Používa EÚ číslovanie alergénov.
- **Prázdna šablóna.** Verzia z 27. 12. 2024 je šablóna bez jedál aj dátumov.
- **Rovnaké jedlo, iný pravopis.** Pod jedno ID sú zlúčené len pravopisné varianty. Bližšie prípady sú v stĺpci *Similar names — check if same dish* na rozhodnutie — napr. *Grécka* a *Turecká šošovicová polievka* vyzerajú podobne, ale sú to iné jedlá.

## Alergény — overiť pred importom

Kódy 1–8 znamenajú v oboch zoznamoch to isté. Od kódu 9 je vlastný zoznam menu posunutý:

| Kód | Vlastný zoznam menu (9/2024 – 1/2025) | EÚ zoznam (menu z apríla 2024) |
|---|---|---|
| 9 | Bezlepkové obilniny | Zeler |
| 10 | Hriby | Horčica |
| 11 | Med | Sezamové semeno |
| 12 | Zeler | Oxid siričitý |
| 13 | Horčica | Vlčí bôb |
| 14 | Sezamové semeno | Mäkkýše |
| 15–17 | Oxid siričitý, Vlčí bôb, Mäkkýše | — |

- **Kód 11** je v legende *Med*, ale je na hummuse, brownies s chalvou, Pho, Pad thai a Dan Dan rezancoch. V aprílovom menu, kde 11 = sezam, mali rovnaké druhy jedál (Pho, Pad thai, hummus, poke bowl) tiež 11. Jedlá si pravdepodobne nechali starý kód, keď sa zmenila legenda — **na väčšine jedál teda 11 znamená sezam.**
- **Kód 10** je na hubových jedlách, čo zodpovedá vlastnému zoznamu (hriby), nie EÚ zoznamu (horčica).
- **Kód 9** je zriedkavý (9 riadkov) a nejednoznačný: bezlepkové obilniny vo vlastnom zozname, zeler v EÚ zozname.
- Do databázy ukladať **názvy alergénov, nie čísla**.

## Chýbajúce obdobia

- **16. 12. 2024 – 24. 1. 2025** — žiadna verzia.
- **Pred 31. 8. 2024** — nič okrem vloženého aprílového týždňa, hoci dokument existuje od januára 2022. Ak *Súbor → História verzií* v Google Docs ukazuje staršie záznamy, dajú sa skopírovať cez prehliadač.

## Poznámky k dátam

- Názvy jedál sú tak, ako boli v menu (upravené len medzery). Preklepy zo zdroja ostali, napr. polievka uvedená ako „350 g" (16. 9. 2024) alebo ragú 29. 11. 2024 s alergénmi z Bánh mi (1, 3, 4, 6).
- Polievka sa v Timeline opakuje v každom menu daného dňa; stĺpce *Days served* a *Weeks served* ju počítajú raz za deň, resp. týždeň.
