Nasza metodyka kalendarza

Nasz silnik kalendarzowy łączy deterministyczne algorytmy astronomiczne i religijne z ciągłą weryfikacją w oparciu o pierwotne akty prawne i dekrety rządowe.

1. Deterministyczny silnik obsługujący wiele kalendarzy

Święta państwowe na całym świecie wynikają z różnych systemów matematycznych i kulturowych. Nasz proces modeluje cztery podstawowe mechanizmy kalendarzowe:

Stałe daty gregoriańskie: dni państwowe i rocznice historyczne przypadające na stałe daty w kalendarzu (np. 4 lipca, 1 stycznia).

Obliczenia astronomiczne i równonocowe: przesilenia, równonoce i terminy słoneczne wyznaczane na podstawie precyzyjnych współrzędnych ciał niebieskich.

Kalendarze księżycowe i księżycowo-słoneczne: islamski kalendarz hidżry, chiński Nowy Rok Księżycowy, Diwali i święta buddyjskie obliczane za pomocą standardowych modeli widoczności faz Księżyca i weryfikowane na podstawie obwieszczeń krajowych władz religijnych.

Algorytmy obliczania daty Wielkanocy: cykle Wielkanocy zachodniej (gregoriańskiej) i prawosławnej (juliańskiej) oraz zależne od nich święta ruchome (Wielki Piątek, Wniebowstąpienie, Poniedziałek Zielonoświątkowy, Boże Ciało).

2. Przepisy ustawowe i oficjalne dekrety

Modele matematyczne wyznaczają wstępne daty, ale o ustawowych dniach wolnych decydują przepisy. Każde obliczone święto sprawdzamy w pierwotnych aktach prawnych: krajowych kodeksach pracy, ustawach parlamentarnych, oficjalnych dziennikach urzędowych i rozporządzeniach władz wykonawczych.

Gdy standardowe biblioteki pomijają zmiany ustawowe lub korzystają z nieaktualnych reguł, nasz ręczny rejestr nadpisywania (data/holiday-overrides.ts) wprowadza zweryfikowane korekty prawne.

3. Modelowanie dni zastępczych i przesunięć weekendowych

Jedną z najważniejszych kwestii przy planowaniu dni wolnych jest ustalenie, co się dzieje, gdy święto ustawowe przypada w weekend.

Nasz silnik systematycznie uwzględnia krajowe zasady rekompensaty: automatyczne przeniesienie na następny poniedziałek (np. w Wielkiej Brytanii, Australii i USA), przeniesienie na poprzedzający piątek lub zasady wyznaczające najbliższy dostępny dzień roboczy (np. w Albanii i Republice Południowej Afryki). Dzięki temu można dokładnie obliczyć liczbę dni roboczych.

4. Ciągłe audyty prawne i testy regresji

Każdy kalendarz krajowy przechodzi automatyczną walidację na podstawie migawek (npm run holidays:validate:snapshots), która zapobiega regresjom. Nasz proces ciągłego monitorowania śledzi przy tym nowo uchwalone przepisy, jednorazowe dni wolne od pracy w bankach oraz dekrety królewskie i prezydenckie na całym świecie.