System Features & Modules
Bedah mendalam fitur utama dashboard mulai dari Manajemen User, Manajemen Game, Orkestrasi Kompetisi Real-Time, Whitelist, hingga Otomatisasi Support SLA.
Fitur Sistem & Modul Dashboard
Admin Dashboard menyediakan berbagai modul administratif terintegrasi untuk mengendalikan ekosistem game dan interaksi para pemain.
1. Struktur Navigasi Sidebar
Seluruh modul dikategorikan secara rapi pada komponen utama app-sidebar.tsx menjadi kelompok-kelompok berikut:
- Analitik: Halaman
/dashboarduntuk ringkasan cepat KPI performa server, statistik user, dan bagan lokasi geografis. - Manajemen User: Modul
/users,/profiles, dan/subscriptionsuntuk kendali akun. - Manajemen Konten: Modul
/quizzes,/quiz-approval,/category,/blog,/blog-category, dan/blog-sessions. - Kompetisi (Turnamen): Modul
/competition,/manage-competitions, dan/manage-sessions. - Pusat Bantuan: Modul
/support(dashboard tiket & antrean tiket aktif) dan laporan moderasi/reports. - Konfigurasi Sistem: Modul
/settings,/administrator,/receptionist,/rejection-templates,/address, dan/trash-bin.
2. Manajemen User & Profil (/users, /profiles)
Modul ini memberikan akses penuh kepada administrator untuk:
- CRUD Data Profil: Mengatur nama lengkap, username, foto profil (avatar), organisasi, tanggal lahir, negara, provinsi, dan kota dari data profil terdaftar.
- Moderasi Perilaku (Blocking/Role): Memblokir user bermasalah secara langsung (
is_blocked = true) dan menetapkan tingkat kewenangan (roleadmin atau user biasa). - Analisis Aktivitas Game: Melihat statistik host sesi turnamen, jumlah game yang diikuti, serta daftar sesi game yang baru diikuti oleh user secara mendalam.
- Manajemen Subskripsi: Memantau tingkat keanggotaan langganan user (Free, Starter, Pro, Enterprise) serta sinkronisasi tagihan invoice.
3. Orkestrasi Kompetisi & Integrasi Whitelist
Orkestrasi turnamen merupakan modul paling krusial yang mengendalikan alur kompetisi multi-babak (multi-round) dari awal hingga selesai.
Struktur Kompetisi Multi-Babak
Turnamen dibagi menjadi beberapa babak (Rounds), di mana masing-masing babak memiliki grup/klasemen (Groups/Standings) yang berisi sekumpulan peserta yang di-assign kuis tertentu.
Kompetisi (Competition)
└── Babak 1 (Round 1)
├── Grup A (Group A) -> Quiz ID 123 -> Sesi Game PIN XXXXXX
└── Grup B (Group B) -> Quiz ID 124 -> Sesi Game PIN YYYYYYSinkronisasi Real-Time CRUD Grup & Babak
Aksi pengelolaan babak dan klasemen di dashboard langsung terhubung secara transaksional dengan database PostgreSQL:
- Simpan Konfigurasi Babak (Assign Quiz): Melalui komponen phase-group-stage.tsx dan server action
saveGroupRoundsToDatabase(actions.ts), penambahan, perubahan, atau penghapusan babak kuis akan langsung disinkronkan ke database. - Penghapusan Bersih (Cleanup Hook): Untuk mencegah data sampah yatim piatu (orphaned records), saat admin menghapus grup kompetisi atau babak, sistem otomatis menghapus:
- Room lobby terkait di tabel
groups. - Sesi room game terkait di tabel
game_sessions(atau tabelsessions). - Anggota grup yang berada di dalamnya (
competition_group_members).
- Room lobby terkait di tabel
Sistem Whitelist Keamanan Ruangan Sesi Game
Turnamen formal membatasi masuknya pemain luar yang tidak sah. Integrasi whitelist beroperasi sebagai berikut:
- Pada saat grup babak dibuat, daftar ID user yang terdaftar dalam kompetisi dimasukkan ke dalam kolom array
allowed_user_idspada tabelsessionsataugame_sessions. - Ketika pemain mencoba melakukan auto-join atau memasukkan pin di game client (AstroLearn, CrazyRace, Memory-Game, NitroQuiz, Zombie-Rawr), kode game client akan mengambil data session dari database.
- Jika array
allowed_user_idstidak kosong, game client memvalidasi apakah profile ID pemain terdaftar di dalamnya. Jika tidak terdaftar, user akan dihadapkan pada layar Access Denied (Akses Ditolak) yang elegan dan dinonaktifkan dari permainan.
4. Pelacakan Sesi Game (/game-sessions)
Modul ini menampilkan status live monitoring dari seluruh game yang sedang berjalan di ekosistem game:
- Game PIN: Mengidentifikasi kode room aktif (6 digit alfanumerik).
- Host Info: Menampilkan identitas admin/user pembuat ruangan.
- Status Room: Menunjukkan siklus lobi (
waiting,active/playing,completed). - Statistik Peserta: Menampilkan jumlah pemain aktif, nickname mereka, durasi permainan, batasan soal, serta peringkat skor akhir secara langsung.
5. Antrean Support & Otomatisasi SLA (/support, /reports)
Modul support tiket menangani keluhan pengguna dengan sistem otomasi Service Level Agreement (SLA) berbasis database:
- Live Chat & Internal Notes: Support staff dapat membalas pesan pengguna langsung pada tiket keluhan. Sistem menyediakan Internal Notes, yaitu catatan internal khusus staff untuk berkomunikasi di balik layar tanpa terlihat oleh pengguna.
- Otomatisasi Prioritas Tiket (Enterprise SLA): Menggunakan database trigger (
fn_auto_enterprise_priority), jika tiket dibuat oleh user dengan tipe langganan Enterprise, sistem secara otomatis mengubah tingkat prioritas tiket menjadi High. - Otomatisasi Eskalasi Overdue Billing: Tiket terkait kategori billing yang belum terselesaikan dalam waktu 24 jam dan memiliki invoice yang belum dibayar (unpaid/overdue) secara otomatis dinaikkan status prioritasnya menjadi Urgent via routine cron
fn_escalate_overdue_billing(). - Moderasi Konten & Rejection Templates: Jika ada laporan konten kuis/blog yang melanggar aturan, moderator dapat memblokir konten tersebut dan mengirimkan pemberitahuan penolakan berdasarkan templat alasan penolakan multi-bahasa (
rejection-templates).
6. Tempat Sampah (/trash-bin)
Untuk mencegah kehilangan data penting akibat kesalahan klik dari admin, dashboard mengimplementasikan fitur soft-delete:
- Data Quizzes, Users, dan Groups yang dihapus tidak langsung hilang dari database utama, melainkan dipindahkan statusnya dan dikumpulkan ke halaman
/trash-bin. - Admins dapat melakukan Restore untuk mengembalikan data ke status aktif semula, atau melakukan Permanent Delete untuk membersihkan data selamanya dari hard disk database.