Cara kerja booking system dimulai dari satu pengurangan: sistem mengambil jam buka Anda, lalu memotongnya dengan hari libur, blokir waktu, booking yang sudah ada, dan jeda antar sesi. Sisanya menjadi slot yang tampil di halaman pemesanan. Hitungan itu benar hanya jika jam buka, durasi layanan, dan zona waktu sudah Anda isi lebih dahulu. Batasnya juga jelas: daftar slot di layar adalah pratinjau, bukan janji. Slot baru menjadi milik seseorang pada detik tombol pesan ditekan.

Saya menulis halaman ini untuk pemilik usaha jasa yang tidak membaca kode. Anda akan melihat mesin di balik tombol "Pilih jam", termasuk 2 kegagalan yang paling mahal: 2 orang memesan jam yang sama, dan 1 orang tercatat memesan 2 kali. Untuk pengertian dasar dan daftar fitur, baca dulu artikel pilar tentang booking system.

Cara kerja booking system dalam 5 langkah

Semua sistem pemesanan jadwal, apa pun mereknya, menjalankan 5 langkah yang sama. Tabel ini merangkum langkahnya dan bagian mana yang bisa gagal.

LangkahYang dikerjakan sistemRisiko utama
1. Baca aturanAmbil jam buka mingguan per hariJam buka salah isi
2. PotongKurangi libur, blokir, booking terisiBlokir lupa dimasukkan
3. IrisPotong sisa waktu ke durasi layanan plus jedaJeda 0 menit, staf kehabisan napas
4. TampilkanKirim daftar slot kandidat ke halamanPembeli anggap slot sudah pasti
5. KunciCek ulang slot saat pesanan masukTanpa kunci, slot ganda lolos

Langkah 5 adalah bagian yang paling sering dilewati pembuat sistem pemula. Langkah 1 sampai 4 menghasilkan tampilan. Langkah 5 menghasilkan kebenaran.

Lima masukan yang menentukan sebuah slot muncul

Slot bukan baris yang Anda simpan. Slot adalah hasil hitungan yang dibuat ulang setiap kali halaman dibuka. Lima masukan di bawah ini menentukan hasilnya.

MasukanContoh isiEfek pada slot
Jam bukaSenin-Jumat 09:00-17:00Menentukan batas luar
Durasi layanan30 menitMenentukan lebar 1 slot
Jeda sebelum dan sesudah0 menit dan 10 menitMenambah jarak antar sesi
Blokir waktuRabu 13:00-14:00, rapatMenghapus slot pada rentang itu
Hari liburTanggal merah nasionalMenutup 1 hari penuh
Corong 5 tahap: jam buka 480 menit menyempit lewat blokir, booking terisi, dan jeda menjadi 9 slot tersedia
Corong ketersediaan: jam buka dipotong berturut-turut oleh blokir waktu, booking terisi, dan jeda antar sesi. Urutan dan istilah mengikuti dokumentasi ketersediaan Termilo yang saya baca pada 17 Februari 2026.

Jeda sering dilupakan. Jeda melekat pada layanan, bukan pada jam buka. Anggap jeda sebagai waktu bersih-bersih ruangan. Jika sesi Anda 30 menit dan jeda sesudah 10 menit, maka 1 siklus memakan 40 menit, dan jumlah slot per hari turun. Aturan penulisan tiap masukan ada di dokumentasi ketersediaan Termilo, termasuk cara jam buka disimpan sebagai menit sejak tengah malam.

Penyimpanan jam sebagai angka menit terdengar aneh, tetapi memudahkan mesin. Pukul 09:00 menjadi 540. Pukul 17:00 menjadi 1020. Mesin hanya mengurangi angka, dan tidak perlu membaca teks jam.

Mengapa 2 orang bisa memesan jam yang sama

Bayangkan 2 pelanggan membuka halaman Anda pada detik yang sama. Keduanya melihat slot Rabu 10:00. Keduanya menekan tombol pesan dalam jarak setengah detik. Tanpa penjagaan, server memproses 2 permintaan itu bersamaan, dan keduanya membaca "slot masih kosong" sebelum salah satu sempat menulis. Hasilnya 2 booking pada 1 jam yang sama.

Perbaikannya bernama kunci. Saat pesanan masuk, sistem meminta kunci untuk slot itu. Hanya 1 permintaan yang memegang kunci pada satu waktu. Pemegang kunci mengecek ulang ketersediaan, menulis booking, lalu melepas kunci. Permintaan kedua masuk setelah itu, membaca slot sudah terisi, dan ditolak dengan pesan bahwa jam itu baru saja diambil orang lain.

Analogi yang paling dekat adalah kamar pas di toko baju. Papan "kosong" di pintu adalah pratinjau. Gagang pintu yang terkunci adalah kebenaran. Karena itu daftar slot di layar harus Anda perlakukan sebagai kandidat, dan sistem harus memeriksa ulang di detik terakhir.

Perilaku ini kelihatan pada pesan kesalahan yang dikembalikan sistem. Termilo, misalnya, mendokumentasikan kode BOOKING_SLOT_UNAVAILABLE dengan status 409 untuk slot yang sudah terisi saat dicek ulang di bawah kunci. Daftar kode lain ada di referensi API Termilo. Saat Anda menguji kandidat sistem, minta demo kegagalan ini, bukan hanya demo pemesanan mulus.

Kenapa 1 pesanan bisa masuk 2 kali

Masalah kedua berlawanan arah. Pelanggan menekan tombol pesan di jalan, sinyal hilang, layar berputar, lalu dia menekan lagi. Kadang pesanan pertama sudah sampai ke server dan hanya jawabannya yang hilang. Server menerima 2 permintaan yang isinya sama, dan membuat 2 booking.

Penangkalnya bernama kunci idempotensi, atau idempotency key. Anggap seperti nomor antrean. Aplikasi membuat 1 nomor acak untuk 1 niat pesan, lalu mengirim nomor itu di setiap percobaan. Server menyimpan pasangan nomor dan hasilnya. Percobaan kedua dengan nomor yang sama tidak membuat booking baru. Server mengembalikan booking yang pertama.

Termilo mewajibkan header Idempotency-Key pada endpoint pembuatan booking publik. Dokumentasinya menyebut booking baru menjawab 201, sedangkan pengulangan dengan kunci sama menjawab 200 beserta penanda idempotentReplay. Rinciannya ada di dokumentasi lifecycle booking Termilo.

Pertanyaan yang perlu Anda ajukan ke vendor hanya satu: apa yang terjadi jika pelanggan menekan tombol 2 kali karena sinyal jelek. Jika jawabannya "kami hapus manual lewat admin", biaya itu jatuh ke staf Anda setiap minggu.

Zona waktu dan alasan waktu disimpan sebagai instan

Ini penyebab kesalahan yang paling sunyi. Tulisan "Rabu 10:00" bukan 1 titik waktu. Ia bergantung pada zona. Rabu 10:00 di Jakarta bukan Rabu 10:00 di Makassar, dan jelas bukan Rabu 10:00 bagi klien Anda di Singapura.

Karena itu sistem yang benar menyimpan waktu sebagai instan absolut, biasanya dalam bentuk angka epoch, yaitu jumlah milidetik sejak 1 Januari 1970 UTC. Angka itu sama bagi semua orang di bumi. Zona waktu dipakai hanya saat menampilkan angka tersebut menjadi jam yang dibaca manusia.

Analoginya adalah penerbangan. Maskapai menyimpan 1 saat keberangkatan, lalu menampilkannya sebagai jam lokal di Jakarta dan jam lokal di Singapura. Keduanya menunjuk detik yang sama.

Yang perlu Anda cek saat mencoba sebuah sistem: buka halaman booking dengan perangkat yang zonanya Anda ubah ke Asia/Makassar. Jika jam yang tampil bergeser sesuai zona dan booking tetap jatuh pada sesi yang benar, penyimpanannya sehat. Jika jam tidak bergeser sama sekali, sistem itu menyimpan teks jam, dan Anda akan menemui pelanggan yang datang salah waktu.

Status booking dari held sampai no_show

Setiap booking berjalan melalui daftar status yang terbatas. Status membuat laporan Anda jujur, karena pembatalan dan ketidakhadiran tercatat terpisah.

Alur status booking: held selama 10 menit menjadi confirmed, lalu berakhir di completed, cancelled, atau no_show
Alur status booking dengan 5 nama status dan 3 akhir yang tidak bisa berubah lagi. Nama status mengikuti dokumentasi lifecycle Termilo yang saya baca pada 17 Februari 2026.

Tabel berikut memakai kosakata yang Termilo dokumentasikan, karena kosakata itu terbuka dan bisa Anda periksa sendiri. Nama status di sistem lain bisa berbeda, tetapi maknanya mirip.

StatusArti bagi pemilik usahaAkhir
heldSlot ditahan sementara, belum sahTidak
confirmedBooking sah, slot terkunciTidak
completedSesi selesai dijalankanYa
cancelledDibatalkan pemilik atau pelangganYa
no_showPelanggan tidak datangYa

Status held adalah penahan sementara. Dokumentasi Termilo menyebut booking baru lahir sebagai held dengan batas tahan 10 menit. Jika tidak dikonfirmasi sampai batas itu, tahanan gugur dan slot kembali terbuka. Jadwal ulang tidak mengubah status; ia hanya memindahkan waktu, lalu mengunci dan memeriksa tumpang tindih lagi.

Perhatikan kolom Akhir. Tiga status terakhir tidak berpindah lagi. Aturan itu melindungi angka Anda, karena sesi yang sudah selesai tidak bisa diam-diam berubah menjadi batal di akhir bulan.

Simulasi Klinik Cemara dengan data contoh

Contoh berikut memakai data karangan untuk latihan hitung. Klinik Cemara tidak nyata, dan angkanya bukan hasil klien.

Kondisi awal. Jam buka Senin sampai Jumat, 09:00 sampai 17:00. Layanan tunggal "Konsultasi 30 menit". Jeda sesudah 10 menit. Satu dokter. Rapat internal setiap Rabu 13:00 sampai 14:00. Satu booking sudah terkonfirmasi pada Rabu 10:20.

Masukan. Pelanggan membuka halaman dan meminta ketersediaan hari Rabu.

Langkah hitung. Jendela Rabu berisi 480 menit. Satu siklus memakan 40 menit, yaitu 30 menit sesi ditambah 10 menit jeda. Blokir rapat memotong 60 menit di tengah. Sisi pagi 09:00 sampai 13:00 memuat 6 siklus. Sisi sore 14:00 sampai 17:00 memuat 4 siklus, karena siklus kelima akan melewati jam tutup. Total 10 slot kandidat. Booking yang sudah ada pada 10:20 menghapus 1 slot.

Keluaran yang bisa dilihat. Halaman menampilkan 9 slot: 09:00, 09:40, 11:00, 11:40, 12:20, 14:00, 14:40, 15:20, dan 16:00.

Keputusan. Sembilan slot per hari terlalu sedikit untuk target 12 pasien. Pemilik punya 2 pilihan berdasar hitungan di atas: potong jeda dari 10 menit ke 5 menit, atau tambah 1 dokter kedua dengan jam buka sendiri. Pilihan kedua menaikkan kapasitas tanpa menekan waktu bersih-bersih.

Checklist sebelum Anda memilih sistem

Pakai daftar ini saat mencoba demo. Setiap poin menguji 1 mekanisme yang saya jelaskan di atas.

  • Minta demo 2 pesanan pada slot yang sama, dan lihat pesan penolakannya.
  • Tekan tombol pesan 2 kali dengan koneksi dimatikan, lalu hitung booking yang masuk.
  • Ubah zona waktu perangkat ke Asia/Makassar, lalu periksa jam yang tampil.
  • Isi jeda sesudah sesi 15 menit, lalu pastikan jumlah slot turun.
  • Tambahkan 1 hari libur, lalu pastikan hari itu hilang dari halaman.
  • Batalkan 1 booking, lalu pastikan slot kembali muncul.
  • Cari laporan yang memisahkan batal dan tidak hadir.

Jika Anda ingin menaruh mesin ini di dalam produk sendiri, kami mengerjakannya lewat layanan pengembangan aplikasi web. Kalau Anda hanya butuh halaman booking yang jalan minggu ini, saya merekomendasikan Termilo. Perlu saya sebut terbuka: Rama Digital merekomendasikan Termilo, dan Rama Digital tidak mengoperasikannya. Termilo dioperasikan PT Nafanesia Kebermanfaatan Indonesia, Bandung. Peta istilah yang dipakai di artikel ini ada di halaman konsep inti Termilo.

Untuk jadwal yang lahir dari percakapan, bukan dari halaman, baca cara membuat asisten AI mengatur jadwal meeting otomatis.

Pertanyaan yang sering muncul

Apakah slot disimpan di database? Tidak. Slot dihitung ulang setiap kali halaman dibuka, dari jam buka dikurangi libur, blokir, booking terisi, dan jeda.

Kenapa slot yang saya lihat tiba-tiba hilang? Daftar slot adalah pratinjau. Orang lain memesan slot itu lebih dahulu, dan sistem memastikan ketersediaan hanya pada saat pesanan diproses.

Apa itu kunci idempotensi secara sederhana? Nomor antrean untuk 1 niat pesan. Percobaan kedua dengan nomor yang sama mengembalikan booking pertama, bukan booking baru.

Berapa lama sebuah slot ditahan sistem? Tergantung produk. Termilo mendokumentasikan tahanan 10 menit untuk status held sebelum slot dilepas kembali.

Apakah jadwal ulang menghapus booking lama? Tidak pada sistem yang rapi. Termilo mendokumentasikan jadwal ulang sebagai pemindahan waktu, sedangkan status booking tetap sama.

Kenapa zona waktu harus diurus dengan serius? Karena tulisan jam tanpa zona menunjuk titik waktu yang berbeda bagi tiap orang, dan pelanggan datang pada jam yang salah.

Sumber

Saya membaca halaman berikut pada 17 Februari 2026, dan semua istilah teknis di artikel ini berasal dari sana.

  • Dokumentasi ketersediaan Termilo, termilo.id/docs/availability
  • Dokumentasi lifecycle booking Termilo, termilo.id/docs/booking-lifecycle
  • Referensi APIAPIPintu resmi yang dipakai 2 sistem untuk saling mengirim data, tanpa orang menyalin data secara manual.Buka glosarium Termilo, termilo.id/docs/api
  • Konsep inti Termilo, termilo.id/docs/concepts
  • Peta dokumentasi Termilo untuk agen AI, termilo.id/llms.txt