Предпразднства, попразднства и отдания двунадесятых праздников
Локальный рабочий первоисточник для расчётов API (без зависимости от внешнего сайта).
Цель документа
- Зафиксировать проблему, из-за которой были расхождения в датах отданий.
- Зафиксировать единый алгоритм, который теперь используется в коде.
- Сохранить текстовую (нормализованную) версию эталонной таблицы и примечаний к ней.
Источники
- Эталонная таблица предпразднств/попразднств/отданий (локально сохранённый текст).
- Дневные страницы эталонного календаря для валидации дат (
YYYY-MM-DD). - PDF-снимок страницы (предоставлен пользователем):
Таблица дней предпразднств, попразднств и отданий Двунадесятых праздников.pdf - Дата фиксации источника:
2026-02-22
Проблема, которую исправили
- В проекте одновременно существовали старые статические записи и новые вычисляемые правила.
- Для части праздников динамика была неполной, из-за чего отдание Сретения и связанные периоды давали расхождения (например,
2026-02-19vs2026-02-22). - Были расхождения по именованиям (варианты формулировок), из-за чего проверки на совпадение с эталонным источником работали нестабильно.
- Для Богоявления на
18 январястраница дня показывала толькоНавечерие, а алгоритм добавлял ещё иПредпразднство.
Единый алгоритм (текущее состояние)
Реализация: functions/_shared/data-loader.ts.
1. Общий принцип
- Все предпразднства, попразднства и отдания из таблицы считаются динамически.
- Статические дубль-записи из
data/source.csvдля этих периодов удалены. - Перед добавлением динамики одноимённые старые записи отфильтровываются по имени (включая legacy-варианты), чтобы в году не было повторов.
2. Неподвижные праздники (новый стиль, нормализованная таблица)
| Праздник | Дата праздника | Предпразднство | Попразднство + отдание | Отдание |
|---|---|---|---|---|
| Рождество Пресвятой Богородицы | 21 сентября | 1 день | 4 дня (включая отдание) | 25 сентября |
| Воздвижение Креста Господня | 27 сентября | 1 день | 7 дней (включая отдание) | 4 октября |
| Введение во Храм Пресвятой Богородицы | 4 декабря | 1 день | 4 дня (включая отдание) | 8 декабря |
| Рождество Христово | 7 января | 5 дней | 6 дней (включая отдание) | 13 января |
| Крещение Господне (Богоявление) | 19 января | 4 дня в таблице; в API по страницам дня эталонного источника: 15-17 января | 8 дней (включая отдание) | 27 января |
| Сретение Господне | 15 февраля | 1 день | переменно (0-7 дней) | переменно: 16-23 февраля |
| Благовещение Пресвятой Богородицы | 7 апреля | 1 день | 1 день (с отданием) | 8 апреля |
| Преображение Господне | 19 августа | 1 день | 7 дней (включая отдание) | 26 августа |
| Успение Пресвятой Богородицы | 28 августа | 1 день | 8 дней (включая отдание) | 5 сентября |
3. Подвижные праздники (нормализованная таблица)
| Праздник | Всего дней | Предпразднство | Попразднство + отдание | Отдание |
|---|---|---|---|---|
| Вход Господень в Иерусалим | 1 | нет | нет | нет |
| Вознесение Господне | 10 | 1 день | 8 дней (включая отдание) | пятница 7-й седмицы по Пасхе |
| День Святой Троицы (Пятидесятница) | 7 | нет | 6 дней (включая отдание) | суббота после праздника |
Примечание по API: на страницах дня эталонного источника период после Пятидесятницы часто размечен как День Святого Духа / Троицкая седмица; это учитывается в проверке соответствия.
Примечания из таблицы (нормализованный текст)
[1] Сретение Господне: перенос отдания
Если Сретение попадает в предвеликопостный цикл, отдание переносится:
- На Неделю блудного сына, понедельник или вторник мясопустной седмицы: отдание в пятницу той же мясопустной седмицы.
- На среду-субботу мясопустной седмицы: отдание во вторник сырной седмицы.
- На Неделю мясопустную или понедельник сырной седмицы: отдание в сырный четверг.
- На вторник или среду сырной седмицы: отдание в сырную субботу.
- На четверг-пятницу сырной седмицы: отдание в Сыропустную неделю.
- На сырную субботу: отдание не совершается (праздник без отдания).
- На Сыропустную неделю: праздник однодневный, без попразднства и без отдания.
[2] Благовещение: особые случаи в таблице
В таблице указано:
- Если Благовещение в Лазареву субботу: нет попразднства.
- Если Благовещение в Вербное воскресенье, Страстную или Светлую седмицу: нет предпразднства и попразднства, только день праздника.
Практическая фиксация для текущего API: сверка страниц эталонного источника (включая 2012, 2018, 2024 и диапазон 2026-2049) подтверждает отображение Предпразднства на 6 апреля и Отдания на 8 апреля. Поэтому текущая реализация следует фактической разметке страниц дня эталонного источника.
Что проверено после исправления
- Локальные автотесты:
calendar/year includes all feast periods from the Typikon table without duplicates (2026–2049)- проверка отдания Сретения и дат Благовещения по годам
2026-2049 - отдельная проверка Богоявления вокруг
18 января
- Внешняя валидация по страницам эталонного источника
YYYY-MM-DDдля2026-2049:- проверено
1923ожидаемых вхождения периодов; - несовпадений:
0.
- проверено
Связанные файлы реализации
functions/_shared/data-loader.tstests/api.test.tsscripts/validate-source-csv.tsdata/source.csv