Sắp xếp dữ liệu về tình trạng còn chỗ cho tính năng Đặt trước

Định nghĩa tham số

Như đã chỉ định trong định nghĩa Availability:

  • party_size: Số lượng người trong nhóm có thể được phục vụ trong khung giờ này. Một nhà hàng có thể được liên kết với nhiều Khung giờ trong cùng một thời điểm, mỗi khung giờ chỉ định một party_size khác nhau, ví dụ: 2, 3 hoặc 4 người có thể ngồi khi đặt trước
  • spots_open: Số chỗ hiện có cho mục nhập tình trạng còn chỗ này
  • spots_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)

Ba tham số này hoạt động cùng nhau để tạo bản trình bày kỹ thuật số của bản vẽ mặt bằng. party_size là số người mà mỗi bàn có thể chứa (sẽ có một mục cho mỗi kích thước mà bàn có thể chứa). spots_openspots_total là số lượng bảng có thể chứa party_size đó.

Ví dụ về sơ đồ tầng trống

Hãy tưởng tượng một nhà hàng có sơ đồ mặt bằng như sau và không có yêu cầu đặt chỗ nào đang hoạt động:

Hình 1: Bản vẽ mặt bằng không có lượt đặt phòng đang hoạt động
Hình 1: Bản vẽ mặt bằng không có lượt đặt phòng đang hoạt động

Giá trị cho party_size, spots_openspots_total sẽ là:

party_size spots_open spots_total
4 3 3
5 3 3
6 4 4
7 1 1
8 1 1

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

JSON

{
  "availability": [
        {
          "spots_total": 3,
          "spots_open": 3,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 4
          }
        },
        {
          "spots_total": 3,
          "spots_open": 3,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 5
          }
        },
        {
          "spots_total": 4,
          "spots_open": 4,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 6
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 7
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 8
          }
        }
      ]
}

Ví dụ về bản vẽ mặt bằng có yêu cầu đặt phòng

Bây giờ, hãy tưởng tượng rằng một trong những bàn tròn đã được đặt trước:

Hình 2: Bản vẽ mặt bằng có một lượt đặt phòng đang hoạt động
Hình 2: Bản vẽ mặt bằng có một lượt đặt phòng đang hoạt động

Giờ đây, các giá trị cho party_size, spots_openspots_total sẽ là:

party_size spots_open spots_total
4 2 3
5 2 3
6 3 4
7 1 1
8 1 1

JSON

{
  "availability": [
        {
          "spots_total": 3,
          "spots_open": 2,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 4
          }
        },
        {
          "spots_total": 3,
          "spots_open": 2,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 5
          }
        },
        {
          "spots_total": 4,
          "spots_open": 3,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 6
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 7
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 8
          }
        }
      ]
}

Chỉ định tình trạng phòng ăn có hỗ trợ bàn kết hợp

Nhà hàng có thể kết hợp các bàn theo nhiều cách để phục vụ các nhóm lớn hơn. Bạn cần chỉ định spots_openspots_total trong nguồn cấp dữ liệu theo cách phản ánh chính xác liệu bạn có thể chấp nhận các bữa tiệc có kích thước nhất định hay không. Sau đây là một ví dụ về cách bạn có thể chỉ định kết hợp các bảng. Cách tính toán này có thể khác một chút đối với nguồn cấp dữ liệu của bạn và bạn có thể chỉ định spots_openspots_total theo cách phù hợp với logic kinh doanh của mình.

Nếu một nhà hàng hỗ trợ việc kết hợp các bàn để tạo thành một bữa tiệc lớn hơn, bạn có thể cập nhật spots_openspots_total để phản ánh điều này.

Giả sử một nhà hàng có thể kết hợp hai bàn nhỏ để phục vụ một nhóm từ 7 đến 10 người.

Hình 3: Bản vẽ mặt bằng không có lượt đặt phòng đang hoạt động
Hình 3: Bản vẽ mặt bằng không có lượt đặt phòng đang hoạt động

Trong trường hợp không có lượt đặt phòng đang hoạt động, giá trị của party_size, spots_openspots_total sẽ là:

party_size spots_open spots_total
4 3 3
5 3 3
6 4 4
7 1 1
8 1 1
9 1 1
10 1 1

Bây giờ, với cùng một sơ đồ mặt bằng, một yêu cầu đặt chỗ được thực hiện cho một nhóm gồm 10 người, kết hợp hai bàn nhỏ.

Hình 4: Bản vẽ mặt bằng có một yêu cầu đặt chỗ đang hoạt động trải dài trên hai bàn
Hình 4: Bản vẽ mặt bằng có một yêu cầu đặt chỗ đang hoạt động trải dài trên hai bàn

Sau đó, các giá trị cho party_size, spots_openspots_total hiện là:

party_size spots_open spots_total
4 1 3
5 1 3
6 2 4
7 1 1
8 1 1
9 0 1
10 0 1