fix: recepty přesnuty k jídlům
feat: přidána podpora fotek
This commit is contained in:
1 parent
efed5e6e86
commit
e13f7ce8e5
39 files changed
+1266
-511
No files matched your search
@@ -59,8 +59,9 @@ cd client && yarn build # tsc --noEmit + vite build → client/dist
|
||||
- **Entry:** `index.ts` — Express app, auth middleware, error middleware
|
||||
- **Routes:** `routes/` — `dayRoutes`, `mealRoutes`, `activityRoutes`, `workoutRoutes`,
|
||||
`statsRoutes`, `calorieRoutes`, `settingsRoutes`, `importRoutes`
|
||||
- **Domain:** `meals.ts` (jídlo a historie jídel), `nutrients.ts` (živiny),
|
||||
`mealTemplates.ts` (recepty), `activities.ts` (pohyb), `workouts.ts` (šablony
|
||||
- **Domain:** `meals.ts` (jídlo a historie jídel), `mealGroups.ts` (seznam jídel —
|
||||
skupiny podle názvu a zdroje, doplnění a přejmenování), `mealPhotos.ts` (fotky
|
||||
jídel), `nutrients.ts` (živiny), `mealTemplates.ts` (recepty), `activities.ts` (pohyb), `workouts.ts` (šablony
|
||||
tréninků), `sleep.ts` (spánek), `weights.ts` (vážení po dnech), `profile.ts`
|
||||
(tělesné údaje a výpočet BMR), `bodyMetrics.ts` (BMI, podíl tuku, cíle),
|
||||
`dayOverview.ts` (spojení dne a bilance), `statsService.ts` (agregace),
|
||||
@@ -75,7 +76,7 @@ cd client && yarn build # tsc --noEmit + vite build → client/dist
|
||||
- **Pages:** `pages/` — `DayPage` (přehled dne se záložkami Příjem/Výdej),
|
||||
`MealGroupsPage` (`/jidla` — seznam jídel podle názvu a zdroje s filtrem zdroje,
|
||||
hromadným doplněním údajů a přejmenováním),
|
||||
`TemplatesPage` (šablony tréninků a recepty), `ProfilePage` (Profil — ukazatele,
|
||||
`WorkoutsPage` (`/treninky` — šablony tréninků), `ProfilePage` (Profil — ukazatele,
|
||||
vývoj hmotnosti, tělesné údaje, cíle a klidový výdej),
|
||||
`StatsPage` (statistiky se záložkami Příjem / Výdej / Útrata a import; panely
|
||||
`IntakeStatsPanel`, `ActivityStatsPanel`, `SpendingStatsPanel`)
|
||||
@@ -305,7 +306,21 @@ Druhou akcí skupiny je **přejmenování** (`renameMealGroup`,
|
||||
`POST /api/meals/renameGroup`) — změní název i zdroj všem jídlům skupiny ve
|
||||
všech dnech. Je oddělené od doplnění schválně: doplnění jen připisuje, co chybí,
|
||||
přejmenování přepisuje. Když nový název a zdroj patří jiné skupině, jídla se do
|
||||
ní sloučí (formulář na to předem upozorní).
|
||||
ní sloučí (formulář na to předem upozorní). Recept a fotky jdou s jídlem; dvě
|
||||
jídla s recepty sloučit nejde.
|
||||
|
||||
**Recept a fotky jsou rozšířením jídla v seznamu**, ne samostatnou evidencí —
|
||||
patří dvojici název a zdroj, ne dni. V přehledu dne se nezobrazují.
|
||||
|
||||
- Recept se k jídlu váže **shodou názvu a zdroje** (`getRecipeKey`), jedno jídlo
|
||||
má nejvýš jeden (`saveMealTemplate` druhý odmítne). Recept jídla, které se
|
||||
ještě nejedlo, je v seznamu jako skupina s `count: 0` a bez `lastDate`.
|
||||
Má-li jídlo recept, doplnění údajů předvyplní gramáž porce a energii z něj.
|
||||
- Fotky (`mealPhotos.ts`): klient je před nahráním zmenší (`imageResize.ts`,
|
||||
~1600 px JPEG) a pošle i náhled (240 px). Rejstřík s náhledy je jeden pro
|
||||
uživatele (`mealPhotos:<login>`, klíč jídla → fotky), aby ho seznam jídel
|
||||
načetl jedním čtením; plné obrázky leží každý zvlášť (`mealPhoto:<login>:<id>`)
|
||||
a načtou se, až když se fotky jídla otevřou.
|
||||
|
||||
Pole Zdroj (`SourceInput`) nabízí zdroje z historie (`getMealSources`,
|
||||
`GET /api/meals/sources`, nejčastější první) a podniky se sazbou z nastavení;
|
||||
@@ -313,7 +328,9 @@ psát jde i nový.
|
||||
|
||||
`MealTemplate` (`mealTemplates.ts`, klíč `mealTemplates:<login>`) je **recept** —
|
||||
vařené jídlo se surovinami (`ingredients`), počtem porcí (`servings`), hmotností
|
||||
hotového jídla (`cookedWeight`) a postupem v `note`. `deriveRecipe` z nich při
|
||||
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
|
||||
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
|
||||
|
||||
Reference in new issue
Block a user