All guides

POS App (Cashier)

Guides for running the cashier: device activation, login, transactions, payments, shifts, and attendance.

Sinkronisasi & Offline

Konsistensi Data (HLC)

Bagaimana Hybrid Logical Clock (HLC) menjaga urutan dan konsistensi data antar perangkat dan koneksi SSE real-time.

3 min read

Masalah yang Dipecahkan HLC

Bayangkan dua kasir di gerai yang sama — masing-masing dengan tablet POS — sama-sama membuat pesanan dalam detik yang sama saat WiFi terputus. Ketika koneksi pulih dan keduanya mengirim data ke server, bagaimana server tahu pesanan mana yang lebih dulu? Dan bagaimana memastikan tidak ada yang saling menimpa?

Itulah yang diselesaikan Hybrid Logical Clock (HLC) — mekanisme stempel waktu yang dipakai POS untuk menjaga urutan dan konsistensi data di lingkungan multi-perangkat.


Apa itu HLC?

HLC adalah kombinasi dua komponen:

KomponenArtinya
Physical (waktu fisik)Waktu jam perangkat dalam milidetik sejak epoch — mencerminkan waktu nyata
Logical (penghitung logika)Penghitung yang naik saat dua kejadian terjadi di milidetik yang sama — memastikan urutan tetap berbeda

Setiap operasi (buat pesanan, ubah status meja, catat pembayaran) mendapat cap HLC berisi tiga bagian: physical, logical, dan device_id (ID unik perangkat).

Contoh: 2026-07-14T08:23:41.123Z:0@pos-tablet-001

Artinya: kejadian terjadi di perangkat pos-tablet-001 pada waktu fisik tersebut, penghitung logika ke-0 (pertama di milidetik itu).


Cara HLC Menjaga Urutan

Aturan sederhana: HLC selalu maju — tidak pernah mundur. Begini caranya:

  1. Kejadian lokal — HLC maju ke waktu jam saat ini, atau menaikkan penghitung logika bila jam belum berubah.
  2. Menerima data dari server/perangkat lain — HLC mengambil nilai maksimum antara jam lokal, jam dari server, dan penghitung logika tertinggi, lalu menaikkannya satu langkah.
  3. Restart perangkat — HLC disimpan ke penyimpanan lokal dan dimuat kembali saat app dibuka, sehingga urutan tidak pernah mundur ke awal.

Dengan aturan ini, dua pesanan dari perangkat yang berbeda selalu bisa dibandingkan dan diurutkan — bahkan bila dibuat saat keduanya offline.


Peran HLC dalam Sinkronisasi

Saat POS mengirim antrian ke server:

  • Setiap operasi menyertakan cap HLC-nya.
  • Server memeriksa apakah HLC ini lebih baru dari versi yang sudah tersimpan.
  • Server merespons dengan HLC versi terbarunya, dan perangkat memperbarui jam lokalnya agar selaras.

Saat POS menerima data dari server (pull):

  • Data yang masuk disertai server_hlc.
  • POS menggabungkan nilai ini ke jam lokalnya (receive), memastikan semua kejadian berikutnya di perangkat ini tercatat setelah data server yang baru diterima.

Hasilnya: semua perangkat di satu cabang memiliki "persepsi urutan" yang konsisten — tidak ada kejadian yang saling menimpa secara tidak terduga.


Aturan Penyelesaian Konflik

Bila dua perangkat mengedit entitas yang sama (misalnya status meja) secara bersamaan:

  • Pesanan lokal yang belum dikirim (unsynced) dipertahankan — tidak ditimpa oleh data dari server hingga berhasil terkirim.
  • Pesanan lokal yang sudah dikirim (synced) diperbarui oleh versi server bila ada perubahan dari perangkat lain.
  • Untuk pembayaran: tulis pertama menang (server menolak duplikat; transaksi keuangan tidak boleh ganda).

Catatan untuk Pengguna

Sebagai kasir atau pelayan, Anda tidak perlu memahami detail teknis HLC. Yang perlu diketahui:

  • Setiap transaksi yang Anda buat pasti punya cap waktu unik — tidak akan tabrakan dengan perangkat lain.
  • Data tidak akan hilang meski dua perangkat edit bersamaan saat offline.
  • Urutan pesanan di KDS dan laporan selalu mencerminkan urutan kejadian yang sesungguhnya, bukan hanya urutan data masuk ke server.

Bila Anda melihat urutan pesanan yang tampak tidak biasa setelah sinkronisasi panjang, kemungkinan besar ini adalah efek normal dari HLC yang merekonsiliasi data dari beberapa perangkat. Hubungi manajer bila ada pesanan yang dirasa hilang atau ganda.

WhatsApp Kami