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

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

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