Repository navigation
Feat: Monitoring Pengisian & Kualitas Data Desa - #1314
Open
pandigresik wants to merge 39 commits into
Open
pandigresik wants to merge 39 commits into
pandigresik wants to merge 39 commits into
Conversation
…-dashboard)\n\n- spec.md with US1–US5, FR-001–FR-017, SC-001–SC-007 (no reload, tanpa data!=nol, clustering, popup flags)\n- plan.md + research.md + data-model.md + quickstart.md + contracts/view-contract.md\n- requirements checklist all pass
…oard) with US1–US5 phases
…asial sectors); no sektor picker; kecamatan-only filter
… filter, hover/click popup
…matan filter, hover/click popup
…/click popup, kecamatan-only filter, no sektor picker
Contributor
|
🔄 AI PR Review sedang antri di server...
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Implementasi fitur Monitoring Pengisian & Kualitas Data Desa (KAB-07) sesuai OpenSID/OpenKab#1303. Fitur ini menyediakan dasbor monitoring terpusat bagi Bappeda/Dinas Kabupaten untuk memantau status pengisian data spasial seluruh desa, mendeteksi desa yang belum pernah mengirim atau tertinggal versi skema, memantau persentase kelengkapan dan skor kualitas data, serta mengekspor laporan bulanan desa dalam format CSV.
Halaman ini dibangun dengan konsep skeleton initial load (tanpa memuat seluruh data desa di awal untuk menjaga performa), di mana data diambil secara asinkron (AJAX) berdasarkan filter sektor dan kecamatan yang dipilih. Seluruh data dikonsolidasikan langsung dari API Satu Data (adopsi #468, skema & riwayat #468, nilai & ringkasan #469) tanpa menambah tabel database lokal baru.
Changes made:
[Backend] Controller (
app/Http/Controllers/DataSpasial/MonitoringController.php)index()(skeleton view dengan dropdown sektor yang di-cache 30 menit),data()(respons JSON kartu, tabel, dan metadata paginasi), sertaekspor()(stream download berkas CSV laporan bulanan).dataspasial-monitoring-read.[Backend] Service (
app/Services/MonitoringDataSpasialService.php- Baru)DataSpasialApiServicedan reuseAdopsiDesaService.isianAktif).desa,impor,pemetaan).perlu_tindakan= true), diikuti abjad nama desa.StreamedResponse(hingga 5.000 baris) lengkap dengan metadata header komentar#(periode, tanggal pembuatan, filter).[Backend] Validation Request
app/Http/Requests/DataSpasial/MonitoringDataRequest.php(Baru): Validasi parameter filter query (sektorwajib string max:50,kode_kecamatanopsional,periodeopsional format YYYY-MM,page&per_page).[Frontend & View] Komponen Reusable & Halaman Monitoring
resources/views/components/dataspasial-filter-konteks.blade.php(Baru): Komponen Blade pakai-ulang pembungkus filter sektor dan kecamatan.resources/views/components/dataspasial-dropdown-sektor.blade.php(Baru): Komponen dropdown sektor.resources/views/components/dataspasial-dropdown-kecamatan.blade.php(Baru): Komponen dropdown kecamatan dengan opsi "Semua Kecamatan".resources/views/dataspasial/monitoring/index.blade.php(Diperbarui): Tampilan monitoring dengan 3 kartu ringkasan, penanganan state (loading spinner, validasi filter, data kosong, dan layanan tidak tersedia), tabel data desa (kolom: Desa, Kecamatan, Kelengkapan, Kualitas, Status), paginasi, dan tombol Ekspor CSV.public/js/dataspasial/monitoring.js(Baru): Script interaktif client-side untuk memuat data via AJAX, menangani perubahan filter & sinkronisasi URL query string, merender kartu ringkasan dan bilah progres kelengkapan, penanganan paginasi, serta ekspor CSV tanpa reload halaman.[Routing] (
routes/web.php)dataspasial-monitoring-read:GET /dataspasial/monitoring/data(dataspasial.monitoring.data)GET /dataspasial/monitoring/ekspor(dataspasial.monitoring.ekspor)[Testing & Fixtures]
tests/Feature/DataSpasial/Fixtures.php: Menambahkan fixtures lengkap untuk kebutuhan KAB-07 (adopsi desa, ringkasan per desa, nilai per desa dengan beragam sumber, skema dan isian aktif, serta daftar wilayah kecamatan).tests/Feature/DataSpasial/MonitoringDataTest.php(Baru): Rangkaian feature test komprehensif mencakup proteksi autentikasi & permission, skeleton render, validasi filter, penampilan seluruh desa (termasuk belum mengisi), kalkulasi kartu ringkasan & semantik baris, paginasi, filter kecamatan, penanganan periode, fallback graceful error saat API unavailable, dan urutan prioritas tindakan desa.Reason for change:
Impact of change:
✅ Cakupan Lengkap: Semua desa di wilayah kabupaten terpantau, termasuk desa yang belum pernah mengirimkan data sama sekali.
✅ Ringkasan Cepat: Tiga kartu ringkasan langsung memberikan gambaran makro kepatuhan desa tanpa perlu kalkulasi manual.
✅ Prioritas Jelas: Tabel otomatis mengurutkan desa yang membutuhkan perhatian/tindakan di baris teratas.
✅ Performa Optimal: Menggunakan pagination dan rendering AJAX; data upstream di-cache sesuai standar.
✅ Aman & Non-destruktif: Hanya operasi baca (
read-only), tidak memutasi data desa maupun skema database OpenKab.Masalah Terkait (Related Issue)
Langkah untuk mereproduksi (Steps to Reproduce)
Sebelum implementasi:
/dataspasial/monitoring.Setelah implementasi:
/dataspasial/monitoringdengan akun yang memiliki hak aksesdataspasial-monitoring-read.monitoring-laporan-{periode}-{timestamp}.csvterunduh dengan metadata lengkap.Testing pada fitur lain yang terkait:
Daftar Periksa (Checklist)
MonitoringDataTest.php).monitoring.js).Teknis Detail
Penjelasan Teknis
Arsitektur aliran data fitur monitoring:
response()->streamDownload()dan native PHPfputcsvuntuk efisiensi memori (memory footprint rendah) dengan batas pengamanan hingga 5.000 baris.Konfigurasi yang berubah:
.envbaru. Menggunakan koneksi dan tokendatabase_gabungan_api_keyyang sudah ada diSetting.Dependencies yang ditambahkan:
Testing
Manual Testing
/dataspasial/monitoringsebagai pengguna tanpa izindataspasial-monitoring-read→ 403 Forbidden./dataspasial/monitoringsebagai pengguna terotorisasi → skeleton dan filter ter-render tanpa me-load data desa sebelum filter dipilih.belum_pernah_mengirim).desa,impor,pemetaan).#serta kecocokan baris data dengan tabel.Automated Testing (Pest / PHPUnit)
tests/Feature/DataSpasial/MonitoringDataTest.php:test_guest_is_redirectedtest_user_without_permission_is_rejectedtest_page_renders_without_data_desatest_data_requires_sektor_but_kecamatan_is_optionaltest_all_desa_appear_including_never_submittedtest_cards_and_row_semantics_match_fixturestest_pagination_works_without_status_or_name_filterstest_kecamatan_scope_uses_wilayah_list_and_keeps_unregistered_desatest_periods_default_from_adopsi_and_unknown_period_is_emptytest_unavailable_returns_generic_messagetest_row_order_puts_action_needed_firstScreenshots / Video
Acuan Tampilan:
Mengacu pada tangkapan layar acuan: OpenKab-1303_KAB-07_monitoring-desa.png
Tampilan Hasil:
Breaking Changes
Migration Guide
References