Sentra Service — Ops (Security + Deployment + Testing)¶
Security — Service Delta¶
Baseline security patterns:
_shared/security-patterns.md
Overrides¶
- (no overrides — baseline RBAC, audit log hash chain, PJSP callback verification semua dipakai)
Tambahan Sistem-Spesifik¶
- Distributed Slot Lock (Anti-Sniping): Sistem menjamin satu slot waktu hanya bisa dikunci oleh satu token checkout transaksi dalam satu waktu menggunakan skema Redlock Redis. Ini memotong celah di mana dua browser pelanggan yang memindai QRIS di saat yang sama mendapatkan slot janji temu yang sama (double booking race condition).
- Anti-Fraud Commission Loop: Komisi jasa staf tidak dihitung berdasarkan input sepihak staf di tablet mereka. Perhitungan komisi hanya sah terpicu apabila data janji temu terikat dengan struk transaksi POS yang telah dicheckout lunas dan terverifikasi di server cloud dengan tanda tangan digital enkripsi (Digital Signature).
- Physical Session Expiry (Kasir Terminal): Komputer terminal kasir depan menerapkan auto-logout session setiap 5 menit jika tidak terdeteksi aktivitas kursor, mencegah staf nakal memanipulasi pemesanan atau mencuri data transaksi pelanggan saat kasir sedang pergi.
Deployment — Service Delta¶
Baseline deployment:
_shared/deployment-baseline.md
Overrides¶
- (no overrides)
Tambahan Sistem-Spesifik¶
- Queue Visual Display Node per Outlet: Setiap outlet menjalankan satu unit Tauri display client untuk layar monitor lobi antrean — berkomunikasi via WebSocket ke API Gateway cloud (berbeda dari F&B yang punya edge Mini PC lokal).
- Redis Cluster Deployment (Redlock): Redis dijalankan dalam mode cluster minimal 3 node untuk mendukung skema Redlock yang valid — single node Redis tidak cukup untuk menjamin mutual exclusion di environment terdistribusi.
- WhatsApp Reminder Worker (Node.js BullMQ): Worker scheduling reminder WA dijalankan sebagai service terpisah dengan queue BullMQ — memastikan pengiriman WA tidak terblokir oleh beban transaksi booking utama.
Testing Checklist (QA)¶
19.1 Pengujian Slot Waktu & Double-Booking¶
- [ ] Simulasi Balapan Pemesanan (Race Condition Test): Jalankan skrip testing otomatis (JMeter) untuk mengirimkan 100 request pemesanan serentak di waktu milidetik yang sama untuk slot stasiun, staf, dan tanggal yang sama. Hasil Sukses: Tepat hanya ada 1 request yang mendapatkan token lock, sedangkan 99 request lainnya ditolak dengan pesan error slot telah terisi.
- [ ] WhatsApp Bot Auto-Responder: Pastikan saat status janji temu diubah menjadi
CANCELLED, notifikasi pembatalan terkirim ke WhatsApp klien dalam waktu kurang dari 5 detik.
19.2 Pengujian Komisi & Payroll¶
- [ ] Verifikasi Tiered Commission Calculation: Buat transaksi layanan simulasi untuk staf yang melewati threshold Tier 2 (Rp 5.000.000), pastikan persentase komisi berubah dari 30% ke 35% secara otomatis di laporan payroll bulanan.
- [ ] Commission Only on Paid Checkout: Pastikan komisi staf tidak tercatat di
staff_commissionsjika status appointment belumCOMPLETEDdan transaksi belum berstatusPAID.