feat: sledování objednávek přes Wolt
CI / Generate TypeScript types (push) Successful in 13s
CI / Server unit tests (push) Successful in 25s
CI / Build server (push) Successful in 28s
CI / Build client (push) Successful in 41s
CI / Playwright E2E tests (push) Successful in 1m47s
CI / Build and push Docker image (push) Successful in 53s
CI / Notify (push) Successful in 2s

Vedle Bolt Food jde nově sledovat i objednávka z Woltu — stačí u objednané
skupiny vložit odkaz z track.wolt.com. Logika sledování je zobecněná do
registru rozvozových služeb (trackingProviders.ts): každá služba umí vytáhnout
kód ze sdílecího odkazu a dotázat se svého API, scheduler i stepper jsou společné.

- pole skupiny bolt* přejmenována na tracking* + nové trackingProvider
- endpoint /groups/setBoltTracking → /groups/setTracking
- Wolt: čas doručení z delivery_eta v časové zóně objednávky, 404 ukončí
  sledování, stav kurýra odvozen z is_delivering/is_delivering_other_order
- DEV simulace zůstává jen pro Bolt Food
This commit is contained in:
batmanisko committed 2026-08-24 11:27:56 +02:00
1 parent eeb1630391
commit 5c048fe1f1
25 files changed
+1326 -869

No files matched your search

+6 -3
View File
@@ -231,9 +231,12 @@ const OBJEDNANI_PATH = '/objednani';
/**
* Odešle push notifikaci o doručení skupinové objednávky členům skupiny,
* kteří si to zapnuli v nastavení. Zakladatel skupiny notifikaci nedostává —
* ten je o doručení informován přímo aplikací Bolt.
* ten je o doručení informován přímo aplikací rozvozové služby.
*
* Klíč nastavení zůstal boltDeliveredPush z doby, kdy sledování uměl jen Bolt Food —
* přejmenování by uživatelům zahodilo už uložené zapnutí.
*/
export async function notifyBoltDelivered(groupName: string, memberLogins: string[], creatorLogin: string): Promise<void> {
export async function notifyOrderDelivered(groupName: string, memberLogins: string[], creatorLogin: string): Promise<void> {
const recipients: string[] = [];
for (const login of memberLogins) {
if (login === creatorLogin) continue;
@@ -245,7 +248,7 @@ export async function notifyBoltDelivered(groupName: string, memberLogins: strin
await sendPushToLogins(recipients, {
title: 'Luncher',
body: `Objednávka „${groupName}" byla doručena!`,
tag: `bolt-delivered-${groupName}`,
tag: `order-delivered-${groupName}`,
url: OBJEDNANI_PATH,
});
}