建構動態饋給中的供應情形

選擇可用性格式

您可以透過兩種方式指定可用性資料:(1) Spots Open 或 (2) Recurrence。請僅選擇一種適用於所有商家和服務。選取一種方法後,就必須完全整合該方法 (動態饋給、預訂伺服器和即時更新)。

下列指南可協助您判斷哪種可用性格式較為合適:

  • 您是否已將可用性儲存為明確運算單元,例如早上 8:00 到 8:30?
  • 系統是否以週期性格式儲存可用性,這代表商家的服務頻率是否一致且有些微差異?舉例來說,每 15 分鐘從上午 9 點到下午 5 點重複,因此每 15 分鐘會增加一個座位。
  • 設定商家服務時,是否同時可以有多個營業處?例如,某個類別有 30 個開啟的位置
  • 以上敘述皆不適用?
    • 使用 Spot 開啟功能
    • 注意事項:雖然使用週期性更有效率,並可能減少動態饋給大小,但如果您的資料模型並未原生支援重複資料,那麼就不建議使用重複週期,因為您必須在每次重新更新時重新計算整個週期的週期性時段。

    時段開放

    參數定義:

    • Spot_open:這個供應項目目前可用的點數量。
    • Spot_total:商家為這項設定所設置的銷售地點總數 (包括無法使用的地點)。

    Spot 公開測試方法明確指出每個運算單元可用性,並支援相同服務使用多個位置的模型。這兩個參數會一起運作,以建立服務容量的數位表示法。

    預訂時,Spot_open 的數量應透過即時更新減少 1 個 (Spotstotal 數量應保持不變)。一旦 spot_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:一份有效的預訂樓層平面圖

    現在有使用者預訂了其中一間。預訂完成後,系統會發出即時更新來更新供應情形。下一個每日供應情形動態饋給應顯示這個預訂。這些商家的供應情形動態饋給將以格林威治標準時間 2018 年 9 月 1 日下午 4:00:00 減少 1 點。格林威治標準時間 2018 年 9 月 1 日晚上 8: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",
                }
              ]
    }
        

    週期性

    參數定義

    • 週期性:代表不斷重複可用性的運算單元。
    • repeat_until_sec:供應情形的重複持續時間的最後時區世界標準時間 (UTC) 時間戳記。
    • repeat_every_sec:連續可用性運算單元之間的間隔秒數。舉例來說,如果 repeat_every_sec = 1800 (30 分鐘),而 start_sec 是從早上 9:00 開始,則每 30 分鐘在早上 9:00、早上 9:30、早上 10:00 等等,都會重複計算。
      • 注意事項:除非有 schedule_exception,否則不需指定 spot_open 和 spot_total 參數

    週期性方法會每天固定提供一次服務,例如每天 9:00 到 5:00 每 30 分鐘一次的服務。透過重複週期,您可以指定時段的時長、時段的第一天、該時段的重複頻率,以及當天應停止重複的時間。注意:必須分別為每天指定一組新的週期性運算單元。如果時間範圍內已有預訂的時段,請指定時間表例外狀況。舉例來說,除了早上 11:00 到 11:30 以外,早上 9 點到晚上 9 點重複,每半小時重複一次。每項服務有各自的重複週期和排程例外狀況。

    服務範例

    美容院設有樓層平面圖,且目前沒有進行中的預訂

    圖 3:沒有有效預訂的樓層平面圖。假設每項服務只有 1 個開啟的時段 (例如,Sally 每 30 分鐘提供一次剪髮服務,但一次只能邀請 1 位客戶)。

    這些商家使用 1 個時段的供應情形動態饋給看起來會像這樣:

    動態饋給程式碼片段:

    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:一份有效的預訂平面圖假設每項服務只有 1 個開啟的時段 (例如,Sally 每 30 分鐘提供一次剪髮服務,但一次只能邀請 1 位客戶)。

    現在假設使用者在下午 12 點 30 分透過 Sally 預約服務。預訂完成後,系統會發出即時更新來更新供應情形。下一個每日供應情形動態饋給應顯示這個預訂。這些商家的供應情形動態饋給會在中午 12:30 至下午 1: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
                      }
                    }
                  ],
                }
              ]
        }