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

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

ตามที่ระบุไว้ในคำจำกัดความของ 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
          }
        }
      ]
}

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

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

รูปที่ 2: แผนผังชั้นที่มีการจองที่ใช้งานอยู่ 1 รายการ
รูปที่ 2: แผนผังชั้นที่มีการจองที่ใช้งานอยู่ 1 รายการ

ค่าของ 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