feat: zlepšení šablon, přidány osobní údaje a spánkový režim

This commit is contained in:
Ondřej Anděl
2026-09-15 14:16:42 +02:00
parent a5711f3e1e
commit 21b01528e9
51 changed files with 3739 additions and 504 deletions
+187 -9
View File
@@ -444,8 +444,21 @@ UserSettings:
$ref: "#/SourceRate"
basalCalories:
description: |
Klidový výdej (bazální metabolismus) v kcal za den. Bez něj se bilance dne
počítá jen jako jídlo proti pohybu a nejde o skutečný deficit.
Ručně zadaný klidový výdej v kcal za den. Má přednost před hodnotou
spočítanou z tělesných údajů. Bez obojího se bilance dne počítá jen
jako jídlo proti pohybu a nejde o skutečný deficit.
type: integer
profile:
$ref: "#/PersonalProfile"
computedBasalCalories:
description: |
Klidový výdej spočítaný z tělesných údajů rovnicí Mifflin–St Jeor.
Doplňuje server, při ukládání se ignoruje. Chybí, pokud profil není úplný.
type: integer
effectiveBasalCalories:
description: |
Klidový výdej, který se reálně použije v bilanci dne — ručně zadaný,
jinak spočítaný z profilu. Doplňuje server.
type: integer
ActivityUnit:
@@ -482,7 +495,15 @@ ActivityEntry:
unit:
$ref: "#/ActivityUnit"
quantity:
description: Množství v dané jednotce — počet kroků, minut, kilometrů nebo opakování
description: |
Množství v dané jednotce na jednu sérii — počet kroků, minut, kilometrů
nebo opakování.
type: integer
sets:
description: |
Počet sérií. Celkové množství je sets × quantity, z něj se počítají kalorie.
Chybí-li, počítá se s jednou sérií. Drží se odděleně od množství, protože
3 × 40 opakování s pauzami je jiný trénink než 120 opakování v kuse.
type: integer
caloriesPer100Units:
description: |
@@ -528,8 +549,12 @@ ActivityInput:
unit:
$ref: "#/ActivityUnit"
quantity:
description: Množství v dané jednotce
description: Množství v dané jednotce na jednu sérii
type: integer
sets:
description: Počet sérií. Nevyplněno znamená jednu.
type: integer
nullable: true
caloriesPer100Units:
description: Spálené kcal na 100 jednotek
type: integer
@@ -564,21 +589,38 @@ ActivityDay:
type: integer
WorkoutTemplateItem:
description: Jedna položka šablony tréninku
description: |
Jedna položka šablony tréninku — buď konkrétní cvik, nebo odkaz na jinou
šablonu, jejíž cviky se při použití rozbalí.
type: object
additionalProperties: false
required:
- name
- unit
- quantity
- kind
properties:
kind:
$ref: "#/WorkoutItemKind"
name:
description: Název cviku. Povinný u položky druhu CVIK.
type: string
unit:
$ref: "#/ActivityUnit"
quantity:
description: Množství v dané jednotce na jednu sérii. Povinné u položky druhu CVIK.
type: integer
sets:
description: Počet sérií. Nevyplněno znamená jednu.
type: integer
caloriesPer100Units:
description: Spálené kcal na 100 jednotek
type: integer
templateRefId:
description: Identifikátor vnořené šablony. Povinný u položky druhu SABLONA.
type: string
templateRefName:
description: Název vnořené šablony. Doplňuje server, při ukládání se ignoruje.
type: string
templateRefCalories:
description: Odhad kcal vnořené šablony. Doplňuje server, při ukládání se ignoruje.
type: integer
WorkoutTemplate:
@@ -592,6 +634,8 @@ WorkoutTemplate:
- name
- items
- estimatedCalories
- hasNested
- usedByCount
properties:
id:
type: string
@@ -603,7 +647,15 @@ WorkoutTemplate:
items:
$ref: "#/WorkoutTemplateItem"
estimatedCalories:
description: Odhad spálených kcal za celou šablonu
description: Odhad spálených kcal za celou šablonu včetně vnořených
type: integer
hasNested:
description: |
True, pokud šablona obsahuje odkaz na jinou šablonu. Takovou šablonu
už nelze vnořit do další — zanoření je povolené jen na jednu úroveň.
type: boolean
usedByCount:
description: Kolik jiných šablon tuto šablonu používá
type: integer
EnergyBalance:
@@ -662,3 +714,129 @@ DayOverview:
$ref: "#/ActivityDay"
energy:
$ref: "#/EnergyBalance"
sleepMinutes:
description: |
Délka spánku v minutách. Eviduje se jako kontext dne — do energetické
bilance nevstupuje, protože klidový výdej už pokrývá celých 24 hodin
včetně spánku a žádná standardní rovnice délku spánku nezohledňuje.
type: integer
Pohlavi:
description: Pohlaví — vstupuje do výpočtu bazálního metabolismu
type: string
enum:
- MUZ
- ZENA
PersonalProfile:
description: |
Tělesné údaje uživatele. Slouží k výpočtu bazálního metabolismu
(klidového výdeje) rovnicí Mifflin–St Jeor.
type: object
additionalProperties: false
properties:
sex:
$ref: "#/Pohlavi"
birthYear:
description: Rok narození, ze kterého se odvozuje věk
type: integer
heightCm:
description: Výška v centimetrech
type: integer
weightGrams:
description: Hmotnost v gramech. Celé číslo, aby se počítalo bez desetinných chyb.
type: integer
WorkoutItemKind:
description: |
Druh položky šablony — buď přímo cvik, nebo odkaz na jinou šablonu.
Zanoření je povolené jen na jednu úroveň.
type: string
enum:
- CVIK
- SABLONA
MealTemplate:
description: |
Předpřipravené jídlo. Použitím se založí do zvoleného dne, takže opakovaně
jedené jídlo není potřeba zadávat znovu. Na rozdíl od šablon tréninků se
šablony jídel neskládají z jiných — jsou to ploché záznamy.
type: object
additionalProperties: false
required:
- id
- name
properties:
id:
type: string
name:
description: Název jídla
type: string
source:
description: Zdroj jídla (podnik, obchod, "doma", ...)
type: string
mealType:
description: Chod, pod kterým se jídlo zakládá. Bez něj se použije oběd.
allOf:
- $ref: "#/MealType"
calories:
description: |
Energetická hodnota celé porce v kcal. Použije se, když jídlo nemá
vyplněnou gramáž a energii na 100 g.
type: integer
caloriesPer100g:
description: Energetická hodnota na 100 g v kcal
type: integer
weight:
description: Obvyklá gramáž porce v gramech
type: integer
price:
description: Obvyklá cena v haléřích
type: integer
pricePer100g:
description: Cena za 100 g v haléřích
type: integer
note:
description: |
Poznámka nebo postup přípravy. U domácích jídel sem lze zapsat recept
volným textem; strukturované suroviny mohou přibýt později.
type: string
MealTemplateInput:
description: |
Data pro založení nebo úpravu šablony jídla. Oproti {@link MealTemplate} je
`id` volitelné — bez něj se šablona založí jako nová.
type: object
additionalProperties: false
required:
- name
properties:
id:
description: Identifikátor upravované šablony. Bez něj se založí nová.
type: string
name:
type: string
source:
type: string
nullable: true
mealType:
allOf:
- $ref: "#/MealType"
calories:
type: integer
nullable: true
caloriesPer100g:
type: integer
nullable: true
weight:
type: integer
nullable: true
price:
type: integer
nullable: true
pricePer100g:
type: integer
nullable: true
note:
type: string
nullable: true