דלג לתוכן הראשי

חלון זמן לביצוע (חלון ביצוע)

חלון הזמן לביצוע (או חלון הביצוע) מגדיר את התקופה שבה כרטיס תחזוקה מתוכנן נחשב לתקף ויש להשלימו. חלון זה מבטיח כי משימות התחזוקה מבוצעות בטווח זמן סביר ביחס למועד המתוכנן הבא שלהן.


סקירה כללית

לכל כרטיס תחזוקה מתוכנן יש חלון ביצוע רשמי. אם כרטיס לא יושלם בתוך חלון זה, הוא עשוי להיות מסומן כפג תוקף או כרטיס שדולג (בהתאם להגדרות המערכת), מכיוון שהוא כבר אינו רלוונטי לאור מחזור התחזוקה המתוכנן הבא.

החלון מתחיל ב-scheduled_date של הכרטיס ומסתיים ב-execution_window_end_date המחושב.


לוגיקה מפורטת

המערכת מחשבת את תאריך סיום החלון לפי סדר העדיפויות והכללים הבאים:

1. עקיפה ידנית (execution_window_days)

אם מוגדר מספר ימים ספציפי בתבנית התחזוקה או בכרטיס, המערכת משתמשת בו כעקיפה ישירה.

  • נוסחה: תאריך מתוכנן + execution_window_days

2. משימות במרווחי זמן ארוכים (12 שבועות ומעלה)

עבור משימות תחזוקה המתרחשות בתדירות נמוכה (המוגדרות כמרווח חזרתיות של 12 שבועות ומעלה), המערכת מחילה חלון בטיחות קבוע.

  • משך החלון: 30 ימים קבועים.
  • נוסחה: תאריך מתוכנן + 30 ימים

3. חלון מבוסס מחזור (סטנדרטי)

עבור משימות תדירות סטנדרטיות, החלון מתוכנן להיסגר בדיוק ברגע שבו המועד הבא של התחזוקה מתוכנן להתחיל. זה מונע חפיפה של כרטיסים עבור אותה משימה.

  • משך החלון: משתנה, מבוסס על התאריך המתוכנן הבא.
  • נוסחה: תאריך מתוכנן + (הזמן עד למועד הבא)

כיצד מחושב "המועד הבא":

המערכת בוחנת את כל דפוסי החזרתיות הקשורים לתבנית ומחשבת את התאריך המוקדם ביותר שמופיע לאחר התאריך המתוכנן של הכרטיס הנוכחי.


מימוש טכני

רכיבי ליבה

  • src/utils/execution-window.js: מכיל את הלוגיקה העיקרית לחישוב תאריך סיום החלון.
  • calculateExecutionWindowEnd(): הפונקציה הראשית שקובעת איזו לוגיקה להחיל על סמך תצורת התבנית.
  • calculateNextOccurrenceDate(): פונקציית עזר המחפשת קדימה (עד שנה) כדי למצוא את אירוע התחזוקה הבא.

קטע לוגיקה מרכזי

if (hasLongInterval) {
// מרווחים של 12 שבועות ומעלה מקבלים חלון קבוע של 30 יום
return windowEnd + 30 days;
} else {
// משימות סטנדרטיות מסתיימות כאשר המשימה הבאה מתוכננת להתחיל
return calculateNextOccurrenceDate(scheduledDate, recurrencePatterns);
}

דוגמאות

דוגמה 1: תחזוקה שבועית

  • לוח זמנים: בכל יום שני בשעה 08:00 בבוקר.
  • הכרטיס הנוכחי: יום שני, 1 בינואר.
  • המועד הבא: יום שני, 8 בינואר.
    • חלון ביצוע: 1 בינואר עד 8 בינואר (7 ימים).

דוגמה 2: תחזוקה בתדירות נמוכה (שנתית/חציונית)

  • לוח זמנים: כל 26 שבועות (6 חודשים).
  • הכרטיס הנוכחי: 1 בינואר.
  • הכלל שהוחל: מרווח ארוך (26 >= 12).
    • חלון ביצוע: 1 בינואר עד 31 בינואר (30 ימים קבועים).

דוגמה 3: דפוסים מרובים

  • לוח זמנים א': כל 4 שבועות.
  • לוח זמנים ב': כל 12 שבועות.
  • הכרטיס הנוכחי: (מלוח זמנים א') 1 בינואר.
  • המועד הבא: לוח זמנים ב' עשוי להתרחש ב-15 בינואר.
    • חלון ביצוע: 1 בינואר עד 15 בינואר (מסתיימת במועד הבא המוקדם ביותר).