feat: automatické sledování doručení objednávky přes Bolt Food
CI / Generate TypeScript types (push) Successful in 10s
CI / Server unit tests (push) Successful in 21s
CI / Build server (push) Successful in 24s
CI / Build client (push) Successful in 36s
CI / Playwright E2E tests (push) Successful in 1m25s
CI / Build and push Docker image (push) Successful in 43s
CI / Notify (push) Successful in 2s

Zakladatel skupiny může na stránce objednání vložit sdílecí odkaz
Bolt Food. Server pak každou minutu dotazuje veřejné Bolt API
a automaticky aktualizuje čas doručení skupiny (deliveryAt).
Sledování se samo ukončí po doručení, zrušení objednávky nebo
opakovaných chybách. Leader lease vytažena do znovupoužitelného
modulu leaderLease.ts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-06-10 12:22:07 +02:00
parent 1df21edc1a
commit 491ec25b52
12 changed files with 559 additions and 52 deletions
+2
View File
@@ -100,6 +100,8 @@ paths:
$ref: "./paths/groups/setState.yml"
/groups/updateTimes:
$ref: "./paths/groups/updateTimes.yml"
/groups/setBoltTracking:
$ref: "./paths/groups/setBoltTracking.yml"
/groups/updateFees:
$ref: "./paths/groups/updateFees.yml"
+21
View File
@@ -0,0 +1,21 @@
post:
operationId: setBoltTracking
summary: Nastaví nebo zruší sledování objednávky Bolt Food (pouze zakladatel).
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- id
properties:
id:
description: ID skupiny
type: string
shareUrl:
description: Sdílecí URL objednávky Bolt Food (https://food.bolt.eu/sharedActiveOrder/...). Prázdná hodnota sledování zruší.
type: string
responses:
"200":
$ref: "../../api.yml#/components/responses/ClientDataResponse"
+3
View File
@@ -786,6 +786,9 @@ OrderGroup:
qrGenerated:
description: Příznak, zda byly pro skupinu vygenerovány QR kódy (blokuje opakované generování)
type: boolean
boltTrackingToken:
description: Token sdíleného sledování objednávky Bolt Food (poslední segment share URL). Pokud je vyplněn, server automaticky aktualizuje deliveryAt.
type: string
# --- NEVYŘÍZENÉ QR KÓDY ---
PendingQr: