Skip to content

Selaraskan Definisi dan Rentang Waktu "Desa Aktif" di Semua Halaman (Dashboard, Web/OpenSID, Laporan) - #704

Open
habibie11 wants to merge 4 commits into
rilis-devfrom
fix-jumlah-opensid
Open

Selaraskan Definisi dan Rentang Waktu "Desa Aktif" di Semua Halaman (Dashboard, Web/OpenSID, Laporan)#704
habibie11 wants to merge 4 commits into
rilis-devfrom
fix-jumlah-opensid

Conversation

@habibie11

@habibie11 habibie11 commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

issue :
#703
#698

🎯 Deskripsi

Pull request ini menyelaraskan definisi dan rentang waktu perhitungan Desa Aktif di tiga halaman utama: /dashboard, /web/opensid, dan /laporan/desa-aktif dan juga sekalian memperbaiki bug search pada halaman desa-aktif.

Sebelumnya, terdapat inkonsistensi yang menyebabkan jumlah Desa Aktif berbeda-beda di tiap halaman:

  • Dashboard (Admin) menghitung dengan periode 7 hari terakhir.
  • Web/OpenSID (Publik) menghitung dengan periode 30 hari terakhir.
  • Laporan Desa Aktif (Admin) menggunakan filter berdasarkan updated_at (30 hari terakhir) alih-alih tgl_akses.

Melalui PR ini, seluruh halaman diselaraskan menggunakan standar: Semua desa (online + offline) yang melakukan akses (berdasarkan tgl_akses) dalam 30 hari kalender terakhir.

Tambahan:

  • PR ini juga menyesuaikan filter "Bulan Ini" di halaman /laporan/desa menjadi "30 Hari Terakhir" dan menjadikannya filter default.
  • Memperbaiki bug (TypeError) pada Carbon terkait parameter tipe string addDays() di DashboardController.

🛠️ Perubahan yang Dilakukan

1. app/Models/Desa.php

Fix — Standardisasi scopeJumlahDesa dan scopeFillter:

  • Pada scopeJumlahDesa, memindahkan desa_online dan desa_offline agar terpengaruh oleh input periode, serta mengubah fallback default interval dari 7 hari menjadi 30 hari kalender (DATE(now() - interval 29 day)).
  • Pada scopeFillter, mengubah query filter akses=6 dari "Bulan Ini" (awal bulan berjalan) menjadi "30 Hari Terakhir" agar selaras dengan dashboard.
  • Memperbaiki scopeHostingOnline dan scopeHostingOffline agar definisinya sinkron 100% dengan query desa_online dan desa_offline di perhitungan dashboard, menghilangkan masalah selisih jumlah Desa Aktif Online dan Offline antara laporan tabel dan kartu dashboard.

2. app/Http/Controllers/LaporanDesaAktifController.php

Fix — Sumber Waktu:

  • Mengganti filter basis query laporan dari menggunakan updated_at menjadi menggunakan data otentik akses yaitu greatest(tgl_akses_lokal, tgl_akses_hosting).

3. resources/views/layouts/components/form_filter.blade.php & laporan/desa.blade.php

Fix — Opsi Filter Baru:

  • Menambahkan opsi filter akses "30 Hari Terakhir" (value="6") ke dalam form pencarian.
  • Menetapkan akses=6 sebagai kondisi default yang langsung aktif saat user membuka /laporan/desa.

4. resources/views/dashboard.blade.php

Fix — Penyesuaian Parameter Dashboard Admin:

  • Memperbarui tautan (link) pada card Desa Aktif dan Desa Aktif Online yang sebelumnya mem-passing param URL ?akses=4 menjadi ?akses=6 agar jika diklik, filter di halaman laporan sinkron dengan angka periode 30 hari.

5. app/Http/Controllers/DashboardController.php

Bugfix — Carbon TypeError:

  • Menambahkan type casting (int) pada $pengaturanAplikasi['waktu_backup'] di dalam metode addDays(). Ini untuk menyelesaikan masalah kompatibilitas tipe data di Carbon 3+ yang menolak input string (Error rawAddUnit()).

6. tests/Feature/LaporanDesaAktifTest.php

Test — Pembaruan Fixture Test:

  • Mengisi atribut tgl_akses_lokal pada pembuatan data factory Desa (fixture) untuk menggantikan perilaku filter lama yang sebelumnya hanya mengandalkan kolom updated_at. Semua 11 assertions sekarang PASSED.

✅ Test Cases yang Diimplementasikan

  • Memastikan /laporan/desa-aktif menggunakan tgl_akses sehingga desa yang di-update tapi tidak di-akses tidak dimasukkan ke dalam daftar aktif.
  • Seluruh komponen Automated Feature Tests untuk model Desa (DesaScopeTest) tetap lulus dengan interval default baru.
  • Memastikan perbaikan Carbon tidak merusak tampilan informasi peringatan backup di /dashboard.

📸 Cara Menjalankan Uji Coba Manual

  1. Buka halaman /dashboard (Admin).
  2. Perhatikan angka pada kartu Desa Aktif.
  3. Buka halaman web publik di /web/opensid.
  4. Perhatikan angka pada bagian Desa / Kelurahan Aktif. Keduanya (langkah 2 dan 4) kini harus menampilkan jumlah yang sama atau identik.
  5. Kembali ke dasbor admin dan klik tautan "Lihat Detail" pada kartu Desa Aktif. Anda akan diarahkan ke /laporan/desa dengan filter default baru yaitu "30 Hari Terakhir".
  6. Buka /laporan/desa-aktif dan lihat jumlah entries yang disajikan; jumlah total yang ditampilkan di bawah tabel (showing 1 to X of Y entries) harus konsisten dengan angka di dashboard.

🤖 Cara Menjalankan Uji Coba Otomatis (Automated Test)

Untuk memverifikasi semua perubahan logic di atas tidak merusak fungsionalitas lain, jalankan perintah berikut:

php artisan test --filter "LaporanDesaAktifTest|DesaScopeTest"

(Seluruh pengujian harus berstatus PASSED)

📸 Screenshot atau Video

https://github.com/user-attachments/assets/a7e83f22-d661-4423-aba6-4203b3564854
image


⚠️ Catatan Penting

Card "Desa Aktif Online" dan "Desa Aktif Hanya Offline" di Dasbor Admin kini juga akan menampilkan angka berdasarkan data 30 hari terakhir (mengikuti standar utama Desa Aktif), sehingga Anda akan melihat angka yang secara drastis lebih besar dari sebelumnya (yang hanya menghitung 7 hari). Perubahan ini adalah perilaku yang diharapkan demi mempertahankan konsistensi seluruh kartu (cards) dashboard.

@github-actions

Copy link
Copy Markdown

🔄 AI PR Review sedang antri di server...

Proses review akan segera dimulai di background — hasil akan muncul sebagai komentar setelah selesai.
Powered by CrewAI · PR #704

@habibie11
habibie11 changed the base branch from master to rilis-dev July 28, 2026 07:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant