Menyusun Ketersediaan di Feed

Memilih Format Ketersediaan

Ada dua cara untuk menentukan data ketersediaan: (1) Spots Open atau (2) Recurrence. Pilih hanya satu metode untuk digunakan di semua penjual dan layanan Anda. Setelah memilih metode, Anda harus tetap menggunakannya untuk seluruh integrasi (feed, server pemesanan, dan pembaruan real time).

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

  • Di sistem Anda, apakah Anda menyimpan ketersediaan sebagai slot eksplisit, misalnya, 08.00 - 08.30?
  • Dalam sistem Anda, apakah Anda menyimpan ketersediaan dalam format berulang, yang berarti penjual memiliki layanan yang muncul dengan frekuensi yang konsisten dengan beberapa penyimpangan? Misalnya, slot akan diulang setiap 15 menit mulai pukul 09.00–17.00, dan hanya satu kursi yang tersedia dalam setiap penambahan 15 menit.
  • Untuk layanan penjual Anda, bisakah ada lebih dari satu slot yang tersedia dalam satu waktu? Misalnya, 30 slot kosong untuk satu kelas
  • Tidak ada satu pun hal di atas yang sesuai?
    • Gunakan Tempat Terbuka
    • Catatan: Meskipun menggunakan 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 perlu menghitung ulang slot berulang sepanjang hari untuk setiap pembaruan realtime.

    Spots Open

    Definisi Parameter:

    • spot_open: Jumlah tempat yang saat ini tersedia untuk entri ketersediaan ini.
    • spot_total: Jumlah total spot yang dimiliki penjual untuk konfigurasi ini, termasuk yang tidak tersedia.

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

    Saat pemesanan terjadi, jumlah spot_open akan berkurang 1 melalui update realtime (jumlah spot_total harus tetap sama). Setelah spot_open = 0, slot seharusnya tidak lagi muncul.

    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 ini:

    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 realtime akan dikeluarkan untuk memperbarui ketersediaan. Dalam feed ketersediaan harian berikutnya, pemesanan ini harus ditampilkan. Feed ketersediaan untuk penjual ini akan memiliki spot_open yang dikurangi sebesar 1 untuk slot 1 September 2018 pukul 16.00.00 GMT. Slot 1 September 2018 pukul 20.00.00 GMT 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 dari waktu berakhir slot terakhir saat ketersediaan berulang.
    • repeat_setiap_sec: Jumlah detik antara slot ketersediaan yang berurutan. Misalnya, jika repeat_setiap_sec = 1.800 (30 menit), dan start_sec dimulai pada pukul 09.00, slot akan berulang setiap 30 menit pada pukul 09.00, 09.30, 10.00, dll.
      • Catatan: Tidak perlu menentukan spot_open dan spot_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, pertama kali slot muncul, seberapa sering slot tersebut harus diulang, dan kapan slot harus berhenti berulang pada hari yang sama. Catatan: serangkaian slot berulang baru perlu ditentukan untuk setiap hari secara terpisah. Jika slot sudah dipesan dalam rentang waktu tersebut, Anda akan menentukan pengecualian jadwal. Misalnya, ulangi setiap setengah jam dari pukul 09.00-21.00 kecuali dari 11.00 sampai 11.30. Setiap layanan akan memiliki pengulangan dan pengecualian penjadwalannya sendiri.

    Contoh Layanan

    Sebuah salon kecantikan memiliki denah lantai berikut dan tidak ada pemesanan aktif

    Gambar 3: Denah lantai tanpa pemesanan aktif. Mengasumsikan hanya 1 tempat yang buka per layanan (misalnya, Santi menyediakan layanan potong rambut setiap 30 menit, tetapi hanya dapat melayani 1 pelanggan pada satu waktu.)

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

    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 1 tempat yang buka per layanan (misalnya, Santi menyediakan layanan potong rambut setiap 30 menit, tetapi hanya dapat melayani 1 pelanggan pada satu waktu.)

    Sekarang bayangkan seorang pengguna potong rambut bersama Sally pada pukul 12.30. Saat pemesanan terjadi, pembaruan realtime akan dikeluarkan untuk memperbarui ketersediaan. Dalam feed ketersediaan harian berikutnya, pemesanan ini harus ditampilkan. Feed ketersediaan untuk penjual ini akan memiliki pengecualian penjadwalan antara 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
                      }
                    }
                  ],
                }
              ]
        }