Tunas Akara
Kembali ke Blog

Cara Memodelkan Status Kamar Hotel biar Anti-Salah

oleh Rayhan2026-06-196 menit baca
sistem manajemen hotelstate machinepostgresqloperasional

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:

Loading diagram…

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:

Loading diagram…

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.