first commit
This commit is contained in:
@@ -0,0 +1,312 @@
|
||||
# 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.*
|
||||
Reference in New Issue
Block a user