מתודולוגיית לוח השנה שלנו
מנוע לוח השנה שלנו משלב אלגוריתמים אסטרונומיים ודתיים דטרמיניסטיים יחד עם אימות מתמשך מול חקיקה ממשלתית ראשית וצוَיִים סטטוטוריים.
1. מנוע רב-לוח שנה דטרמיניסטי
חגים ציבוריים ברחבי العالم עוקבים אחר מערכות מתמטיות ותרבותיות מגוונות. הצינור שלנו ממדל ארבעה מנגנוני לוח שנה עיקריים:
תאריכים גרגוריאניים קבועים: ימים לאומיים וציון דרך היסטורי הנופלים על תאריכי לוח שנה קבועים (לדוגמה: 4 ביולי, 1 בינואר).
חישובים אסטרונומיים ושוויוניים: היפוכי עונות, נקודות שוויון ומועדים סולאריים המחושבים באמצעות קואורדינטות שמימיות מדויקות.
לוחות שנה ירחיים וירחיים-שמשיים: לוח השנה ההიג'רי האסלאמי, ראש השנה הסיני, דיוואלי ומועדים בודהיסטיים המחושבים באמצעות מודלים סטנדרטיים של ראות מופעי הירח ומאומתים מול הצהרות של רשויות דת לאומיות.
אלגוריתמים של Computus: מחזורי חג הפסחא המערביים (הגרגוריאניים) והמזרחיים האורתודอกסיים (היוליאניים) והחגים הניידים התלויים בהם (יום שישי הטוב, עליית השמים, יום שני של רוחות הקודש, חג לחם הקודש).
2. חקיקה סטטוטורית וצוֹיִים רשמיים
מודלים מתמטיים מספקים תאריכים גולמיים, אך חוקים סטטוטוריים קובעים את המנוחה המשפטית. אנו מצליבים כל מופע מחושב מול מכשירים משפטיים עיקריים: קודי עבודה לאומיים, חוקים פרלמנטריים, רשומות מדינה רשמיות וצווי הרשות המבצעת.
במקום שבו ספריות סטנדרטיות מתעלמות מרפורמות סטטוטוריות או משתמשות בכללים מיושנים, מרשם עקיפת הידני שלנו (data/holiday-overrides.ts) אוכף תיקונים סטטוטוריים מאומתים.
3. ימים חלופיים ומידול הזזת סופי שבוע
אחד היבטים הקריטיים ביותר בתכנון חגים הוא קביעת מה קורה כאשר חג סטטוטורי חופף לסוף שבוע.
המנוע שלנו מקודד באופן שיטתי כללי פיצוי לאומיים: מעברים אוטומטיים ליום שני העוקב (לדוגמה: בריטניה, אוסטרליה, ארה"ب), מעברים ליום שישי הקודם, או כללי יום העבודה הזמין הבא (לדוגמה: אלבניה, דרום אפריקה), המבטיחים ספירת ימי עבודה מדויקת.
4. ביקורות חקיקה מתמשכות ובדיקות רגרסיה
כל לוח שנה של מדינה כפוף לאימות תמונת מצב אוטומטית (npm run holidays:validate:snapshots) כדי למנוע רגרסיה, בעוד שצינור הניטור המתמשך שלנו עוקב אחר חוקים שנחקקו לאחרונה, חגי בנק חד-פעמיים וצווי מלוכה או נשיאות ברחבי העולם.