Cara Memodelkan Status Kamar Hotel biar Anti-Salah
Cara Memodelkan Status Kamar Hotel biar Anti-Salah
Di banyak sistem hotel awal, kamar cuma "tersedia" atau "terisi." Itu tidak cukup. Saat saya membangun sistem manajemen hotel untuk sebuah hotel di Pekalongan, keputusan desain pertama adalah membuat status kamar eksplisit — dan memodelkannya sebagai state machine, bukan field teks bebas.
Satu keputusan ini mencegah banyak kesalahan operasional: housekeeping menyiapkan kamar yang diblokir teknisi untuk perbaikan, front desk check-in tamu ke kamar yang belum diperiksa, atau kamar "siap" yang sebenarnya masih dibersihkan.
Satu kamar punya beberapa dimensi sekaligus
Kamar nyata bukan satu status. Ada beberapa dimensi yang independen:
- Ketersediaan reservasi — bisa dijual untuk rentang tanggal tertentu?
- Status fisik — bersih, kotor, diperiksa, maintenance, out of order.
- Status operasional — siap check-in, menunggu inspeksi, diblokir.
- Status tamu — check-in, check-out, no-show, perpanjangan.
Dimensi fisik/operasional inilah yang paling diuntungkan oleh state machine, karena transisinya punya aturan yang tidak boleh dilewati.
State machine housekeeping
Ini alur inti housekeeping. Kamar bergerak melalui state yang terdefinisi, dan tiap panah adalah transisi yang dipicu aksi berwenang:
Guard pentingnya: kamar berstatus OutOfOrder tidak bisa langsung jadi Ready.
Ia harus kembali lewat pembersihan maintenance dan cleaning. Teknisi memblokir
kamar; housekeeping tidak bisa tanpa sengaja membatalkan blokir itu hanya dengan
menandai kamar bersih.
Kenapa state machine, bukan sekadar field status
Status teks-bebas atau satu enum mengundang lompatan ilegal — seseorang
mengubah kamar ke Ready langsung dari OutOfOrder, atau ke Occupied
padahal masih Dirty. Memodelkan transisi secara eksplisit berarti sistem
hanya mengizinkan perpindahan yang masuk akal secara operasional, dan menolak
sisanya.
Sama pentingnya, setiap transisi dicatat dengan pelaku, waktu, dan alasan. Jejak audit itulah yang membuat front desk bisa menjelaskan, saat ada insiden, kenapa status kamar berubah atau siapa yang memblokirnya. Tanpa itu, "sistemnya bilang siap" cuma argumen, bukan jawaban.
Reservasi juga state machine
Ide yang sama berlaku untuk booking. Reservasi bukan sekadar "dipesan." Ia bergerak melalui state-nya sendiri:
Reservasi Held bisa kedaluwarsa otomatis; yang Confirmed bisa jadi
NoShow; menginap aktif bisa Extended. Tiap transisi mencatat siapa dan
kenapa — persis yang Anda butuhkan saat tamu mempersoalkan tagihan atau
pembatalan.
Intinya
Status kamar dan reservasi bukan label — itu state machine dengan aturan. Memodelkannya secara eksplisit adalah pembeda antara sistem yang menuntun aksi benar berikutnya dan sistem yang sekadar menyimpan apa pun yang diketik orang.
Ini satu bagian dari sistem yang lebih besar. Lihat panduan lengkap sistem manajemen hotel untuk gambaran utuhnya, studi kasus Pekalongan untuk build nyatanya, atau layanan pembuatan sistem manajemen hotel kalau Anda ingin dibangunkan untuk hotel Anda.