Analitik, Laporan & Manajemen Pengguna (RBAC)
1. Filosofi Analitik Data
Zhuzhe POS tidak hanya berfungsi sebagai mesin pencatat transaksi, tetapi juga sebagai alat bantu pengambilan keputusan (Decision Support System). Dengan arsitektur data yang terstruktur, pemilik bisnis dapat memantau kesehatan finansial setiap cabang secara real-time. Laporan yang akurat adalah kunci untuk meminimalkan kebocoran dana dan mengoptimalkan persediaan barang.
2. Fitur Utama Laporan & Dashboard
2.1 Real-Time Dashboard Stats
Halaman utama memberikan ringkasan instan (Pulse) mengenai kondisi toko saat ini:
Total Revenue: Akumulasi pendapatan kotor harian/bulanan.
Total Transaksi: Jumlah nota yang berhasil diterbitkan.
Stok Kritis: Jumlah produk yang sudah mencapai ambang batas stok minimum dan butuh pengadaan segera.
Sales Terkini: Daftar 5 transaksi terakhir untuk pemantauan cepat kasir.
2.2 Laporan Penjualan Mendalam
Menampilkan riwayat seluruh transaksi yang tersimpan di database dengan fitur:
Filter & Search: Mencari transaksi berdasarkan nomor invoice atau nama pelanggan.
Rincian Profit: Menampilkan laba bersih yang didapatkan dari setiap transaksi setelah dikurangi HPP (Modal) dan pajak.
Metode Pembayaran: Rekapitulasi jumlah uang yang masuk melalui Cash, QRIS, maupun Transfer untuk mempermudah audit keuangan.
2.3 Top Product Analysis
Sistem menganalisis produk mana yang paling sering dibeli oleh pelanggan di cabang tertentu. Data ini membantu Manager dalam mengatur strategi promosi dan alokasi stok gudang agar barang yang laku selalu tersedia.
3. Manajemen Pengguna & Hak Akses (RBAC)
Keamanan aplikasi Zhuzhe POS didasarkan pada sistem Role-Based Access Control (RBAC) yang sangat ketat untuk mencegah penyalahgunaan wewenang.
3.1 Hirarki Peran (Roles)
Admin (Super Admin):
Memiliki akses penuh ke seluruh cabang toko di dalam sistem.
Dapat membuat toko baru, mengatur branding aplikasi pusat, dan mengelola akun admin_store.
Admin Store (Regional Manager):
Mengelola satu atau beberapa toko tertentu yang ditugaskan kepadanya.
Dapat berpindah-pindah konteks toko (Switch Store) untuk melihat laporan area.
Manager:
Hanya memiliki akses pada satu toko tempatnya bertugas.
Dapat mengelola katalog produk, stok, dan melihat laporan internal toko.
Cashier (Kasir):
Role paling terbatas, hanya diizinkan mengakses Terminal POS dan Dashboard ringkasan.
3.2 Penugasan Toko (Store Assignment)
Setiap user (kecuali Super Admin) dikunci pada kolom store_id. Hal ini menjamin bahwa meskipun kasir mencoba mengakses API secara manual, server Laravel akan menolak jika ID data yang diminta tidak sesuai dengan store_id milik user tersebut.
4. Penjelasan Teknis (Technical Deep Dive)
4.1 Agregasi SQL yang Efisien
Laporan statistik (Revenue & Profit) dihasilkan menggunakan fungsi agregat database (SUM, COUNT, GROUP BY) langsung di level database engine.
Optimasi: Menggunakan parameter per_page yang dinamis agar beban render frontend tetap ringan meskipun basis data memiliki jutaan catatan transaksi.
4.2 Keamanan Password & Sesi
Bcrypt Hashing: Password pengguna tidak disimpan dalam bentuk teks biasa, melainkan di-hash menggunakan algoritma Bcrypt yang aman dari peretasan.
Laravel Sanctum: Setiap sesi komunikasi antara React dan Laravel diamankan menggunakan Token Bearer. Token ini akan hangus otomatis jika user logout atau sesi kadaluarsa.
4.3 Hirarki Validasi Server-Side
Sistem backend memiliki logika pelapis:
admin_store dilarang membuat atau menghapus akun Admin (Super Admin).
Manager dilarang membuat akun admin_store.
User dilarang menghapus akun mereka sendiri untuk mencegah kehilangan jejak audit trail jika terjadi masalah.
5. Penjelasan Non-Teknis (User Experience)
5.1 Feedback Visual Status
Pada tabel laporan, sistem menggunakan kode warna untuk memudahkan pembacaan:
Invoice Blue: Menandakan link aktif untuk melihat detail nota.
Emerald Green: Menandakan angka laba atau keuntungan.
Indigo Tags: Menunjukkan role atau otoritas pengguna.
5.2 Pengelolaan Akun yang Mandiri
Setiap cabang dapat mendaftarkan kasir baru secara mandiri tanpa harus menghubungi Kantor Pusat, namun kasir tersebut akan secara otomatis terikat pada toko yang mendaftarkannya.
6. Ringkasan Objek Data (Data Dictionary)
6.1 Tabel users
Field
Tipe Data
Fungsi
username
String (Unique)
Identitas unik untuk masuk ke sistem.
role
Enum
Penentu fitur apa saja yang muncul di sidebar.
store_id
Foreign Key
Pengunci data agar user tidak bisa melihat data toko lain.
6.2 Tabel store_user (Pivot)
Field
Tipe Data
Fungsi
user_id
Foreign Key
Referensi ID pengguna.
store_id
Foreign Key
Daftar toko yang diizinkan untuk diakses (khusus admin_store).
Volume 7 akan membahas Detail Fitur Pengaturan Aplikasi (Settings), Branding Pusat, dan Konfigurasi Hardware (Printer).
Last updated