Cara kerja panel Dashboard
Panel /dashboard menampilkan angka live dari database kerja. Halaman ini menjelaskan setiap item panel dan cara memakainya — untuk operator awam (bagian 1–7) dan teknisi (bagian 8–9). Tahap kerja saat ini: backend + dashboard panel saja; halaman publik belum dibuat (dipindah ke mockup/arsip-publik/).
- 1Baca label sumberPastikan tertulis DATA OPERASIONAL LIVE dari DATABASE KERJA.
- 2Baca 4 kartu KPIAngka ringkas kondisi hari ini — detail tiap kartu di bagian 2.
- 3Pilih jenis data + cari6 tombol filter, lalu ketik kata kunci — hasil muncul otomatis.
- 4Kerjakan di ruang kerjaDashboard hanya memantau; aksi tulis tetap di Data Masuk / Periksa / Data.
1. Sumber angka panel
File: app/dashboard/page.tsx (YouthDashboard, mode internal saja).
| Hal | Panel /dashboard |
|---|---|
| Sumber angka | GET /api/internal/summary — database kerja, live |
| Pencarian | Live per baris via GET /api/internal/search (limit 12, debounce 350 mdtk) |
| Identitas | Nama, telepon, alamat tampil utuh + badge internal |
| Tautan bawah | Data Masuk · Periksa Data · Data · Laporan Publik |
2. Empat kartu KPI — arti & tindak lanjut
Mode internal (label + catatan kecil di bawah angka):
| Kartu | Artinya | Sumber field | Kalau angkanya aneh |
|---|---|---|---|
| Pemuda 16–30 (live) | Orang unik usia 16–30 per cutoff 2025-12-31 | totals.youth_16_30 (catatan: dari youth_candidates) | Buka Data → Pemuda 16–30, cek kelompok usia |
| Unit usaha (live) | Seluruh unit usaha operasional | totals.business_units | Buka Data → Unit Usaha, saring per kecamatan |
| Penerima bantuan (live) | Penerima di seluruh program | totals.aid_recipients (+ aid_programs) | Buka Data → Bantuan, cek per program |
| Perlu diperiksa | Jumlah issue terbuka (semua kode) | openIssues[].value dijumlahkan | Klik Periksa Data — kerjakan satu per satu |
Cara hitung ada di kpis (useMemo) dari totals dan openIssues pada GET /api/internal/summary.
3. Enam tombol jenis data
Tombol hanya mengganti kind (state lokal). Mode internal memetakan ke entity API (liveEntity); Wilayah dan Status Verifikasi tidak memanggil API melainkan memakai ringkasan yang sudah dimuat.
| Tombol | Entity API | Hasil yang tampil | Contoh pakai |
|---|---|---|---|
| Pelaku Usaha | youth | Nama · 📞 telepon · alamat + kecamatan + status | Ketik nama atau nomor HP untuk menemukan orang |
| Unit Usaha | business | Nama usaha/pemilik · kategori · alamat + kecamatan + status | Ketik nama usaha, pemilik, atau produk |
| Wilayah | — (dari summary) | Daftar kecamatan: pemuda 16–30 + catatan kandidat/usaha/penerima | Bandingkan antar-kecamatan sekilas |
| Program Bantuan/Hibah | aid | Penerima/ketua · program · kecamatan + status | Ketik nama program atau penerima |
| Organisasi/OKP | organization | Nama · kategori/bidang + jumlah anggota · alamat + status | Ketik nama atau bidang organisasi |
| Status Verifikasi | — (dari summary) | Issue terbuka (kode + tingkat) + paket data per status | Lihat apa yang menumpuk, lalu ke Periksa |
4. Kotak pencarian — cara pakai
- Pilih dulu tombol jenis data (langkah 3), karena kolom yang dicari mengikuti jenisnya.
- Ketik kata kunci — permintaan dikirim 350 milidetik setelah berhenti mengetik (
useDebounced), jadi tidak perlu menekan Enter. - Hasil dibatasi 12 baris. Jika tertulis “Menampilkan 12 dari N hasil”, buka menu Data untuk daftar lengkap + halaman.
- Untuk
Wilayah/Status Verifikasi, pencarian hanya menyaring daftar yang sudah dimuat — tanpa memanggil API. - Kolom pencarian per jenis: Pemuda = nama/telepon; Usaha = usaha/pemilik/produk/jenis; Bantuan = penerima/ketua/program; Organisasi = nama/bidang.
5. Membaca kartu hasil
Setiap kartu hasil live terdiri dari 3 baris:
| Baris | Isi | Contoh |
|---|---|---|
| Tebal (nama) | Nama orang / usaha / penerima / organisasi | Budi Santoso |
| Biasa (kontak/kategori) | 📞 telepon (pemuda) · kategori (usaha) · program (bantuan) · bidang + anggota (organisasi) | 📞 0853… |
| Kecil (lokasi + status) | Alamat · Kec. … · status terjemahan Indonesia | Jl. Harimau · Kec. Maritengngae · Menunggu diperiksa |
Kartu agregat (Wilayah / Status Verifikasi) lebih sederhana: nama · angka · catatan jenis agregat. Nilai kosong tampil “–”.
6. Peta kecamatan
Komponen SidrapDistrictMap mewarnai 11 kecamatan berdasar mapDistricts: panel menjumlahkan youth_candidates + business_units per kecamatan dari summary. Peta hanya visualisasi — klik kecamatan tidak memfilter; gunakan tombol Wilayah + pencarian.
7. Kamus status di layar
Status verifikasi (STATUS_ID):
| Kode | Tampil |
|---|---|
needs_review | Menunggu diperiksa |
submitted | Diperiksa |
verified | Disetujui |
rejected | Ditolak |
draft | Konsep |
needs_revision | Perlu revisi |
Kelompok usia (AGE_ID, cutoff 2025-12-31):
| Kode | Tampil |
|---|---|
AGE_0_15 | 0–15 tahun |
AGE_16_30 | Pemuda 16–30 tahun |
AGE_31_PLUS | 31 tahun ke atas |
AGE_UNVERIFIED | Usia belum terverifikasi |
8. Untuk teknisi — aliran data & berkas
| Lapisan | Berkas / endpoint | Catatan |
|---|---|---|
| Komponen | app/dashboard/page.tsx → YouthDashboard, useDebounced, kpis/results/mapDistricts via useMemo | Mode internal saja |
| Gaya | app/access.module.css (shell, kpis, search, results) | Terpisah dari (internal)/internal.css |
| API internal | GET /api/internal/summary, GET /api/internal/search?entity&q&limit=12&page=1 | Butuh izin youth/business/aid/organization.read; validasi di lib/api/query.ts |
| Peta | app/admin/SidrapDistrictMap.tsx | Terima districts mode internal |
Batas yang disengaja (jangan “diperbaiki” tanpa diskusi)
- Dashboard read-only: tidak ada tombol tulis; eksekusi tetap di ruang kerja 6 menu.
- NIK tidak pernah dirender — tidak disimpan mentah (hanya HMAC + pepper).
- Pencarian live dibatasi 12 baris; daftar lengkap + pagination hanya di
/data(25/baris). - Kegagalan fetch pencarian diam-diam mempertahankan hasil lama; hanya fetch ringkasan yang menampilkan peringatan.
9. Jika ada masalah
| Gejala | Penyebab umum | Cara mengatasi |
|---|---|---|
| Banner ⚠️ “Tidak bisa memuat data” | Dev server mati / DB terkunci | Pastikan npm run dev jalan di port 3000, muat ulang halaman |
| Kartu KPI kosong / “–” | Summary belum termuat | Tunggu fetch /api/internal/summary; cek Network tab |
| Hasil pencarian tidak berubah | Mode Wilayah/Status (tanpa API) atau error fetch yang ditahan | Ganti tombol jenis ke Pelaku/Unit Usaha; buka Data untuk pesan error jelas |
| Angka tidak sesuai harapan | Data kerja berubah (live) atau filter salah | Cek filter jenis + kata kunci; bandingkan dengan Pusat Data |
Kembali: Dashboard internal · Ruang kerja · Pusat Data