feat: spin the wheel, objednavani scrape menu, historie cen
CI / Generate TypeScript types (push) Successful in 11s
CI / Server unit tests (push) Successful in 25s
CI / Build server (push) Successful in 29s
CI / Build client (push) Successful in 39s
CI / Playwright E2E tests (push) Successful in 1m52s
CI / Build and push Docker image (push) Successful in 51s
CI / Notify (push) Successful in 2s

This commit is contained in:
2026-09-23 15:41:15 +02:00
parent 682deaf20b
commit e281615cc3
35 changed files with 3979 additions and 15 deletions
+193
View File
@@ -933,6 +933,199 @@ Store:
items:
type: string
StoreMenuSource:
description: Zdroj nabídky obchodu pro kolo štěstí
type: string
enum:
- bolt
- wolt
- history
- none
x-enum-varnames:
- BOLT
- WOLT
- HISTORY
- NONE
StoreMenuProvider:
description: Dovozová služba, ze které lze stáhnout nabídku podniku
type: string
enum:
- bolt
- wolt
x-enum-varnames:
- BOLT
- WOLT
StoreScrapeState:
description: |
Stav stahování nabídky od dané služby:
ok = nabídka stažena, pending = zatím nezkoušeno, failed = selhalo (automaticky se ještě zkusí),
blocked = opakovaně selhalo, automaticky se už nezkouší (jen ruční obnovení)
type: string
enum:
- ok
- pending
- failed
- blocked
x-enum-varnames:
- OK
- PENDING
- FAILED
- BLOCKED
StoreScrapeStatus:
description: Informace o stahování nabídky obchodu od jedné dovozové služby
type: object
additionalProperties: false
required:
- provider
- url
- state
- dishCount
- failures
properties:
provider:
$ref: "#/StoreMenuProvider"
url:
description: URL podniku u dané služby
type: string
state:
$ref: "#/StoreScrapeState"
dishCount:
description: Počet uložených hlavních jídel
type: integer
failures:
description: Počet neúspěšných pokusů od posledního úspěchu
type: integer
lastSuccessAt:
description: Čas posledního úspěšného stažení (ISO)
type: string
lastAttemptAt:
description: Čas posledního pokusu (ISO)
type: string
lastError:
description: Chyba posledního neúspěšného pokusu
type: string
StoreScrapeInfo:
description: Stav stahování nabídek obchodu od všech podporovaných služeb
type: object
additionalProperties: false
required:
- store
- providers
properties:
store:
type: string
providers:
type: array
items:
$ref: "#/StoreScrapeStatus"
StorePriceChange:
description: Změna jedné položky nabídky mezi dvěma staženími (bez before = nová položka, bez after = odebraná)
type: object
additionalProperties: false
required:
- name
properties:
name:
type: string
before:
description: Předchozí cena v Kč
type: number
after:
description: Nová cena v Kč
type: number
StorePriceHistoryEntry:
description: Jedna verze nabídky — výchozí stav (initial) nebo změny oproti předchozímu stažení
type: object
additionalProperties: false
required:
- at
- changes
properties:
at:
description: Čas stažení (ISO)
type: string
initial:
description: První stažená verze nabídky (výchozí stav, bez změn)
type: boolean
itemCount:
description: Počet položek v nabídce po tomto stažení
type: integer
changes:
type: array
items:
$ref: "#/StorePriceChange"
StorePriceHistory:
description: Historie cen nabídky obchodu dle dovozové služby (nejnovější první)
type: object
additionalProperties: false
required:
- store
- providers
properties:
store:
type: string
providers:
type: array
items:
type: object
additionalProperties: false
required:
- provider
- entries
properties:
provider:
$ref: "#/StoreMenuProvider"
entries:
type: array
items:
$ref: "#/StorePriceHistoryEntry"
StoreMenuDish:
description: Jídlo z nabídky obchodu
type: object
additionalProperties: false
required:
- name
properties:
name:
description: Název jídla
type: string
price:
description: Cena v Kč (pokud je známa)
type: number
category:
description: Kategorie v nabídce podniku
type: string
isMain:
description: Hlavní jídlo (ne polévka, nápoj, příloha, omáčka...) — jen ta jdou do kola štěstí
type: boolean
StoreMenu:
description: Nabídka obchodu (kolo štěstí bere jen hlavní jídla, nápověda u objednávek celou nabídku)
type: object
additionalProperties: false
required:
- store
- source
- dishes
properties:
store:
description: Název obchodu/restaurace
type: string
source:
$ref: "#/StoreMenuSource"
dishes:
type: array
items:
$ref: "#/StoreMenuDish"
TrackingProvider:
description: Rozvozová služba, přes kterou lze sledovat stav objednávky
type: string