Zpět na domů

Výpočet pracovních dnů v SW pro žádosti

Článek popisuje implementaci výpočtu lhůt v pracovních dnech pro systémy zpracování žádostí. Jsou zvážena pravidla počítání, zobrazení čítače, příklady, backend-odtiene a strategie testování. Přístup vyvažuje systémovou logiku a UX.

Pracovní dny ve vývoji: lhůty a UX
Advertisement 728x90

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.

Google AdInline article slot
  • 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í).

Google AdInline article slot

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.

Google AdInline article slot

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

Advertisement 728x90

Číst dál