feat: večeře (extra meal slot) — dokončení, sync s masterem
CI / Generate TypeScript types (push) Successful in 34s
CI / Build server (push) Successful in 33s
CI / Server unit tests (push) Successful in 1m11s
CI / Build client (push) Successful in 33s
CI / Playwright E2E tests (push) Successful in 1m20s
CI / Build and push Docker image (push) Has been skipped
CI / Notify (push) Successful in 2s

- Nová stránka /vecere pro evidenci extra jídla (večeře/pozdní oběd)
- MealSlot enum (obed/extra), oddělený storage namespace YYYY-MM-DD_extra
- slot parametr na všech food endpointech a GET /api/data
- Push reminder: přechod na 60min cooldown, login v payloadu místo endpointu
- Smazány chybně přidané root package.json + package-lock.json (gitnexus)
- server: slot?: string → slot?: MealSlot, literály nahrazeny enum konstantami
- Přidány Jest testy izolace extra/obed storage namespace
This commit is contained in:
2026-05-06 20:14:47 +02:00
96 changed files with 3582 additions and 4289 deletions
+44 -8
View File
@@ -53,6 +53,11 @@ ClientData:
description: Datum a čas poslední aktualizace pizz
type: string
format: date-time
salatList:
description: Seznam dostupných salátů pro předaný den
type: array
items:
$ref: "#/Salat"
pendingQrs:
description: Nevyřízené QR kódy pro platbu z předchozích pizza day
type: array
@@ -198,6 +203,9 @@ RestaurantDayMenu:
type: array
items:
type: string
isStale:
description: Příznak, zda data mohou pocházet z jiného týdne
type: boolean
RestaurantDayMenuMap:
description: Objekt, kde klíčem je podnik ((#Restaurant)) a hodnotou denní menu daného podniku ((#RestaurantDayMenu))
type: object
@@ -435,7 +443,7 @@ Pizza:
items:
$ref: "#/PizzaSize"
PizzaVariant:
description: Konkrétní varianta (velikost) jedné pizzy.
description: Konkrétní varianta (velikost) jedné pizzy nebo salátu.
type: object
additionalProperties: false
required:
@@ -445,16 +453,40 @@ PizzaVariant:
- price
properties:
varId:
description: Unikátní identifikátor varianty pizzy
description: Unikátní identifikátor varianty
type: integer
name:
description: Název pizzy
description: Název pizzy nebo salátu
type: string
size:
description: Velikost pizzy (např. "30cm")
description: Velikost pizzy (např. "30cm"), nebo "1 porce" pro salát
type: string
price:
description: Cena pizzy v Kč, včetně krabice
description: Cena v Kč, včetně krabice/obalu
type: number
category:
description: Kategorie položky (pizza nebo salat)
type: string
enum: [pizza, salat]
Salat:
description: Salát z nabídky Pizza Chefie
type: object
additionalProperties: false
required:
- name
- ingredients
- price
properties:
name:
description: Název salátu
type: string
ingredients:
description: Seznam obsažených ingrediencí
type: array
items:
type: string
price:
description: Cena salátu v Kč (bez obalu)
type: number
PizzaOrder:
description: Údaje o objednávce pizzy jednoho uživatele.
@@ -644,19 +676,23 @@ ClearMockDataRequest:
# --- NEVYŘÍZENÉ QR KÓDY ---
PendingQr:
description: Nevyřízený QR kód pro platbu z předchozího Pizza day
description: Nevyřízený QR kód pro platbu
type: object
additionalProperties: false
required:
- id
- date
- creator
- totalPrice
properties:
id:
description: Unikátní identifikátor QR kódu (umožňuje více QR na strávníka na den)
type: string
date:
description: Datum Pizza day, ke kterému se QR kód vztahuje
description: Datum, ke kterému se QR kód vztahuje
type: string
creator:
description: Jméno zakladatele Pizza day (objednávajícího)
description: Jméno uživatele, který QR vygeneroval (příjemce platby)
type: string
totalPrice:
description: Celková cena objednávky v Kč