Menyusun Ketersediaan di Feed

Memilih Format Ketersediaan

Ada dua cara untuk menentukan data ketersediaan: (1) Tempat Terbuka atau (2) Pengulangan. Hanya pilih satu metode yang akan digunakan di semua penjual dan layanan Anda. Setelah memilih metode, Anda harus tetap menggunakannya untuk seluruh integrasi (feed, server pemesanan, dan update real time).

Gunakan panduan berikut untuk membantu Anda menentukan format ketersediaan mana yang lebih cocok:

  • Di sistem Anda, apakah Anda menyimpan ketersediaan sebagai slot eksplisit, misalnya, 08.00 - 08.30?
  • Di sistem Anda, apakah Anda menyimpan ketersediaan dalam format berulang, yang berarti penjual memiliki layanan yang terjadi dengan frekuensi yang konsisten dengan sedikit penyimpangan? Misalnya, slot berulang setiap 15 menit dari pukul 09.00 - 17.00, dan hanya satu kursi yang tersedia dalam setiap kelipatan 15 menit.
  • Untuk layanan penjual Anda, dapatkah ada lebih dari satu slot yang terbuka sekaligus? Misalnya, 30 slot terbuka untuk kelas
  • Tidak ada opsi yang sesuai?
    • Gunakan Spots Open
    • Catatan: Meskipun penggunaan pengulangan lebih efisien dan dapat menghasilkan ukuran feed yang lebih kecil, jika model data Anda tidak mendukung pengulangan secara native, sebaiknya jangan gunakan pengulangan, karena Anda harus menghitung ulang slot berulang untuk seluruh hari untuk setiap pembaruan real-time.

    Spots Open

    Definisi Parameter:

    • spots_open: Jumlah tempat yang saat ini tersedia untuk entri ketersediaan ini.
    • spots_total: Jumlah total tempat yang dimiliki penjual untuk konfigurasi ini, termasuk tempat yang tidak tersedia.

    Metode Spots Open secara eksplisit menunjukkan setiap ketersediaan slot dan mendukung model memiliki beberapa spot untuk layanan yang sama. Kedua parameter ini bekerja sama untuk membuat representasi digital dari kapasitas layanan.

    Saat pemesanan terjadi, jumlah spots_open akan berkurang 1 melalui pembaruan realtime (jumlah spots_total akan tetap sama). Setelah spots_open = 0, slot tidak akan muncul lagi.

    Contoh Layanan

    Kelas yoga atau salon kecantikan memiliki denah lantai berikut dan tidak ada pemesanan aktif

    Gambar 1: Denah lantai tanpa pemesanan aktif

    Feed ketersediaan untuk 2 slot di penjual ini akan terlihat seperti:

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

    Contoh Layanan dengan Pemesanan

    Gambar 2: Denah lantai dengan satu pemesanan aktif

    Sekarang pengguna memesan salah satu tempat. Saat pemesanan terjadi, update real-time akan dikeluarkan untuk memperbarui ketersediaan. Dalam feed ketersediaan harian berikutnya, pemesanan ini akan ditampilkan. Feed ketersediaan untuk penjual ini akan memiliki pengurangan spots_open sebesar 1 untuk slot 1 September 2018 pukul 16.00.00 GMT. Slot 20.00.00 GMT 1 September 2018 tetap tidak berubah.

    Cuplikan Feed dengan Pemesanan

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

    Berulang

    Definisi Parameter

    • pengulangan: Representasi slot ketersediaan yang berulang secara konsisten.
    • repeat_until_sec: Stempel waktu UTC waktu akhir slot terakhir yang menjadi batas waktu pengulangan ketersediaan.
    • repeat_every_sec: Jumlah detik antara slot ketersediaan berturut-turut. Misalnya, jika repeat_every_sec = 1800 (30 menit), dan start_sec dimulai pada pukul 09.00, slot akan diulang setiap 30 menit pada 09.00, 09.30, 10.00, dll.
      • Catatan: Anda tidak perlu menentukan spots_open dan spots_total, keduanya diasumsikan 1 kecuali jika ada schedule_exception

    Metode pengulangan menunjukkan ketersediaan setiap hari untuk layanan yang terjadi secara berkala, misalnya, layanan yang terjadi setiap 30 menit dari pukul 09.00 - 17.00 setiap hari. Dengan pengulangan, Anda menentukan durasi slot, waktu pertama kali slot terjadi dalam sehari, frekuensi slot tersebut diulang, dan kapan slot tersebut harus berhenti diulang pada hari yang sama. Catatan: kumpulan slot berulang baru harus ditentukan untuk setiap hari secara terpisah. Jika slot sudah dipesan dalam rentang waktu, Anda akan menentukan pengecualian jadwal. Misalnya, ulangi setiap setengah jam dari pukul 09.00 hingga 21.00 kecuali dari pukul 11.00 hingga 11.30. Setiap layanan akan memiliki pengecualian penjadwalan dan pengulangannya sendiri.

    Contoh Layanan

    Salon kecantikan memiliki denah lantai berikut dan tidak ada pemesanan aktif

    Gambar 3: Denah lantai tanpa pemesanan aktif. Mengasumsikan hanya ada 1 slot yang terbuka per layanan (misalnya, Sally menyediakan layanan potong rambut setiap 30 menit, tetapi hanya dapat melayani 1 pelanggan dalam satu waktu.)

    Feed ketersediaan untuk 1 slot di penjual ini akan terlihat seperti:

    Cuplikan Feed:

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

    Contoh Layanan dengan Pemesanan

    Gambar 4: Denah lantai dengan satu pemesanan aktif. Mengasumsikan hanya ada 1 slot yang terbuka per layanan (misalnya, Sally menyediakan layanan potong rambut setiap 30 menit, tetapi hanya dapat melayani 1 pelanggan dalam satu waktu.)

    Sekarang bayangkan pengguna memesan potong rambut dengan Sally pada pukul 12.30. Saat pemesanan terjadi, update real-time akan dikeluarkan untuk memperbarui ketersediaan. Di feed ketersediaan harian berikutnya, pemesanan ini akan ditampilkan. Feed ketersediaan untuk penjual ini akan memiliki pengecualian penjadwalan selama pukul 12.30 - 13.00 untuk layanan dengan durasi 30 menit.

    Cuplikan Feed dengan Pemesanan:

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