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.