הגדרת הזמינות של פידים

בחירת פורמט זמינות

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

המדריך הבא יעזור לכם לקבוע איזה פורמט זמינות מתאים יותר:

  • במערכת שלכם, האם אתם מאחסנים זמינות כמשבצות זמן מפורשות, לדוגמה, 8:00 עד 8:30?
  • במערכת שלך, האם אתם מאחסנים את הזמינות בפורמט חוזר, כלומר, למוכרים יש שירותים שמתרחשים בתדירות עקבית עם סטיות קלות? לדוגמה, משבצות חוזרות על עצמן כל 15 דקות בין 9:00 ל-17:00, ורק מושב אחד פנוי בכל 15 דקות.
  • בכל הקשור לשירותים של המוכרים, האם אפשר להציג כמה מקומות פתוחים בכל פעם? לדוגמה, 30 מקומות פתוחים לכיתה
  • אף אחת מהאפשרויות שלמעלה אינה רלוונטית?
    • שימוש בנקודות פתוחות
    • הערה: אמנם השימוש בחזרות יעיל יותר ועלול להיות קטן יותר בפיד בגדלים קטנים יותר, אבל אם מודל הנתונים לא תומך באופן אוטומטי לחזרה, לא מומלץ להשתמש בחזרה, כי צריך לחשב מחדש את הערך של כל המשבצות ליום שלם בכל עדכון בזמן אמת.

    נקודות פתוחות

    הגדרות הפרמטרים:

    • spot_open: מספר הנקודות שזמינות כרגע ברשומת הזמינות הזו.
    • Spot_total: המספר הכולל של נקודות שיש למוכר להגדרה הזו, כולל אלו שלא זמינים.

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

    כשמתרחשת הזמנה, מספר ה-points_open צריך לרדת ב-1 דרך עדכון בזמן אמת (מספר ה-points_total צריך להישאר זהה). לאחר שה-points_open = 0, המשבצת לא אמורה להופיע יותר.

    שירותים לדוגמה

    שיעור יוגה או מכון יופי כוללים את תוכניות הקומה הבאות ואין הזמנות פעילות

    איור 1: תוכנית קומה ללא הזמנות פעילות

    פיד הזמינות של שני דוכנים אלה ייראה כך:

    JSON

        {
          "availability": [
                {
                  "spots_total": 6,
                  "spots_open": 6,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535817600, # Sept 1, 2018 4:00:00 PM GMT
                  "merchant_id": "1001"
                },
                {
                  "spots_total": 6,
                  "spots_open": 6,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535832000, # Sept 1, 2018 8:00:00 PM GMT
                  "merchant_id": "1001",
                }
              ]
        }
        

    שירותים לדוגמה עם הזמנה

    איור 2: תוכנית קומה עם הזמנה פעילה אחת

    עכשיו משתמש מזמין אחד מהמקומות. כשמתרחשת הזמנה, מתבצע עדכון בזמן אמת כדי לעדכן את הזמינות. בפיד הבא של זמינות יומית, ההזמנה הזו אמורה להופיע. פיד הזמינות של המוכרים האלה ירד ב-1.1 עבור מיקום המודעה במשבצת 1 בספטמבר 2018 בשעה 16:00. משבצת 1 בספטמבר 2018 בשעה 20:00 לפי שעון גריניץ' לא השתנתה.

    קטע קוד של פיד עם הזמנה

    JSON

        {
          "availability": [
                {
                  "spots_total": 6,
                  "spots_open": 5,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535817600, # Sept 1, 2018 4:00:00 PM GMT
                  "merchant_id": "1001"
                },
                {
                  "spots_total": 6,
                  "spots_open": 6,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535832000, # Sept 1, 2018 8:00:00 PM GMT
                  "merchant_id": "1001",
                }
              ]
    }
        

    חזרה

    הגדרות הפרמטרים

    • חזרה: הייצוג של משבצות זמינות חוזרות ועקביות.
    • Return_until_sec: חותמת זמן בשעון UTC של שעת הסיום של המשבצת האחרונה עד שהזמינות חוזרת על עצמה.
    • חזרה_every_sec: מספר השניות בין משבצות עוקבות לזמינות. לדוגמה, אם חזרת ב-back_every_sec = 1,800 (30 דקות), והפונקציה start_sec מתחילה ב-9:00, המשבצות יחזרו כל 30 דקות בשעה 9:00, 9:30, 10:00 וכו'.
      • הערה: אין צורך לציין את ה-points_open ו-spot_totals, שניהם נחשבים ל-1 אלא אם יש תזמון_חריג

    שיטת החזרה מציינת זמינות על בסיס יומי עבור שירותים שמתרחשים במרווחי זמן קבועים. לדוגמה, שירות שמתרחש בכל 30 דקות בין 9:00 ל-17:00 בכל יום. חזרה על החזרה מציינת את משך הזמן של מיקום המשבצת, בפעם הראשונה שמתרחשת במיקום, תדירות החזרה של המיקום הזה ובאותו היום. הערה: צריך לציין קבוצה חדשה של משבצות חוזרות לכל יום בנפרד. אם כבר הוזמנה לך משבצת זמן בטווח שעות מסוים, יהיה עליך לציין חריג בלוח הזמנים. לדוגמה, יש לחזור על כל מחצית שעה בין 9:00 ל-21:00, מלבד 11:00 עד 11:30. לכל שירות ייקבעו מועדי חזרה ותזמון משלו.

    שירותים לדוגמה

    למכון יופי יש את תוכנית הקומה הבאה ללא הזמנות פעילות

    איור 3: תוכניות קומה ללא הזמנות פעילות. ההנחה היא שנקודה אחת פתוחה לכל שירות (למשל: סאלי מספקת שירותי תספורת בכל 30 דקות, אבל היא יכולה להגיע רק ללקוח אחד בכל פעם.)

    פיד הזמינות של משבצת אחת במוכרים האלה ייראה כך:

    קטע קוד של פיד:

    JSON

        {
        "availability": [
              {
                "merchant_id": "1001",
                "service_id": "1001",  # haircut
                "start_sec": 1493888400, # May 4, 2017 9:00:00 AM GMT
                "duration_sec": 1800,
                "recurrence": {
                  "repeat_every_sec": 1800,
                  "repeat_until_sec": 1493915400 # May 4, 2017 4:30:00 PM GMT
                }
              }
            ]
        }
        

    שירותים לדוגמה עם הזמנה

    איור 4: תוכניות קומה עם הזמנה פעילה אחת. ההנחה היא שנקודה אחת פתוחה לכל שירות (למשל: סאלי מספקת שירותי תספורת בכל 30 דקות, אבל היא יכולה להגיע רק ללקוח אחד בכל פעם.)

    עכשיו נניח שמשתמש מזמין את תספורת של סאלי בשעה 12:30. כשמתרחשת הזמנה, מונפק עדכון בזמן אמת כדי לעדכן את הזמינות. בפיד הבא של הזמינות היומית, ההזמנה אמורה להופיע. בפיד הזמינות של המוכרים האלה יהיה חריג למועד שנקבע בין 12:30 ל-13:00 בשירות מסוים למשך 30 דקות.

    קטע קוד של פיד עם הזמנה:

    JSON

        {
          "availability": [
                {
                  "merchant_id": "1001",
                  "service_id": "1001",
                  "start_sec": 1493888400, # May 4, 2017 9:00:00 AM GMT
                  "duration_sec": 1800,
                  "recurrence": {
                    "repeat_every_sec": 1800,
                    "repeat_until_sec": 1493915400 # May 4, 2017 4:30:00 PM GMT
                  },
                  "schedule_exception": [
                    {
                      "time_range": {
                        "begin_sec": 1493901000, # May 4, 2017 12:30:00 PM GMT
                        "end_sec": 1493902800 # May 4, 2017 1:00:00 PM GMT
                      }
                    }
                  ],
                }
              ]
        }