Sentra Membership — Ops (Security + Deployment + Testing)¶
Security — Membership Delta¶
Baseline security patterns:
_shared/security-patterns.md
Overrides¶
- (no overrides — baseline patterns apply)
Tambahan Sistem-Spesifik¶
Anti-Passback Audit Trail:
- Setiap percobaan akses gate (sukses maupun gagal) dicatat permanen di tabel gate_logs dengan kolom is_success dan failure_reason.
- Log tidak dapat dihapus atau dimodifikasi oleh role apapun di bawah Owner — hanya append-only.
- Anti-passback violation secara otomatis memicu alert ke resepsionis dan menciptakan entri audit yang dapat di-export untuk investigasi fraud.
Wallet Ledger Immutability:
- Tabel wallet_transactions bersifat append-only — tidak ada operasi UPDATE atau DELETE yang diizinkan.
- Setiap baris transaksi memiliki transaction_signature unik (HMAC-SHA256 dari detail transaksi).
- Saldo di tabel wallets dilindungi oleh wallet_signature_hash:
Signature = HMAC-SHA256(wallet_id || balance || updated_at, Secret_Key)
- Sebelum setiap transaksi baru, sistem memverifikasi ulang signature. Ketidakcocokan = saldo dimanipulasi paksa = wallet dibekukan otomatis + security alert.
Biometric Data Privacy (UU PDP Compliant): - Raw foto wajah dihapus dari RAM edge device dalam < 2 detik setelah ekstraksi. - Hanya 128-dimensi face embedding hash (AES-256 encrypted) yang disimpan di database. - Tidak ada foto mentah yang tersimpan di cloud storage manapun. - Biometric hash tidak dapat di-reverse-engineer kembali menjadi foto asli (one-way).
Dynamic QR Code Anti-Replay: - QR code check-in adalah token JWT dinamis yang berisi ID Member + timestamp pembuatan. - Token diperbarui otomatis setiap 30 detik di aplikasi mobile. - Edge Gateway menolak token QR dengan selisih waktu > 30 detik dari jam server lokal.
Deployment — Membership Delta¶
Baseline deployment:
_shared/deployment-baseline.md
Overrides¶
- (no overrides)
Tambahan Sistem-Spesifik¶
Edge Gateway Raspberry Pi per Cabang: - Setiap cabang gym memiliki satu unit Raspberry Pi (atau Industrial PC) yang menjalankan Edge Gateway daemon (Go binary). - Edge Gateway terhubung ke cloud via Secure MQTT over WebSockets TLS 1.3. - Perangkat edge harus tahan 24 jam operasi nonstop dengan UPS backup. - Update firmware edge gateway dilakukan via OTA (Over-The-Air) push dari cloud admin.
Cloud Architecture (AWS Multi-AZ):
AWS Route 53 → AWS ALB
├─ AZ-A: EKS Pod (Go API Engine) + EKS Pod (NestJS Core)
└─ AZ-B: EKS Pod (Go API Engine) + EKS Pod (NestJS Core)
└─ Redis Cluster (Active Locks & Session Cache)
└─ Amazon RDS PostgreSQL (Active-Passive Multi-AZ Replica)
Edge-to-Cloud Communication:
Branch Physical Site
└─ Raspberry Pi (Mosquitto MQTT Broker + Go Daemon)
├─ Turnstile Gate 1 (Face Camera + NFC/RFID Reader)
└─ Turnstile Gate 2 (Face Camera + NFC/RFID Reader)
│
└─ Secure MQTT over WebSockets TLS 1.3
│
└─ AWS Cloud Backend
Testing Checklist (QA)¶
19.1 Core Automation Test Suite Scenarios¶
| Category | Test Case Scenario | Validation Target | Test Type |
|---|---|---|---|
| High Concurrency Booking | Simulasi 3.000 request booking slot kelas dalam milidetik yang sama saat kuota tersisa tinggal 1 | Tepat 1 request sukses mendapatkan slot. 2.999 lainnya masuk waiting list tanpa deadlock | Concurrency / Load Test |
| Offline Gate Access | Internet cabang diputus paksa. Member aktif men-scan wajah di kamera gerbang | Gateway lokal Raspberry Pi memproses biometrik menggunakan SQLite lokal dan membuka turnstile gate | Offline / Chaos Test |
| Anti-Passback Rule | Member mencoba men-scan QR code check-in kedua kalinya berturut-turut tanpa scan keluar | Sistem menolak izin masuk, is_success: false, turnstile tetap terkunci |
Functional / E2E Gate |
| Wallet Anti-Tampering | Memodifikasi nilai kolom balance secara manual di PostgreSQL via pgAdmin |
Transaksi berikutnya ditolak karena ketidakcocokan wallet_signature_hash (Error: TAMPERED_DATA) |
Security / Penetration |
| Payment Gateway Sync | Simulasi delay webhook Midtrans hingga 10 menit saat top-up saldo via QRIS | Sistem memproses transaksi asinkron tanpa duplikasi saldo meskipun webhook dikirim berulang | Integration / Webhook |