EVENTPASS - UPDATE MODE OFFLINE GATE
====================================

FITUR
- Scanner Gate tetap dapat memvalidasi tiket menggunakan data peserta yang tersimpan di browser ketika internet lambat atau terputus.
- Hasil scan offline masuk ke antrean IndexedDB dan tersinkron otomatis saat koneksi kembali stabil.
- Scanner dan Display pada laptop/mini PC yang sama tetap terhubung secara lokal melalui BroadcastChannel/localStorage.
- Halaman Scanner dan Display serta CSS disimpan oleh Service Worker agar dapat dibuka kembali tanpa internet setelah minimal satu kali dibuka online.
- Client Scan ID membuat proses sinkronisasi idempotent sehingga retry tidak menggandakan check-in.
- Tombol Perbarui Data Offline dan Sinkronkan Sekarang tersedia pada halaman scanner.

PERSIAPAN WAJIB SEBELUM ACARA
1. Buka Scanner dan Display setiap gate saat internet tersedia.
2. Pada Scanner, tekan Perbarui Data Offline dan pastikan jumlah peserta tampil.
3. Jangan menggunakan mode incognito/private.
4. Jangan menghapus cache/site data browser sebelum seluruh antrean menunjukkan 0.
5. Gunakan Chrome atau Edge terbaru dan izinkan penyimpanan situs.
6. Setelah internet kembali, tunggu sinkron otomatis atau tekan Sinkronkan Sekarang.

CATATAN OPERASIONAL PENTING
- Saat beberapa komputer gate benar-benar offline bersamaan, pencegahan tiket ganda hanya berlaku pada cache lokal masing-masing perangkat. Tiket yang sama dapat sementara diterima pada dua gate offline yang berbeda. Saat sinkronisasi, server hanya menerima check-in pertama dan menandai sisanya sebagai konflik/sudah digunakan.
- Untuk pencegahan tiket ganda real-time tanpa internet antar semua gate, diperlukan Local Event Server pada jaringan LAN. Mode dalam paket ini adalah offline queue per perangkat, cocok untuk internet lambat/putus sementara.
- Data offline mengikuti event dan status gate pada waktu cache terakhir diperbarui. Selalu perbarui cache setelah mengubah event, status pembayaran, atau konfigurasi gate.

DATABASE
Tabel gate_scan_requests dibuat otomatis. Jika hosting membatasi CREATE TABLE, jalankan UPGRADE_OFFLINE_GATE.sql melalui phpMyAdmin.
