Наша методика составления календарей

Наш календарный механизм сочетает детерминированные астрономические и религиозные алгоритмы с постоянной проверкой по первичным государственным законам и нормативным постановлениям.

1. Детерминированный механизм для нескольких календарей

Государственные праздники по всему миру определяются разными математическими и культурными системами. Наш конвейер учитывает четыре основных календарных механизма:

Фиксированные даты григорианского календаря: национальные дни и исторические годовщины, приходящиеся на неизменные даты календаря (например, 4 июля, 1 января).

Астрономические расчёты и расчёты равноденствий: солнцестояния, равноденствия и солнечные термины, вычисленные с использованием точных небесных координат.

Лунные и лунно-солнечные календари: исламский календарь хиджры, китайский Новый год по лунному календарю, Дивали и буддийские праздники, рассчитанные по стандартным моделям видимости фаз Луны и сверенные с заявлениями национальных религиозных органов.

Алгоритмы вычисления Пасхи: циклы западной (григорианской) и восточной православной (юлианской) Пасхи, а также зависящие от них переходящие праздники (Страстная пятница, Вознесение, понедельник после Троицы, Праздник Тела и Крови Христовых).

2. Законодательные нормы и официальные постановления

Математические модели дают исходные даты, но закон определяет официальные выходные. Мы сверяем каждое рассчитанное событие с первичными правовыми актами: национальными трудовыми кодексами, парламентскими законами, официальными государственными вестниками и распоряжениями органов исполнительной власти.

Если стандартные библиотеки не учитывают изменения в законодательстве или применяют устаревшие правила, наш реестр ручных переопределений (data/holiday-overrides.ts) обеспечивает проверенные законодательные корректировки.

3. Моделирование переноса выходных и сдвига праздничных дней

Один из важнейших аспектов планирования праздников — определить, что происходит, когда установленный законом выходной совпадает с выходным днём.

Наш механизм систематически учитывает национальные правила компенсации: автоматический перенос на следующий понедельник (например, в Великобритании, Австралии и США), перенос на предшествующую пятницу или перенос на следующий доступный рабочий день (например, в Албании и Южной Африке). Это позволяет точно подсчитывать рабочие дни.

4. Постоянный аудит законодательства и регрессионное тестирование

Календарь каждой страны проходит автоматическую проверку по эталонным снимкам (npm run holidays:validate:snapshots), чтобы предотвращать регрессии; наша система постоянного мониторинга отслеживает новые законы, разовые банковские выходные и королевские или президентские постановления по всему миру.