fix: rozdílné jednotky u receptů

feat: vazby a trvání receptů
This commit is contained in:
Ondřej Anděl committed 2026-10-19 18:40:13 +02:00
1 parent caffb6d8b4
commit 865c2c3b22
18 files changed
+952 -78

No files matched your search

+21 -2
View File
@@ -330,7 +330,7 @@ psát jde i nový.
vařené jídlo se surovinami (`ingredients`), počtem porcí (`servings`), hmotností
hotového jídla (`cookedWeight`) a postupem v `note`. **Chod nemá** — patří ke dni,
ne k jídlu; použije se zvolený při použití, jinak oběd (starší recepty ho v úložišti
mít můžou, `toMealTemplate` ho zahodí). `deriveRecipe` z nich při
mít můžou, `toOwnRecipe` ho zahodí). `deriveRecipe` z nich při
uložení spočítá hodnoty **jedné porce** a uloží je do plochých polí (`weight`,
`caloriesPer100g`, `calories`, `price`); použitím vznikne běžný `MealEntry` přes
`addMeal`. Energie na 100 g se bere z hmotnosti hotového jídla, ne ze součtu
@@ -338,8 +338,27 @@ surovin — vařením se voda odpaří nebo nasákne. Postup se do záznamu dne
Recept má volitelný **typ** (`category` — polévka, omáčka, pečení…) jako volný
text; formulář nabízí typy z ostatních receptů (`RecipeCategoryInput`), pevný
číselník to záměrně není. **Chuť** (`flavor`, `RecipeFlavor`: SLANE/SLADKE) je
v API vždy vyplněná; slaná je výchozí a do úložiště se nezapisuje, `toMealTemplate`
v API vždy vyplněná; slaná je výchozí a do úložiště se nezapisuje, `toOwnRecipe`
ji při čtení doplní.
Volitelný je i **čas přípravy** (`prepMinutes`, v minutách).
**Jednotky surovin:** surovina má množství v gramech (`weight`), nebo v jiné
jednotce (`amount` + `unit`, `IngredientUnit`: ks, ml, l, lžíce…) — vejce
na kusy, mléko v litrech. U jiné jednotky je `weight` jen nepovinný **přepočet
na gramy pro výživu**; energie i hmotnost jídla se počítají vždy z gramů
a surovina bez přepočtu do nich nevstupuje. Hustotu ani hmotnost kusu aplikace
neodhaduje, bylo by to vymyšlené číslo. Bez jednotky se `amount` neukládá.
**Vazby mezi recepty:** přílohy (`sideDishIds`, směrové — ukládají se u hlavního
jídla, druhá strana je `sideDishOfIds`) a podobné (`similarIds`, oboustranné,
uložené jen u jednoho z dvojice). Druhou stranu dopočte při čtení `withLinks`,
do úložiště se nezapisuje. Uložení receptu je pro všechny vazby, které se ho
týkají, autoritativní (`relinkOther` je odebere ostatním a znovu zapíše jen
podle vstupu), takže vazbu jde přidat i odebrat z kteréhokoli z obou receptů.
Smazání receptu vazby na něj odklidí. Karta receptu vazby ukazuje jako odkazy
(v seznamu jídel i na kole štěstí), PDF jako odkazy na stránku receptu, pokud
je v tomtéž exportu.
Recepty se nabízejí v našeptávání i ve výběru z historie (`ApplyMealModal`)
a jídlo stejného jména z historie se vedle receptu nenabízí podruhé.