การจัดโครงสร้างข้อมูลเวลาว่างสำหรับการจอง

คำจำกัดความของพารามิเตอร์

ตามที่ระบุไว้ใน Availability คำจำกัดความ:

  • party_size: จำนวนแขกที่รองรับในช่วงเวลานี้ ร้านอาหารสามารถเชื่อมโยงกับสล็อตหลายช่องได้ในเวลาเดียวกัน แต่ละรายการระบุ party_size ที่แตกต่างกัน เช่น 2, 3 หรือ 4 คน จองที่นั่งได้
  • spots_open: จำนวนที่ว่างในขณะนี้ รายการความพร้อมจำหน่ายสินค้า
  • spots_total: จำนวนสปอตทั้งหมดที่ผู้ขายมีสำหรับผลิตภัณฑ์นี้ การกำหนดค่า (รวมถึงการกำหนดค่าที่ไม่มี)

พารามิเตอร์ทั้ง 3 ตัวนี้จะทำงานร่วมกันเพื่อสร้างการนำเสนอข้อมูลทางดิจิทัลเกี่ยวกับ แปลนอาคาร party_size คือจำนวนคนที่แต่ละตารางสามารถเก็บได้ (จะมี เป็นรายการสำหรับทุกขนาดที่ตารางรองรับ) spots_open และ spots_total คือจำนวนตารางที่รองรับparty_sizeดังกล่าว

ตัวอย่างแปลนอาคารเปล่า

นึกภาพร้านอาหารที่มีแปลนอาคารต่อไปนี้และไม่มีลูกค้า การจอง:

วันที่ รูปที่ 1: แปลนอาคารที่ไม่มีการจองที่ใช้งานอยู่
รูปที่ 1: แปลนอาคารที่ไม่มี การจองที่ใช้งานอยู่

ค่าของ party_size, spots_open และ spots_total จะเป็นดังนี้

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

ฟีดความพร้อมจำหน่ายสินค้าสำหรับช่วงเวลาหนึ่งของผู้ขายรายนี้จะมีลักษณะดังต่อไปนี้

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

ตัวอย่างแผนผังชั้นที่มีการจอง

ทีนี้สมมติว่ามีการจองโต๊ะกลมๆ ห้องหนึ่ง

วันที่ รูปที่ 2: แปลนอาคารที่มีการจองที่ใช้งานอยู่ 1 รายการ
รูปที่ 2: แปลนอาคารที่มี การจองที่ดำเนินอยู่

ค่าสำหรับ party_size, spots_open และ spots_total จะเป็นดังนี้

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

ระบุความพร้อมให้บริการของร้านอาหารและรองรับโต๊ะรวม

มีหลายวิธีที่ร้านอาหารจะรวมโต๊ะเข้าด้วยกันเพื่อรองรับที่นั่งที่ใหญ่ขึ้นได้ กลุ่ม คุณต้องการให้ฟีดระบุ spots_open และ spots_total ในลักษณะที่แสดงถึงการยอมรับอย่างถูกต้องว่าคุณสามารถยอมรับ ขนาด ต่อไปนี้คือตัวอย่างหนึ่งของวิธีระบุตารางรวม ฟีดของคุณอาจแตกต่างกันบ้างในแง่ของการคำนวณนี้ และ ที่คุณสามารถระบุ spots_open และ spots_total ในลักษณะที่ ตรงกับตรรกะทางธุรกิจของคุณ

หากร้านอาหารรองรับโต๊ะรวมสำหรับจำนวนคนในกลุ่มใหญ่ คุณสามารถ อัปเดต spots_open และ spots_total ให้สอดคล้องกับข้อมูลนี้

สมมติว่าร้านอาหารมีโต๊ะเล็กๆ 2 โต๊ะสำหรับที่นั่ง 7-10 คนได้ บุคคล

วันที่ รูปที่ 3: แปลนอาคารที่ไม่มีการจองที่ใช้งานอยู่
รูปที่ 3: แปลนอาคารที่ไม่มี การจองที่ใช้งานอยู่

ในกรณีที่ไม่มีการจองที่ใช้งานอยู่ ค่าของ party_size, spots_open, และ spots_total ได้แก่

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

แต่ในตอนนี้ ด้วยแผนผังชั้นเดียวกัน จะมีการจองสำหรับแขกจำนวน 10 คนซึ่ง รวม 2 ตารางขนาดเล็กเข้าด้วยกัน

วันที่ รูปที่ 4: แปลนอาคารที่มีการจองที่ใช้งานอยู่ 1 รายการซึ่งครอบคลุม 2 ตาราง
รูปที่ 4: แปลนอาคารที่มีการจองที่ใช้งานอยู่ 1 รายการซึ่งครอบคลุม 2 ตาราง

จากนั้นค่าสำหรับ party_size, spots_open และ spots_total จะเป็นดังนี้

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