--- title: Nutriční katalog a párování order: 7 summary: Centrální databáze nutričních hodnot potravin a párování surovin provozů na položky katalogu. --- # Nutriční katalog a párování Nutriční hodnoty jídel se počítají z **centrálního nutričního katalogu** - sdílené databáze potravin s energetickou a makroživinovou hodnotou. Aby se hodnoty propsaly do jídel konkrétního provozu, musí být jeho suroviny **spárovány** s položkami katalogu. Administrátor k tomu má dvě záložky. ## Párování surovin Záložka **Párování surovin** (`/admin/nutrition`) slouží k propojení surovin jednotlivých provozů s položkami centrálního nutričního katalogu. ### Pokrytí podle tenanta Nahoře je tabulka **pokrytí po provozech**: pro každý tenant je vidět počet **napárováno**, **celkem** a **procento pokrytí** (barevně - vysoké zeleně, nízké červeně). Kliknutím na řádek se seznam níže vyfiltruje na daný provoz; k dispozici je i samostatný výběr provozu (nebo _Všichni tenanti_). ### Nespárované vs. napárované Pod přehledem jsou dvě záložky: - **Nenamatchované** - fronta surovin, které ještě nemají vazbu na katalog. Zobrazuje surovinu, provoz a potravinovou skupinu. - **Namatchované** - už spárované suroviny s uvedenou položkou katalogu; u každé je tlačítko **Odpojit** pro zrušení vazby. ### Panel párování Kliknutím na nespárovanou surovinu se otevře panel s **automaticky navrženými kandidáty**, seřazenými podle typu shody: - **Přesná shoda** - název odpovídá přesně - **Alias** - shoda přes evidovaný alias - **Alias (podobný)** - přibližná (fuzzy) shoda přes alias - **Podobnost** - obecná textová podobnost (u každého kandidáta je uvedeno procento) Kromě navržených kandidátů lze **procházet celý katalog** a filtrovat ho podle názvu, takže lze vybrat libovolnou položku, nejen navrženou. Vazbu potvrdíte tlačítkem **Potvrdit**; existující vazbu zrušíte tlačítkem **Odpojit** v záložce _Namatchované_. ## Nutriční katalog Záložka **Nutriční katalog** (`/admin/nutrition/catalog`) je samotná centrální databáze nutričních hodnot. ### Seznam a hledání Tabulka zobrazuje potraviny s hodnotami **kcal** a **bílkovinami / tuky / sacharidy**, potravinovou skupinou, zdrojem záznamu a stavem ověření. K dispozici je fulltextové **hledání** a filtry **Jen ručně upravené** a **Jen neověřené**. ### Základ hodnot: 100 g nebo 100 ml Etikety kapalin (mléko, oleje, octy, nápoje) uvádějí hodnoty **na 100 ml**, ne na 100 g. Sloupec **Základ** říká, co pro danou položku platí, a hodnota se ukládá přesně tak, jak je na obalu - **nepřepočítává se hustotou**. Výpočet spotřeby totiž počítá 1 ml jako 1 g, takže hodnota z etikety na 100 ml sedí; přepočet by chybu naopak zdvojnásobil. ### Vytvoření a úprava Tlačítkem **Přidat položku** založíte novou potravinu; kliknutím na řádek ji otevřete k úpravě. Zadává se název, potravinová skupina, základ hodnot, energie a bílkoviny / tuky / sacharidy. ### Fotka etikety a ověření Do detailu položky lze nahrát **fotku etikety** (JPEG, PNG, WebP nebo HEIC). Fotka se v panelu zobrazí nad hodnotami, takže administrátor vidí obal a vytěžená čísla vedle sebe a může je porovnat. Tlačítko **Ověřit podle fotky** zaznamená, kdo a kdy hodnoty zkontroloval; v seznamu pak položka dostane štítek _Ověřeno_. Položka, která má fotku a nikdo ji ještě neprošel, nese štítek _K ověření_. Filtr **Jen neověřené** je širší: vypíše **všechno neověřené**, tedy i položky, u kterých zatím žádná fotka není (ty mají ve sloupci Ověřeno pomlčku). Hned po importu tedy vrátí prakticky celý katalog. > **Pozor:** uložení změny hodnot ověření zruší. Ověření platilo pro předchozí čísla, ne pro nová. Pokud hodnoty s fotkou sedí, ověřte je bez úpravy. Stejně se chová i import: pokud opravená dávka nějakou hodnotu změní, ověření té položky se zruší a položka se vrátí do fronty. Dávka, která hodnoty nemění, ověření nechává být. ### Import z CSV Tlačítkem **Importovat z CSV** nahrajete dávku hodnot vytěžených z etiket. Soubor je oddělený **středníkem** a uložený v kódování **Windows-1250**; první řádek musí být hlavička s názvy sloupců (na jejich pořadí nezáleží). Povinné sloupce - **bez kteréhokoli z nich se odmítne celý soubor**: | Sloupec | Význam | |---|---| | `OrigFdCd` | vlastní kód položky, slouží k dohledání zdroje | | `OrigFdNm` | název, pod kterým se položka v katalogu založí | | `ENERC [kcal]` | energie | | `PROT [g]` | bílkoviny | | `FAT [g]` | tuky | | `CHO [g]` | sacharidy | Volitelné: `BASIS` (`g` nebo `ml`; **když chybí, bere se `g`** - u kapalin ho tedy vyplňte), `ENERC [kJ]`, `FASAT [g]` (nasycené), `SUGAR [g]` (cukry), `FIBT [g]` (vláknina), `NACL [g]` (sůl), `NA [mg]`, `WATER [g]`. Po importu se zobrazí souhrn (vytvořeno / aktualizováno / přeskočeno / neplatné) a případný seznam chybných řádků. Nově založené položky přicházejí jako **neověřené** - projdou se proti fotkám. ### Zdroj záznamu a co koho přepíše Každá položka nese zdroj a ten rozhoduje, co smí import přepsat: | Zdroj | Odkud je | Přednost | |---|---|---| | _Z etikety_ | vytěženo z obalu, tedy import z CSV | nižší | | _Ručně_ | zadal nebo opravil člověk v aplikaci | vyšší | Import zapisuje položky jako _Z etikety_ a smí přepsat jen položku se **stejným nebo nižším** zdrojem. Prakticky to znamená dvě věci: - **Ruční korekci import nepřepíše.** Jakmile položku upravíte v aplikaci, stane se z ní _Ručně_ a další nahrání souboru ji přeskočí (v souhrnu se objeví mezi „přeskočeno"). - **Vlastní položky import přepsat smí.** Opětovné nahrání opraveného souboru je běžná cesta, jak spravit špatně opsanou hodnotu - kdyby to nešlo, nebylo by jak opravu doručit.