Sistem Data KepemudaanDisporapar Kabupaten Sidenreng Rappang
Lingkungan lokalSuper AdminAkses internal
Petunjuk teknis pemakaian

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/).

  1. 1Baca label sumberPastikan tertulis DATA OPERASIONAL LIVE dari DATABASE KERJA.
  2. 2Baca 4 kartu KPIAngka ringkas kondisi hari ini — detail tiap kartu di bagian 2.
  3. 3Pilih jenis data + cari6 tombol filter, lalu ketik kata kunci — hasil muncul otomatis.
  4. 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).

HalPanel /dashboard
Sumber angkaGET /api/internal/summary — database kerja, live
PencarianLive per baris via GET /api/internal/search (limit 12, debounce 350 mdtk)
IdentitasNama, telepon, alamat tampil utuh + badge internal
Tautan bawahData Masuk · Periksa Data · Data · Laporan Publik

2. Empat kartu KPI — arti & tindak lanjut

Mode internal (label + catatan kecil di bawah angka):

KartuArtinyaSumber fieldKalau angkanya aneh
Pemuda 16–30 (live)Orang unik usia 16–30 per cutoff 2025-12-31totals.youth_16_30 (catatan: dari youth_candidates)Buka Data → Pemuda 16–30, cek kelompok usia
Unit usaha (live)Seluruh unit usaha operasionaltotals.business_unitsBuka Data → Unit Usaha, saring per kecamatan
Penerima bantuan (live)Penerima di seluruh programtotals.aid_recipients (+ aid_programs)Buka Data → Bantuan, cek per program
Perlu diperiksaJumlah issue terbuka (semua kode)openIssues[].value dijumlahkanKlik 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.

TombolEntity APIHasil yang tampilContoh pakai
Pelaku UsahayouthNama · 📞 telepon · alamat + kecamatan + statusKetik nama atau nomor HP untuk menemukan orang
Unit UsahabusinessNama usaha/pemilik · kategori · alamat + kecamatan + statusKetik nama usaha, pemilik, atau produk
Wilayah— (dari summary)Daftar kecamatan: pemuda 16–30 + catatan kandidat/usaha/penerimaBandingkan antar-kecamatan sekilas
Program Bantuan/HibahaidPenerima/ketua · program · kecamatan + statusKetik nama program atau penerima
Organisasi/OKPorganizationNama · kategori/bidang + jumlah anggota · alamat + statusKetik nama atau bidang organisasi
Status Verifikasi— (dari summary)Issue terbuka (kode + tingkat) + paket data per statusLihat apa yang menumpuk, lalu ke Periksa

4. Kotak pencarian — cara pakai

  1. Pilih dulu tombol jenis data (langkah 3), karena kolom yang dicari mengikuti jenisnya.
  2. Ketik kata kunci — permintaan dikirim 350 milidetik setelah berhenti mengetik (useDebounced), jadi tidak perlu menekan Enter.
  3. Hasil dibatasi 12 baris. Jika tertulis “Menampilkan 12 dari N hasil”, buka menu Data untuk daftar lengkap + halaman.
  4. Untuk Wilayah / Status Verifikasi, pencarian hanya menyaring daftar yang sudah dimuat — tanpa memanggil API.
  5. 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:

BarisIsiContoh
Tebal (nama)Nama orang / usaha / penerima / organisasiBudi Santoso
Biasa (kontak/kategori)📞 telepon (pemuda) · kategori (usaha) · program (bantuan) · bidang + anggota (organisasi)📞 0853…
Kecil (lokasi + status)Alamat · Kec. … · status terjemahan IndonesiaJl. 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):

KodeTampil
needs_reviewMenunggu diperiksa
submittedDiperiksa
verifiedDisetujui
rejectedDitolak
draftKonsep
needs_revisionPerlu revisi

Kelompok usia (AGE_ID, cutoff 2025-12-31):

KodeTampil
AGE_0_150–15 tahun
AGE_16_30Pemuda 16–30 tahun
AGE_31_PLUS31 tahun ke atas
AGE_UNVERIFIEDUsia belum terverifikasi

8. Untuk teknisi — aliran data & berkas

LapisanBerkas / endpointCatatan
Komponenapp/dashboard/page.tsx → YouthDashboard, useDebounced, kpis/results/mapDistricts via useMemoMode internal saja
Gayaapp/access.module.css (shell, kpis, search, results)Terpisah dari (internal)/internal.css
API internalGET /api/internal/summary, GET /api/internal/search?entity&q&limit=12&page=1Butuh izin youth/business/aid/organization.read; validasi di lib/api/query.ts
Petaapp/admin/SidrapDistrictMap.tsxTerima 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.
Aturan privasi tahap ini: panel internal menampilkan data utuh + badge “jangan disebar”; halaman publik belum ada.

9. Jika ada masalah

GejalaPenyebab umumCara mengatasi
Banner ⚠️ “Tidak bisa memuat data”Dev server mati / DB terkunciPastikan npm run dev jalan di port 3000, muat ulang halaman
Kartu KPI kosong / “–”Summary belum termuatTunggu fetch /api/internal/summary; cek Network tab
Hasil pencarian tidak berubahMode Wilayah/Status (tanpa API) atau error fetch yang ditahanGanti tombol jenis ke Pelaku/Unit Usaha; buka Data untuk pesan error jelas
Angka tidak sesuai harapanData kerja berubah (live) atau filter salahCek filter jenis + kata kunci; bandingkan dengan Pusat Data

Kembali: Dashboard internal · Ruang kerja · Pusat Data