# Penjelasan WebGIS — Bahan SRS & Manual Book **WebGIS Pontianak — Pengentasan Kemiskinan Berbasis Rumah Ibadah** *(Poverty Mapping — WebGIS Kota Pontianak)* --- ## 1. Gambaran Umum Sistem ### Nama & Tujuan Sistem informasi geografis (WebGIS) untuk **pemetaan keluarga miskin** di **Kota Pontianak** dengan pendekatan **berbasis rumah ibadah** sebagai unit pembina sosial. Rumah ibadah (masjid, gereja, pura, vihara, klenteng, dll.) memiliki **radius cakupan wilayah**; keluarga miskin di dalam radius tersebut **otomatis ditugaskan** sebagai KK binaan rumah ibadah terdekat. ### Masalah yang Diselesaikan - Data kemiskinan tersebar dan sulit divisualisasikan secara spasial - Koordinasi bantuan sosial (PKH, BPNT, bansos, dll.) perlu dilacak per keluarga - Masyarakat perlu saluran laporan tanpa harus login - Pemkot (walikota) butuh dashboard agregat untuk pengambilan keputusan - Pengurus rumah ibadah butuh akses terbatas hanya untuk KK binaannya ### Cakupan Geografis 6 kecamatan di Kota Pontianak: - Pontianak Utara, Selatan, Timur, Barat, Tenggara, Kota --- ## 2. Arsitektur Teknis ### Stack Teknologi | Komponen | Teknologi | |----------|-----------| | Frontend | HTML5, CSS3, JavaScript (vanilla), Leaflet 1.9.4 | | Backend | PHP dengan PDO | | Database | MySQL (`webgis_rumah_ibadah`) | | Peta | CARTO Voyager tiles + OpenStreetMap Nominatim (reverse geocoding) | | Ekspor | SheetJS (Excel), jsPDF + autoTable (PDF) | | Autentikasi | PHP Session | | Server dev | Laragon (Apache + MySQL) | ### Struktur File Utama - `index.html` — seluruh antarmuka & logika frontend - `index.php` — redirect ke `index.html` - `config.php` — koneksi DB, utilitas (Haversine, auto-assign, rate limit, upload) - `api_auth.php` — autentikasi - `api_rumah_ibadah.php` — CRUD rumah ibadah - `api_keluarga_miskin.php` — CRUD keluarga miskin - `api_laporan.php` — laporan masyarakat - `api_histori_bantuan.php` — histori bantuan - `api_dashboard.php` — dashboard walikota - `database.sql` — skema & data contoh - `uploads/` — foto laporan masyarakat ### Alur Arsitektur ``` Browser (index.html) ↓ fetch JSON PHP API (api_*.php) ↓ PDO MySQL (webgis_rumah_ibadah) ``` Peta juga memanggil **Nominatim OpenStreetMap** untuk reverse geocoding (alamat otomatis dari koordinat). --- ## 3. Aktor / Pengguna Sistem | Role | Deskripsi | Login | |------|-----------|-------| | **Masyarakat (publik)** | Melihat peta & data (read-only), mengirim laporan warga miskin | Tidak perlu login | | **Admin** | Kelola penuh: rumah ibadah, KK, laporan, bantuan, reset password pengurus | `admin` / `admin123` | | **Pengurus Rumah Ibadah** | Kelola KK binaan & histori bantuan di wilayahnya | Kode `RI-XXX-9999` / password pengurus | | **Walikota** | Dashboard agregat, lihat data, ekspor; **tidak bisa** menambah/mengubah/hapus | `walikota` / `admin123` | **Format login pengurus:** `RI-[JENIS 3 HURUF]-[4 DIGIT]` Contoh: `RI-MSJ-4821` (Masjid), `RI-GRJ-7153` (Gereja) --- ## 4. Modul Fungsional (untuk SRS) ### 4.1 Modul Peta Interaktif (WebGIS) - Peta interaktif berpusat di Pontianak (lat: -0.0263, lng: 109.3425, zoom 14) - Layer marker: - **Rumah ibadah** — warna per jenis (Masjid hijau, Gereja biru, dll.) - **Keluarga miskin** — warna per tingkat (Sangat Miskin merah, Miskin oranye, Hampir Miskin kuning) - **Radius cakupan** rumah ibadah (lingkaran saat zoom ke RI) - **Pick lokasi di peta** — klik peta untuk set koordinat + auto-fill alamat via Nominatim - Popup detail saat klik marker - Legenda dinamis per tab aktif ### 4.2 Modul Rumah Ibadah **Data:** nama, jenis, alamat, koordinat, radius (0.5–5 km), kecamatan, kode pengurus, password pengurus | Aksi | Admin | Pengurus | Walikota | Publik | |------|-------|----------|----------|--------| | Lihat daftar & peta | ✓ | ✓ (hanya RI sendiri) | ✓ | ✓ | | Tambah | ✓ | ✗ | ✗ | ✗ | | Edit | ✓ | ✓ (RI sendiri) | ✗ | ✗ | | Hapus | ✓ | ✗ | ✗ | ✗ | | Reset password pengurus | ✓ | ✗ | ✗ | ✗ | **Fitur khusus:** - Saat tambah RI, sistem generate **kode pengurus** & **password acak** (8 karakter) - Perubahan/hapus RI memicu **re-assign otomatis** semua KK ke RI terdekat ### 4.3 Modul Keluarga Miskin **Data:** NIK, nama KK, tanggal lahir, pendidikan, jumlah anggota, alamat, kecamatan, koordinat, tingkat kemiskinan, status DTKS, riwayat penyakit (JSON), rumah ibadah binaan, jarak ke RI **Tingkat kemiskinan:** Sangat Miskin, Miskin, Hampir Miskin **Status DTKS:** Terdaftar DTKS, Belum DTKS, Sedang Diusulkan **Riwayat penyakit:** Stunting, TBC, Hipertensi, Diabetes, Jantung, ODGJ, DBD, Gizi Buruk, Lainnya **Auto-assign:** Algoritma **Haversine** — KK ditugaskan ke RI terdekat yang radiusnya mencakup lokasi KK. **Filter:** kecamatan, tingkat kemiskinan, status DTKS **Flag bisnis:** KK dengan status `Belum DTKS` ditandai **Eligible Bansos Tunai Pemkot** | Aksi | Admin | Pengurus | Walikota | |------|-------|----------|----------| | Lihat | ✓ | ✓ (KK binaan) | ✓ | | Tambah/Edit | ✓ | ✓ (KK binaan) | ✗ | | Hapus | ✓ | ✗ | ✗ | | Ekspor Excel/PDF | ✓ | ✗ | ✓ | ### 4.4 Modul Laporan Masyarakat - **Tanpa login** — tombol floating *"Laporkan Warga Miskin"* - Input: identitas warga (opsional), NIK (opsional, 16 digit), lokasi, alamat, deskripsi, foto (maks 5MB: JPG/PNG/GIF/WebP), identitas pelapor (boleh anonim) - **Rate limit:** maks **5 laporan per jam per IP** - Status: **Baru → Diverifikasi / Ditolak** - Admin dapat: kelola status, isi alasan tolak, konversi ke data KK, buat KK baru dari laporan | Aksi | Admin | Walikota | Publik | |------|-------|----------|--------| | Kirim laporan | ✓ | ✓ | ✓ | | Lihat daftar | ✓ | ✓ | ✗ | | Kelola/verifikasi | ✓ | ✗ | ✗ | ### 4.5 Modul Histori Bantuan **Jenis bantuan:** PKH, BPNT/Sembako, Beras Bansos, KIS-PBI, Bansos Tunai Pemkot, Rutilahu, PMT Stunting, CSR Swasta, Lainnya **Sumber dana:** APBN, APBD, CSR, Lainnya - Pencatatan per KK: jenis, nominal (Rp), keterangan, tanggal penyaluran, sumber dana, penanggung jawab - **Peringatan duplikasi** jika KK sudah punya PKH/BPNT/Beras Bansos - Total bantuan per KK dihitung otomatis ### 4.6 Modul Dashboard Walikota Tampil di sidebar saat walikota login (tab Rumah Ibadah & Keluarga Miskin). Menampilkan: - Total KK, KK sudah/belum dapat bantuan (tahun berjalan) - Distribusi per kecamatan, penyakit, DTKS, tingkat kemiskinan - Bantuan per jenis & sumber dana + total nominal - Jumlah laporan belum ditangani - **Drill-down** klikabel → detail tabel + ekspor Excel Admin juga dapat mengakses API dashboard yang sama. ### 4.7 Modul Autentikasi - Login via username/password (JSON POST) - Session PHP (`$_SESSION['user']`) - Endpoint: `check`, `login`, `logout` - Pengurus login via kode RI, bukan tabel `users` --- ## 5. Model Data ### Tabel Database (6 tabel) 1. **rumah_ibadah** — titik lokasi + radius + kredensial pengurus 2. **users** — admin & walikota 3. **keluarga_miskin** — data KK + auto-assign 4. **laporan_masyarakat** — laporan warga 5. **histori_bantuan** — riwayat penyaluran 6. **rate_limit** — pembatasan IP laporan ### Relasi Utama - `rumah_ibadah` → `keluarga_miskin` (satu RI membina banyak KK) - `keluarga_miskin` → `histori_bantuan` (satu KK punya banyak bantuan) - `users` → `histori_bantuan` (penanggung jawab) - `laporan_masyarakat` → `keluarga_miskin` (konversi laporan ke KK) --- ## 6. Alur Bisnis Utama (untuk Manual Book) ### Alur A — Pendaftaran Rumah Ibadah (Admin) 1. Login sebagai admin 2. Tab **Rumah Ibadah** → **Tambah** 3. Isi form / klik peta untuk koordinat 4. Atur radius cakupan (slider 0.5–5 km) 5. Simpan → sistem tampilkan **kode pengurus & password** (diserahkan ke pengurus RI) 6. Semua KK di wilayah otomatis di-assign ulang ### Alur B — Pengurus Mencatat KK Binaan 1. Login dengan kode `RI-XXX-9999` 2. Tab **Keluarga Miskin** → **Tambah** 3. Isi NIK, data keluarga, pilih penyakit, tentukan lokasi di peta 4. Simpan → KK terhubung ke RI pengurus 5. Klik **Bantuan** pada kartu KK → catat penyaluran bantuan ### Alur C — Laporan Masyarakat 1. Tanpa login, klik **Laporkan Warga Miskin** 2. Isi lokasi & deskripsi (identitas opsional) 3. Kirim → status **Baru** 4. Admin buka tab **Laporan** → **Kelola** 5. Verifikasi (bisa buat KK dari laporan) atau tolak dengan alasan ### Alur D — Monitoring Walikota 1. Login `walikota` 2. Lihat dashboard di sidebar (statistik & grafik bar) 3. Klik kartu untuk drill-down detail 4. Tab **Keluarga Miskin** → filter & **Ekspor Excel/PDF** 5. Tab **Laporan** → pantau laporan masuk (read-only untuk kelola) --- ## 7. Antarmuka Pengguna | Area | Fungsi | |------|--------| | **Topbar** | Brand, navigasi tab (RI / KK / Laporan), info user, login/logout | | **Peta (kiri)** | Visualisasi spasial, pick lokasi, zoom ke entitas | | **Sidebar (kanan)** | Daftar data, filter, legenda, statistik, tombol tambah/ekspor | | **Modal** | Form CRUD, login, laporan, bantuan, konfirmasi hapus, dashboard drill-down | | **FAB** | Tombol mengambang laporan masyarakat | | **Toast** | Notifikasi sukses/error | **Responsif:** Di layar ≤768px, sidebar menjadi panel bawah setengah layar. --- ## 8. Kebutuhan Non-Fungsional (untuk SRS) | Aspek | Spesifikasi | |-------|-------------| | **Keamanan** | Password bcrypt, session-based auth, role-based access control, sanitasi input, prepared statements PDO | | **Ketersediaan data** | UTF-8 (`utf8mb4`), format JSON standar `{success, data, message}` | | **Performa** | Single-page, data dimuat via AJAX paralel | | **Batasan upload** | Foto laporan maks 5MB | | **Rate limiting** | 5 laporan/jam/IP | | **Kompatibilitas** | Browser modern dengan JavaScript; butuh koneksi internet (CDN peta & library) | | **Deployment** | PHP 7.4+, MySQL 5.7+, web server Apache/Nginx | --- ## 9. Kerangka Dokumen SRS 1. **Pendahuluan** — latar belakang, tujuan, ruang lingkup, definisi (DTKS, KK, RI, WebGIS) 2. **Deskripsi Umum** — perspektif produk, fungsi produk, karakteristik pengguna 3. **Kebutuhan Fungsional** — per modul (FR-01 s/d FR-XX) 4. **Kebutuhan Data** — entitas & atribut dari database 5. **Kebutuhan Antarmuka** — layar peta, sidebar, modal, dashboard 6. **Kebutuhan Non-Fungsional** — keamanan, performa, reliabilitas 7. **Aturan Bisnis** — auto-assign Haversine, eligible bansos tunai, duplikasi bantuan, rate limit 8. **Matriks Hak Akses** — tabel role 9. **Integrasi Eksternal** — OpenStreetMap, Nominatim, CDN library 10. **Lampiran** — ERD, diagram alur, mockup UI --- ## 10. Kerangka Manual Book **Bab 1 — Pengenalan** Tentang sistem, siapa penggunanya, persyaratan (browser, Laragon/URL) **Bab 2 — Akses & Login** Login admin, walikota, pengurus (contoh kredensial demo) **Bab 3 — Panduan Masyarakat** Cara melihat peta, mengirim laporan, batas 5 laporan/jam **Bab 4 — Panduan Admin** Kelola rumah ibadah, KK, laporan, verifikasi & konversi ke KK **Bab 5 — Panduan Pengurus Rumah Ibadah** Login kode RI, input KK binaan, pencatatan bantuan **Bab 6 — Panduan Walikota** Dashboard, drill-down, ekspor data, tab laporan **Bab 7 — Fitur Peta** Navigasi, legenda, zoom, pick lokasi **Bab 8 — Ekspor Laporan** Excel & PDF (kolom yang diekspor) **Bab 9 — Troubleshooting** Gagal login, rate limit, KK di luar radius, koneksi database --- ## 11. Data Demo (untuk Testing) | Akun | Username | Password | |------|----------|----------| | Admin | `admin` | `admin123` | | Walikota | `walikota` | `admin123` | | Pengurus Masjid Raya | `RI-MSJ-4821` | `pengurus123` | | Pengurus Gereja | `RI-GRJ-7153` | `pengurus123` | Database seed berisi: 2 rumah ibadah, 5 keluarga miskin, 1 laporan, 2 histori bantuan. --- ## 12. Ringkasan Nilai Sistem Sistem ini menggabungkan **GIS**, **manajemen data sosial**, **partisipasi masyarakat**, dan **dashboard kebijakan** dalam satu aplikasi web. Konsep intinya: **rumah ibadah sebagai node pembina** dengan cakupan geografis terukur, sehingga program pengentasan kemiskinan dapat dipantau secara spasial dan berbasis data bantuan per keluarga. --- *Dokumen ini dibuat sebagai bahan penyusunan SRS (Software Requirements Specification) dan Manual Book untuk WebGIS Pontianak.*