Xây dựng tình trạng cung cấp trong nguồn cấp dữ liệu

Chọn định dạng về phạm vi cung cấp

Có hai cách để chỉ định dữ liệu về tình trạng còn hàng: (1) Spots Open (Thời điểm công khai) hoặc (2) Recurrence (Thời hạn lặp lại). Hãy chọn một phương thức duy nhất để sử dụng cho tất cả người bán và dịch vụ của bạn. Sau khi chọn một phương thức, bạn phải áp dụng phương thức đó cho toàn bộ quá trình tích hợp (nguồn cấp dữ liệu, máy chủ đặt phòng và thông tin cập nhật theo thời gian thực).

Hãy làm theo hướng dẫn sau đây để xác định định dạng tình trạng còn hàng phù hợp hơn:

  • Trong hệ thống, bạn có lưu trữ tình trạng rảnh/bận dưới dạng khung giờ rõ ràng (ví dụ: 8:00 sáng – 8:30 sáng) không?
  • Trong hệ thống của bạn, bạn có lưu trữ tình trạng còn hàng ở định dạng định kỳ, tức là người bán có các dịch vụ diễn ra với tần suất nhất quán với một mức chênh lệch nhỏ không? Ví dụ: khung giờ sẽ lặp lại sau mỗi 15 phút từ 9:00 đến 17:00 và mỗi 15 phút chỉ có một chỗ ngồi.
  • Đối với các dịch vụ của người bán, có thể có nhiều điểm mở cửa tại cùng một thời điểm không? Ví dụ: có 30 vị trí còn trống cho một lớp học
  • Không có lựa chọn nào ở trên phù hợp?
    • Sử dụng Spots Open
    • Lưu ý: Mặc dù việc sử dụng tính năng lặp lại hiệu quả hơn và có thể dẫn đến kích thước nguồn cấp dữ liệu nhỏ hơn, nhưng nếu mô hình dữ liệu của bạn vốn không hỗ trợ tính năng lặp lại, thì bạn không nên sử dụng tính năng lặp lại vì sẽ phải tính toán lại giá trị của các khung thời gian định kỳ trong cả ngày cho mỗi lần cập nhật theo thời gian thực.

    Điểm tham quan đang mở

    Định nghĩa thông số:

    • origin_open: Số lượng vị trí hiện còn trống cho mục thông tin về tình trạng còn hàng này.
    • origin_total: Tổng số vị trí mà người bán có cho cấu hình này, bao gồm cả những vị trí không có sẵn.

    Phương thức Spots Open cho biết rõ mọi vị trí còn trống và hỗ trợ mô hình có nhiều vị trí cho cùng một dịch vụ. 2 tham số này hoạt động cùng nhau để tạo nên một bản trình bày kỹ thuật số về khả năng của dịch vụ.

    Khi diễn ra một lượt đặt trước, số lượng place_open sẽ giảm đi 1 sau khi cập nhật theo thời gian thực (số lượng ĐIỂM_open sẽ không thay đổi). Khi points_open = 0, vị trí sẽ không còn hiển thị nữa.

    Dịch vụ mẫu

    Lớp học yoga hoặc thẩm mỹ viện có các sơ đồ tầng sau và không có lượt đặt lịch nào đang hoạt động

    Hình 1: Sơ đồ tầng không có lượt đặt phòng nào đang có hiệu lực

    Nguồn cấp dữ liệu tình trạng còn hàng cho 2 vị trí tại những người bán này sẽ có dạng như sau:

    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",
                }
              ]
        }
        

    Các dịch vụ mẫu đi kèm với một lượt đặt trước

    Hình 2: Sơ đồ tầng có một lượt đặt phòng đang có hiệu lực

    Bây giờ, người dùng đặt một trong các vị trí. Khi một lượt đặt trước diễn ra, thông tin cập nhật theo thời gian thực sẽ được cập nhật để cập nhật tình trạng còn phòng. Trong nguồn cấp dữ liệu về tình trạng còn hàng hằng ngày tiếp theo, thông tin đặt chỗ này sẽ được thể hiện. Đối với những người bán này, nguồn cấp dữ liệu tình trạng còn hàng cho những người bán này sẽ bị giảm 1 đơn vị là 1:00:00 chiều theo giờ GMT, ngày 1 tháng 9 năm 2018. 8:00:00 chiều theo giờ GMT ngày 1 tháng 9 năm 2018 vẫn không thay đổi.

    Đoạn trích nguồn cấp dữ liệu có lượt đặt trước

    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",
                }
              ]
    }
        

    Tần suất

    Định nghĩa tham số

    • lặp lại: Biểu thị các khung giờ còn trống lặp lại nhất quán.
    • repeat_until_sec: Dấu thời gian UTC của thời gian kết thúc của vị trí cuối cùng mà tình trạng có sẵn sẽ lặp lại cho đến.
    • Lặp lại_mọi_giây: Số giây giữa các thời điểm khả dụng liên tiếp. Ví dụ:nếu repeat_mọi_sec = 1800 (30 phút) và bắt đầu lúc 9 giờ sáng, thì các khung giờ sẽ lặp lại 30 phút một lần vào lúc 9:00 sáng, 9:30 sáng, 10:00 sáng, v.v.
      • Lưu ý: Bạn không cần phải chỉ định place_open và points_total, cả hai đều được giả định là 1 trừ khi có schedule_exception

    Phương thức lặp lại cho biết tình trạng cung cấp hằng ngày đối với các dịch vụ diễn ra định kỳ, ví dụ: một dịch vụ diễn ra 30 phút một lần từ 9:00 đến 17:00 mỗi ngày. Với chế độ lặp lại, bạn sẽ chỉ định thời lượng của vùng, lần đầu tiên trong ngày vùng xuất hiện, tần suất lặp lại vùng và tần suất lặp lại vào cùng ngày đó. Lưu ý: bạn cần chỉ định một nhóm thời điểm định kỳ mới cho từng ngày riêng. Nếu đã đặt trước một khung giờ trong khoảng thời gian đó, bạn sẽ chỉ định một trường hợp ngoại lệ theo lịch biểu. Ví dụ:lặp lại mỗi nửa giờ từ 9 giờ sáng đến 9 giờ tối, ngoại trừ từ 11 giờ sáng đến 11:30 sáng. Mỗi dịch vụ sẽ có các trường hợp ngoại lệ riêng cho việc lên lịch và lặp lại.

    Dịch vụ mẫu

    Một thẩm mỹ viện có sơ đồ tầng sau đây và không có lượt đặt lịch hẹn nào đang có hiệu lực

    Hình 3: Sơ đồ tầng không có lượt đặt phòng nào đang có hiệu lực. Giả sử mỗi dịch vụ chỉ có 1 địa điểm mở (ví dụ: Sally cung cấp dịch vụ cắt tóc 30 phút một lần, nhưng chỉ có thể phục vụ 1 khách hàng tại một thời điểm.)

    Nguồn cấp dữ liệu tình trạng còn hàng cho 1 vị trí tại những người bán này sẽ có dạng như sau:

    Đoạn trích nguồn cấp dữ liệu:

    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
                }
              }
            ]
        }
        

    Các dịch vụ mẫu đi kèm với một lượt đặt trước

    Hình 4: Sơ đồ tầng có một lượt đặt phòng đang có hiệu lực. Giả sử mỗi dịch vụ chỉ có 1 địa điểm mở (ví dụ: Sally cung cấp dịch vụ cắt tóc 30 phút một lần, nhưng chỉ có thể phục vụ 1 khách hàng tại một thời điểm.)

    Bây giờ, hãy tưởng tượng rằng một người dùng đặt lịch cắt tóc với Sally lúc 12:30 chiều. Khi một lượt đặt phòng diễn ra, hệ thống sẽ cập nhật tình trạng còn phòng theo thời gian thực. Trong nguồn cấp dữ liệu về tình trạng còn hàng hằng ngày tiếp theo, thông tin đặt chỗ này sẽ được thể hiện. Nguồn cấp dữ liệu tình trạng còn hàng cho những người bán này sẽ có một trường hợp ngoại lệ khi lên lịch trong khoảng thời gian từ 12:30 đến 13:00 cho một dịch vụ có thời hạn 30 phút.

    Đoạn trích nguồn cấp dữ liệu với lượt đặt trước:

    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
                      }
                    }
                  ],
                }
              ]
        }