feat: zlepšení šablon, přidány osobní údaje a spánkový režim
This commit is contained in:
@@ -30,6 +30,8 @@ paths:
|
||||
# Přehled dne (/api/day)
|
||||
/day:
|
||||
$ref: "./paths/day/overview.yml"
|
||||
/day/sleep:
|
||||
$ref: "./paths/day/sleep.yml"
|
||||
|
||||
# Pohyb (/api/activities)
|
||||
/activities/add:
|
||||
@@ -48,6 +50,20 @@ paths:
|
||||
$ref: "./paths/workouts/delete.yml"
|
||||
/workouts/apply:
|
||||
$ref: "./paths/workouts/apply.yml"
|
||||
/workouts/fromActivities:
|
||||
$ref: "./paths/workouts/fromActivities.yml"
|
||||
|
||||
# Šablony jídel (/api/mealTemplates)
|
||||
/mealTemplates:
|
||||
$ref: "./paths/mealTemplates/list.yml"
|
||||
/mealTemplates/save:
|
||||
$ref: "./paths/mealTemplates/save.yml"
|
||||
/mealTemplates/delete:
|
||||
$ref: "./paths/mealTemplates/delete.yml"
|
||||
/mealTemplates/apply:
|
||||
$ref: "./paths/mealTemplates/apply.yml"
|
||||
/mealTemplates/fromMeal:
|
||||
$ref: "./paths/mealTemplates/fromMeal.yml"
|
||||
|
||||
# Kalorie (/api/calories)
|
||||
/calories/search:
|
||||
@@ -58,6 +74,8 @@ paths:
|
||||
$ref: "./paths/settings/settings.yml"
|
||||
/settings/basal:
|
||||
$ref: "./paths/settings/basal.yml"
|
||||
/settings/profile:
|
||||
$ref: "./paths/settings/profile.yml"
|
||||
|
||||
# Importy (/api/import)
|
||||
/import/luncher:
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
post:
|
||||
operationId: saveSleep
|
||||
summary: Uloží délku spánku pro zvolený den.
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
required: [date]
|
||||
properties:
|
||||
date:
|
||||
type: string
|
||||
format: date
|
||||
sleepMinutes:
|
||||
description: Délka spánku v minutách. Null nebo 0 záznam odstraní.
|
||||
type: integer
|
||||
nullable: true
|
||||
responses:
|
||||
"200":
|
||||
description: Aktualizovaný přehled dne
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "../../schemas/_index.yml#/DayOverview"
|
||||
"400":
|
||||
description: Neplatná data
|
||||
"401":
|
||||
description: Neautentizovaný uživatel
|
||||
@@ -0,0 +1,35 @@
|
||||
post:
|
||||
operationId: applyMealTemplate
|
||||
summary: Založí jídlo ze šablony do zvoleného dne.
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
required: [id, date]
|
||||
properties:
|
||||
id:
|
||||
description: Identifikátor šablony
|
||||
type: string
|
||||
date:
|
||||
description: Den, do kterého se jídlo založí
|
||||
type: string
|
||||
format: date
|
||||
mealType:
|
||||
description: Chod. Bez něj se použije chod ze šablony, jinak oběd.
|
||||
allOf:
|
||||
- $ref: "../../schemas/_index.yml#/MealType"
|
||||
responses:
|
||||
"200":
|
||||
description: Aktualizovaný přehled dne
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "../../schemas/_index.yml#/DayOverview"
|
||||
"400":
|
||||
description: Neplatná data
|
||||
"401":
|
||||
description: Neautentizovaný uživatel
|
||||
"404":
|
||||
description: Šablona neexistuje
|
||||
@@ -0,0 +1,26 @@
|
||||
post:
|
||||
operationId: deleteMealTemplate
|
||||
summary: Smaže šablonu jídla.
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
required: [id]
|
||||
properties:
|
||||
id:
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: Aktualizovaný seznam šablon
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: "../../schemas/_index.yml#/MealTemplate"
|
||||
"400":
|
||||
description: Neplatná data
|
||||
"401":
|
||||
description: Neautentizovaný uživatel
|
||||
@@ -0,0 +1,33 @@
|
||||
post:
|
||||
operationId: createMealTemplateFromMeal
|
||||
summary: Vytvoří šablonu jídla z existujícího záznamu v přehledu dne.
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
required: [id, date]
|
||||
properties:
|
||||
id:
|
||||
description: Identifikátor jídla, ze kterého se šablona vytvoří
|
||||
type: string
|
||||
date:
|
||||
description: Den, ve kterém jídlo je
|
||||
type: string
|
||||
format: date
|
||||
responses:
|
||||
"200":
|
||||
description: Aktualizovaný seznam šablon
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: "../../schemas/_index.yml#/MealTemplate"
|
||||
"400":
|
||||
description: Neplatná data
|
||||
"401":
|
||||
description: Neautentizovaný uživatel
|
||||
"404":
|
||||
description: Jídlo neexistuje
|
||||
@@ -0,0 +1,14 @@
|
||||
get:
|
||||
operationId: getMealTemplates
|
||||
summary: Vrátí šablony jídel přihlášeného uživatele.
|
||||
responses:
|
||||
"200":
|
||||
description: Šablony seřazené podle názvu
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: "../../schemas/_index.yml#/MealTemplate"
|
||||
"401":
|
||||
description: Neautentizovaný uživatel
|
||||
@@ -0,0 +1,22 @@
|
||||
post:
|
||||
operationId: saveMealTemplate
|
||||
summary: Založí novou šablonu jídla, nebo upraví existující.
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "../../schemas/_index.yml#/MealTemplateInput"
|
||||
responses:
|
||||
"200":
|
||||
description: Aktualizovaný seznam šablon
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: "../../schemas/_index.yml#/MealTemplate"
|
||||
"400":
|
||||
description: Neplatná data
|
||||
"401":
|
||||
description: Neautentizovaný uživatel
|
||||
@@ -0,0 +1,20 @@
|
||||
post:
|
||||
operationId: saveProfile
|
||||
summary: Uloží tělesné údaje uživatele a přepočte z nich klidový výdej.
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "../../schemas/_index.yml#/PersonalProfile"
|
||||
responses:
|
||||
"200":
|
||||
description: Aktualizované nastavení včetně dopočteného klidového výdeje
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "../../schemas/_index.yml#/UserSettings"
|
||||
"400":
|
||||
description: Neplatná data
|
||||
"401":
|
||||
description: Neautentizovaný uživatel
|
||||
@@ -0,0 +1,40 @@
|
||||
post:
|
||||
operationId: createWorkoutTemplateFromActivities
|
||||
summary: |
|
||||
Vytvoří šablonu tréninku z aktivit zaznamenaných v přehledu dne.
|
||||
Bez výčtu identifikátorů se použijí všechny aktivity daného dne.
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
required: [date, name]
|
||||
properties:
|
||||
date:
|
||||
description: Den, ze kterého se aktivity berou
|
||||
type: string
|
||||
format: date
|
||||
name:
|
||||
description: Název nové šablony
|
||||
type: string
|
||||
ids:
|
||||
description: |
|
||||
Identifikátory aktivit, které se do šablony dostanou.
|
||||
Bez nich se použijí všechny aktivity dne.
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: Aktualizovaný seznam šablon
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: "../../schemas/_index.yml#/WorkoutTemplate"
|
||||
"400":
|
||||
description: Neplatná data
|
||||
"401":
|
||||
description: Neautentizovaný uživatel
|
||||
+187
-9
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user