fix: přesnější stav kurýra u sledování Wolt
CI / Generate TypeScript types (push) Successful in 10s
CI / Server unit tests (push) Successful in 24s
CI / Build server (push) Successful in 29s
CI / Build client (push) Successful in 40s
CI / Playwright E2E tests (push) Successful in 1m46s
CI / Build and push Docker image (push) Successful in 48s
CI / Notify (push) Successful in 3s
CI / Generate TypeScript types (push) Successful in 10s
CI / Server unit tests (push) Successful in 24s
CI / Build server (push) Successful in 29s
CI / Build client (push) Successful in 40s
CI / Playwright E2E tests (push) Successful in 1m46s
CI / Build and push Docker image (push) Successful in 48s
CI / Notify (push) Successful in 3s
Wolt hlásí stav podniku, ne rozvozu — status zůstane na "ready" i celou dobu, co kurýr objednávku veze. Vyzvednutí proto poznáme podle pickup_eta: dokud je v budoucnosti, jídlo ještě čeká v podniku, po vyzvednutí se ustálí na skutečném čase. Dřív se stav odvozoval jen z příznaků kurýra, takže objednávka zůstala viset na kroku "Vyzvedávání", i když už byla na cestě. Kurýr má nově tři odvozené stavy: assigned (ještě nevyzvedl), delivering (veze ji k nám) a delivering_other (veze ji, ale nejdřív doručuje cizí objednávku — Wolt objednávky spojuje a kurýr se pak na mapě vzdaluje). Oba stavy delivering* znamenají krok "Na cestě", tooltip u nich vysvětlí objížďku.
This commit is contained in:
@@ -52,9 +52,9 @@ const BOLT_COURIER_STATE_TO_STEP: Record<string, number> = {
|
||||
|
||||
/**
|
||||
* Známé stavy objednávky z Wolt tracking API → index kroku ve stepperu.
|
||||
* Stav "ready" znamená hotové jídlo čekající na kurýra, proto zůstává v „Přípravě"
|
||||
* a na „Vyzvedávání" se posune, až když je kurýr přiřazený. Že objednávku kurýr
|
||||
* skutečně veze, se pozná až ze stavu kurýra 'delivering' (viz trackingProviders.ts).
|
||||
* Pozor: Wolt hlásí stav podniku, ne rozvozu — "ready" (jídlo hotové) zůstává
|
||||
* i celou dobu, co kurýr objednávku veze. Kroky „Vyzvedávání" a „Na cestě" proto
|
||||
* neurčuje status, ale odvozený stav kurýra (viz trackingProviders.ts).
|
||||
*/
|
||||
const WOLT_STATE_TO_STEP: Record<string, number> = {
|
||||
received: 0,
|
||||
@@ -70,6 +70,13 @@ const WOLT_STATE_TO_STEP: Record<string, number> = {
|
||||
delivered: 4,
|
||||
};
|
||||
|
||||
/** Popis odvozeného stavu kurýra u Woltu do tooltipu. */
|
||||
const WOLT_COURIER_INFO: Record<string, string> = {
|
||||
assigned: 'kurýr přiřazen',
|
||||
delivering: 'kurýr veze objednávku',
|
||||
delivering_other: 'kurýr veze objednávku, ale nejdřív doručuje jinou',
|
||||
};
|
||||
|
||||
/** Stavy, ve kterých už jídlo čeká připravené na kurýra. */
|
||||
const PICKUP_READY_STATES: Record<TrackingProvider, Set<string>> = {
|
||||
bolt: new Set(['waiting_delivery', 'ready_for_pickup', 'waiting_courier', 'waiting_pickup']),
|
||||
@@ -92,8 +99,9 @@ function stepForOrderState(provider: TrackingProvider, state: string): number |
|
||||
function stepForCourierState(provider: TrackingProvider, state?: string): number {
|
||||
if (!state) return 0;
|
||||
const s = state.toLowerCase();
|
||||
// Wolt má jen odvozené stavy: 'assigned' o kroku nic neříká, 'delivering' = veze naši objednávku
|
||||
if (provider === 'wolt') return s === 'delivering' ? 3 : 0;
|
||||
// Wolt má jen odvozené stavy: 'assigned' o kroku nic neříká, 'delivering'
|
||||
// i 'delivering_other' znamenají, že kurýr naši objednávku už veze
|
||||
if (provider === 'wolt') return s.startsWith('delivering') ? 3 : 0;
|
||||
if (s in BOLT_COURIER_STATE_TO_STEP) return BOLT_COURIER_STATE_TO_STEP[s];
|
||||
if (/picked|client|delivering|transport/.test(s)) return 3;
|
||||
return 0;
|
||||
@@ -127,7 +135,7 @@ export default function OrderProgress({ provider, state, courierState, tracking
|
||||
const foodReadyForPickup = PICKUP_READY_STATES[provider]?.has(state.toLowerCase());
|
||||
if (step < 3 && courierAtProvider && foodReadyForPickup) step = 2;
|
||||
const courierInfo = provider === 'wolt'
|
||||
? (courierState === 'delivering' ? 'kurýr veze objednávku' : 'kurýr přiřazen')
|
||||
? WOLT_COURIER_INFO[courierState ?? ''] ?? 'kurýr přiřazen'
|
||||
: `kurýr: ${courierState}`;
|
||||
const rawInfo = courierState ? `${state} / ${courierInfo}` : state;
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user