Наша методика составления календарей
Наш календарный механизм сочетает детерминированные астрономические и религиозные алгоритмы с постоянной проверкой по первичным государственным законам и нормативным постановлениям.
1. Детерминированный механизм для нескольких календарей
Государственные праздники по всему миру определяются разными математическими и культурными системами. Наш конвейер учитывает четыре основных календарных механизма:
Фиксированные даты григорианского календаря: национальные дни и исторические годовщины, приходящиеся на неизменные даты календаря (например, 4 июля, 1 января).
Астрономические расчёты и расчёты равноденствий: солнцестояния, равноденствия и солнечные термины, вычисленные с использованием точных небесных координат.
Лунные и лунно-солнечные календари: исламский календарь хиджры, китайский Новый год по лунному календарю, Дивали и буддийские праздники, рассчитанные по стандартным моделям видимости фаз Луны и сверенные с заявлениями национальных религиозных органов.
Алгоритмы вычисления Пасхи: циклы западной (григорианской) и восточной православной (юлианской) Пасхи, а также зависящие от них переходящие праздники (Страстная пятница, Вознесение, понедельник после Троицы, Праздник Тела и Крови Христовых).
2. Законодательные нормы и официальные постановления
Математические модели дают исходные даты, но закон определяет официальные выходные. Мы сверяем каждое рассчитанное событие с первичными правовыми актами: национальными трудовыми кодексами, парламентскими законами, официальными государственными вестниками и распоряжениями органов исполнительной власти.
Если стандартные библиотеки не учитывают изменения в законодательстве или применяют устаревшие правила, наш реестр ручных переопределений (data/holiday-overrides.ts) обеспечивает проверенные законодательные корректировки.
3. Моделирование переноса выходных и сдвига праздничных дней
Один из важнейших аспектов планирования праздников — определить, что происходит, когда установленный законом выходной совпадает с выходным днём.
Наш механизм систематически учитывает национальные правила компенсации: автоматический перенос на следующий понедельник (например, в Великобритании, Австралии и США), перенос на предшествующую пятницу или перенос на следующий доступный рабочий день (например, в Албании и Южной Африке). Это позволяет точно подсчитывать рабочие дни.
4. Постоянный аудит законодательства и регрессионное тестирование
Календарь каждой страны проходит автоматическую проверку по эталонным снимкам (npm run holidays:validate:snapshots), чтобы предотвращать регрессии; наша система постоянного мониторинга отслеживает новые законы, разовые банковские выходные и королевские или президентские постановления по всему миру.