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

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

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

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

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

    מיקומים פתוחים

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

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

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

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

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

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

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

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

    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: תוכנית קומה עם הזמנה פעילה אחת

    עכשיו משתמש מזמין את אחד המקומות. כשמתבצעת הזמנה, נשלח עדכון בזמן אמת כדי לעדכן את הזמינות. בפיד הזמינות היומי הבא, ההזמנה הזו אמורה להופיע. בפיד הזמינות של המוכרים האלה יהיה הפחתה של Spot ב-1 במשבצת של 1 בספטמבר 2018 בשעה 16:00 לפי שעון גריניץ'. המשבצת של 1 בספטמבר 2018 בשעה 20:00: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",
                }
              ]
    }
        

    חזרה

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

    • חזרה: ייצוג של משבצות זמינות שחוזרות על עצמן באופן עקבי.
    • חזרה_until_sec: חותמת הזמן לפי שעון UTC של שעת הסיום של המשבצת האחרונה שעדה הזמינות חוזרת.
    • חזרה_Every_sec: מספר השניות בין משבצות זמינות עוקבות. לדוגמה, אם return_every_sec = 1800 (30 דקות), ו-start_sec מתחיל ב-9:00, יחידות הקיבולת (Slot) יחזרו כל 30 דקות בשעה 9:00, 9:30, 10:00 וכו'.
      • הערה: אין צורך לציין spot_open ו-Spots_total. המערכת מניחה ששניהם הם 1, אלא אם יש אירוע schedule_exception.

    שיטת החזרה מציינת את הזמינות על בסיס יומי של שירותים שמתרחשים במרווחי זמן קבועים, לדוגמה, שירות שמתרחש בכל 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
                      }
                    }
                  ],
                }
              ]
        }