Praktický kurz / Kapitola 05 / Termín s toleranciou PC05-L02 · samostatné riešenie
Termín s toleranciou Pripočítate konfigurovateľnú toleranciu k termínu a porovnáte prijatý čas.
Praktický CEL 4 testovacie prípady Zdokumentované
Čo si precvičím? Viete bezpečne kombinovať timestamp, duration a hraničný operátor <=.
Ako sa riešenie overí? Jeden výraz musí vrátiť očakávaný výsledok pre všetky štyri vstupy JSON.
Kedy som hotový? Keď prejdú všetky testy a viete vysvetliť každú podmienku vo výraze.
Slovná úloha Prijatá položka je včas, keď dorazí najneskôr v termíne predĺženom o nastavenú toleranciu.
Presné požiadavky Čas prijatia a termín spracujte ako časové pečiatky. Toleranciu spracujte ako trvanie. Pripočítajte toleranciu k termínu. Zahrňte presný posledný prípustný okamih. Požadovaný výsledok Napíšte jeden výraz CEL. Musí vrátiť očakávanú hodnotu aj typ pre všetky štyri pripravené vstupy JSON. Vstupy nemeňte tak, aby prešiel neúplný výraz.
Odporúčaný postup Každú očíslovanú požiadavku preložte na jednu malú logickú podmienku. Spustite počiatočný výraz a zistite, ktoré prípady neprešli. Pridávajte vždy jednu podmienku a znova spustite celú testovaciu sadu. Úlohu označte za dokončenú až vtedy, keď viete vysvetliť každý operátor a každú hranicu. Váš výraz CEL Pomôcka: Najprv vytvorte posledný prípustný okamih pripočítaním trvania.
Spustiť všetky testy Obnoviť výrazTip: všetky testy spustíte aj klávesmi Ctrl/⌘ + Enter. Pred termínom Zatiaľ nespustený Očakávané: true · bool
Zobraziť vstup JSON {
"receivedAt": "2026-07-23T09:50:00Z",
"deadline": "2026-07-23T10:00:00Z",
"grace": "15m"
}Po termíne v tolerancii Zatiaľ nespustený Očakávané: true · bool
Zobraziť vstup JSON {
"receivedAt": "2026-07-23T10:10:00Z",
"deadline": "2026-07-23T10:00:00Z",
"grace": "15m"
}Presný koniec tolerancie Zatiaľ nespustený Očakávané: true · bool
Zobraziť vstup JSON {
"receivedAt": "2026-07-23T10:15:00Z",
"deadline": "2026-07-23T10:00:00Z",
"grace": "15m"
}Po tolerancii Zatiaľ nespustený Očakávané: false · bool
Zobraziť vstup JSON {
"receivedAt": "2026-07-23T10:15:01Z",
"deadline": "2026-07-23T10:00:00Z",
"grace": "15m"
}Výsledok testov Zatiaľ nespustený
Rovnaký výraz sa spustí nad každým prípadom. Testovacie údaje sú pevné, takže nemožno vynechať hranice ani chybové situácie.
Vysvetlené riešenie Zobraziť celý výraz timestamp(receivedAt) <= timestamp(deadline) + duration(grace)Prečo riešenie funguje timestamp(deadline) + duration(grace) vypočíta predĺžený termín.Výsledkom súčtu je časová pečiatka. timestamp(receivedAt) vytvorí porovnateľný okamih.<= zahrnie prijatie presne na hranici tolerancie.Čo dokazujú testovacie prípady Pred termínom: očakáva sa true (bool).Po termíne v tolerancii: očakáva sa true (bool).Presný koniec tolerancie: očakáva sa true (bool).Po tolerancii: očakáva sa false (bool).Prípady sú zámerne rozdielne. Riešenie, ktoré prejde iba prvým prípadom, ešte nezapracovalo celé pravidlo.
Častá chyba Výraz neprispôsobujte iba prvému úspešnému vstupu. Požiadavka je zapracovaná až vtedy, keď kladný, záporný aj hraničný prípad vytvoria určený výsledok.
Kontrolná otázka Viete ukázať presnú časť riešenia, ktorá spôsobí zlyhanie každého nepravdivého testu? Ak dve rozdielne zlyhania závisia od rovnakej podmienky, vysvetlite prečo.
Hlavná myšlienka Viete bezpečne kombinovať timestamp, duration a hraničný operátor <=.
Zdroje CEL-DEV — oficiálny prehľad CEL.CEL-LANG — oficiálna definícia jazyka CEL pre operátory, typy, makrá, prítomnosť, reťazce a časové hodnoty použité v tejto úlohe.← Udalosť v časovom okne Všetky udalosti pred termínom →