Výpočet lhůt v pracovních dnech pro systémy zpracování žádostí
Systémy zpracování žádostí vyžadují pro přesný výpočet lhůt počítání pracovních dnů namísto kalendářních. Počítání začíná dnem zveřejnění v pracovní době nebo nejbližším pracovním dnem při zveřejnění mimo rozvrh. Kalendář se automaticky načítá z externí služby při startu a denně se kontroluje na přítomnost dat pro aktuální a následující rok. Bez kalendáře se použije fallback na kalendářní dny.
Registrace probíhá okamžitě při zveřejnění, bez čekání na pracovní den. Například: zveřejnění ve 23:00 pracovního dne posune začátek na následující pracovní den; v 06:00 téhož dne zůstává aktuálním dnem, pokud rozvrh začíná později.
Pravidla zobrazení počítadla
Počítadlo ukazuje počet plných uplynulých pracovních dnů. Bez ohledu na čas zveřejnění se v den začátku lhůty zobrazuje 0/N.
- Den zveřejnění v pracovní době: 0/N do 00:00 následujícího dne.
- Zveřejnění mimo rozvrh: 0/N do 00:00 prvního pracovního dne.
Zvýšení počítadla probíhá v 00:00 po dokončení plného pracovního dne. Zpoždění se zaznamená při hodnotě ≥ N (například 5/5).
Alternativy zamítnuté při diskusi
- Počítadlo 1/N od okamžiku zveřejnění – komplikuje vnímání plných dnů.
- Zvýšení na konci pracovního dne – ignoruje zpoždění zaměstnanců.
- Zpoždění po skončení pracovního dne – neintuitivní pro 17:59 vs 18:01.
Příklady výpočtů
Příklad 1: Zveřejnění 1. ledna (volno), první pracovní den 12. ledna, termín 16. ledna (5 dnů). Zpracování 13. ledna – počítadlo 1/5 (plný den: pouze 12. ledna).
Příklad 2: 2 dny na zpracování, zveřejnění v pracovní den v 09:00 (pondělí). Pondělí: 0/2; úterý: 1/2; půlnoc úterý: 2/2 (zpoždění).
Příklad 3: Stejný úkol, zveřejnění ve 20:00 pondělí. Pondělí: 0/2; úterý: 0/2; středa: 1/2; půlnoc středy: 2/2.
Časová pásma jsou pro jednoduchost sjednocena podle serverového času.
Detaily implementace v backendu
- Ukládejte kalendář do mezipaměti: aktuální rok + následující (s čištěním starých).
- Uchovávejte v databázi hodnoty počítadla a původní lhůtu pro každou žádost – minimalizuje přepočty.
- Uchovávejte historii lhůt: samostatná tabulka pro konfigurace podle typů/období nebo sloupec u entity.
Aktualizace kalendáře: API požadavky při spuštění, denně v 00:00.
Testování klíčových scénářů
Otestujte chování v reálném čase nebo simulujte přes databázi/API:
- Běžný pracovní den.
- Volný den.
- Večer pracovního dne (po rozvrhu).
- Absence kalendáře – fallback a automatická aktualizace.
- Zpoždění a běžné lhůty.
- Zatížení: více kalendářů za roky.
- Spící API služby.
Co je důležité
- Počítání začíná dnem zveřejnění v rozvrhu nebo nejbližším pracovním dnem.
- Počítadlo: plné uplynulé dny, začátek s 0/N.
- Zpoždění: ≥ N v 00:00 po termínu.
- Mezipaměť a fixace v databázi snižují zátěž.
- Testujte hraniční případy: volné dny, večery, absence dat.
— Editorial Team
Zatím žádné komentáře.