Initial commit

This commit is contained in:
cw
2026-06-11 12:30:23 +07:00
commit 2676f3a61c
70 changed files with 9867 additions and 0 deletions
+130
View File
@@ -0,0 +1,130 @@
-- ============================================================
-- SINERGI — Entity Relationship Diagram (ERD) Documentation
-- ============================================================
--
-- DIAGRAM RELASI TABEL:
--
-- roles ─────────────────────────────┐
-- id, nama, slug, deskripsi │ 1
-- │
-- users ────────────────────────────-┤ N (setiap user punya 1 role)
-- id, id_role(FK→roles), id_kelurahan(FK→kelurahan)
-- nama, username, email, password, no_hp, foto, is_active
-- last_login, created_at
--
-- kecamatan ─────────────────────────┐
-- id, nama, kode, lat, lng │ 1
-- │
-- kelurahan ─────────────────────────┤ N (banyak kelurahan per kecamatan)
-- id, id_kecamatan(FK→kecamatan) │ 1
-- nama, kode, lat, lng │
-- │ N
-- rumah_ibadah ──────────────────────┤ (banyak RI per kelurahan)
-- id, id_user(FK→users) │
-- id_kelurahan(FK→kelurahan) │
-- id_jenis(FK→jenis_rumah_ibadah) │
-- nama, alamat, lat, lng │
-- radius_meter, nama_ketua, foto │ 1
-- │
-- warga_miskin ──────────────────────┘ N (banyak warga per RI)
-- id, id_laporan(FK→laporan_masyarakat)
-- id_kelurahan(FK→kelurahan)
-- id_rumah_ibadah(FK→rumah_ibadah)
-- id_verifikator(FK→users)
-- nik, nama, tgl_lahir, jk, agama
-- alamat, lat, lng, foto
-- pendidikan_terakhir, pekerjaan
-- penghasilan_bulanan, jumlah_tanggungan
-- kondisi_rumah, riwayat_penyakit
-- is_lansia, is_disabilitas
-- status_kemiskinan, skor_prioritas
-- level_prioritas, is_blind_spot
-- status, tanggal_verifikasi
--
-- laporan_masyarakat ────────────────┐
-- id, kode_laporan │ 1
-- nama_pelapor, no_hp_pelapor │
-- nama_warga, alamat_warga │
-- id_kelurahan(FK→kelurahan) │
-- lat, lng, deskripsi, foto │
-- status, catatan_verifikator │
-- id_verifikator(FK→users) │
-- tanggal_verifikasi │
-- │ (1 laporan → 1 warga)
-- histori_bantuan ─────────────────────────────────
-- id, id_warga(FK→warga_miskin)
-- id_rumah_ibadah(FK→rumah_ibadah)
-- id_kategori_bantuan(FK→kategori_bantuan)
-- id_user_pengurus(FK→users)
-- kode_bantuan, tanggal_penyaluran
-- jumlah, satuan, deskripsi, foto_bukti
-- status
--
-- kategori_bantuan ──────────────────
-- id, nama, deskripsi, satuan, is_active
--
-- jenis_rumah_ibadah ────────────────
-- id, nama, ikon
--
-- aktivitas_sistem ──────────────────
-- id, id_user(FK→users), nama_user
-- role, aksi, modul, deskripsi
-- ip_address, user_agent, created_at
--
-- sessions ──────────────────────────
-- id, id_user(FK→users)
-- ip_address, user_agent
-- payload, last_activity
--
-- ============================================================
-- RELASI KARDINALITAS:
-- ============================================================
--
-- roles 1 ──── N users
-- kecamatan 1 ──── N kelurahan
-- kelurahan 1 ──── N rumah_ibadah
-- kelurahan 1 ──── N users (verifikator)
-- kelurahan 1 ──── N warga_miskin
-- kelurahan 1 ──── N laporan_masyarakat
-- rumah_ibadah 1 ──── N warga_miskin (binaan)
-- rumah_ibadah 1 ──── N histori_bantuan
-- warga_miskin 1 ──── N histori_bantuan
-- laporan 1 ──── 1 warga_miskin (opsional)
-- kategori 1 ──── N histori_bantuan
-- users 1 ──── 1 rumah_ibadah (pengurus)
-- users 1 ──── N aktivitas_sistem
-- users 1 ──── N laporan (verifikator)
-- users 1 ──── N warga_miskin (verifikator)
-- jenis_ri 1 ──── N rumah_ibadah
--
-- ============================================================
-- PROSES BISNIS UTAMA:
-- ============================================================
--
-- [1] PELAPORAN:
-- Masyarakat → POST /lapor → laporan_masyarakat (status=menunggu)
--
-- [2] VERIFIKASI:
-- Verifikator → verifikasi laporan →
-- UPDATE laporan status=terverifikasi +
-- INSERT warga_miskin
--
-- [3] ASSIGNMENT RI (Haversine):
-- Saat INSERT warga_miskin:
-- - Loop semua rumah_ibadah aktif
-- - Hitung jarak Haversine(warga.lat,warga.lng, ri.lat,ri.lng)
-- - Jika jarak <= radius_meter → assign id_rumah_ibadah
-- - Jika tidak ada → is_blind_spot = 1
--
-- [4] SKOR PRIORITAS (0-100):
-- penghasilan(30) + tanggungan(20) + kondisi_rumah(15) +
-- pendidikan(10) + penyakit(10) + lansia(8) + disabilitas(7)
-- → level: Tinggi(≥70), Sedang(≥40), Rendah(<40)
--
-- [5] PENYALURAN BANTUAN:
-- Pengurus RI → INSERT histori_bantuan
--
-- [6] MONITORING:
-- Dinsos/Wali Kota → READ ONLY semua data
-- GIS Heatmap dari koordinat warga_miskin
-- ============================================================
+298
View File
@@ -0,0 +1,298 @@
# PANDUAN INSTALASI SINERGI
## Sistem Informasi Geografis Penanganan Kemiskinan — Kota Pontianak
---
## PRASYARAT SISTEM
Pastikan software berikut sudah terinstal:
| Software | Versi | Keterangan |
|----------|-------|------------|
| Laragon | 6.0+ | Full / Lite |
| PHP | 8.1+ | Sudah termasuk dalam Laragon |
| MySQL | 8.0+ | Sudah termasuk dalam Laragon |
| Apache | 2.4+ | Sudah termasuk dalam Laragon |
---
## LANGKAH INSTALASI
### Step 1: Copy Folder Proyek
```
Salin folder `sinergi/` ke:
C:\laragon\www\sinergi\
```
Pastikan struktur folder seperti ini:
```
C:\laragon\www\sinergi\
├── app\
│ ├── controllers\
│ ├── models\
│ └── views\
├── config\
├── core\
├── public\
├── database\
├── index.php
└── .htaccess
```
---
### Step 2: Aktifkan mod_rewrite Apache
1. Buka **Laragon** → klik kanan tray icon
2. Pilih **Apache****httpd.conf**
3. Cari baris: `#LoadModule rewrite_module modules/mod_rewrite.so`
4. Hapus tanda `#` di depannya
5. Simpan file
6. Restart Laragon
---
### Step 3: Import Database
#### Cara A — Melalui phpMyAdmin (Disarankan)
1. Buka browser: `http://localhost/phpmyadmin`
2. Klik **"Import"** di menu atas
3. Pilih file `database/sinergi.sql` → klik **Go**
4. Setelah selesai, pilih file `database/dummy_data.sql` → klik **Go**
#### Cara B — Melalui Command Line
```bash
# Buka Command Prompt di folder sinergi
cd C:\laragon\www\sinergi
# Import schema
mysql -u root -p < database\sinergi.sql
# Import dummy data
mysql -u root -p sinergi_db < database\dummy_data.sql
```
---
### Step 4: Konfigurasi Aplikasi
Edit file `config/database.php`:
```php
define('DB_HOST', 'localhost');
define('DB_NAME', 'sinergi_db');
define('DB_USER', 'root');
define('DB_PASS', ''); // Sesuaikan password MySQL Anda
define('DB_CHARSET', 'utf8mb4');
```
Edit file `config/app.php` jika nama folder berbeda:
```php
define('APP_URL', 'http://localhost/sinergi'); // Sesuaikan
```
---
### Step 5: Buat Folder Upload
```bash
# Pastikan folder ini ada dan bisa ditulis
C:\laragon\www\sinergi\public\images\uploads\
C:\laragon\www\sinergi\public\images\laporan\
C:\laragon\www\sinergi\public\images\warga\
C:\laragon\www\sinergi\public\images\bantuan\
C:\laragon\www\sinergi\public\images\rumah_ibadah\
```
Atau jalankan script ini di Command Prompt:
```batch
mkdir C:\laragon\www\sinergi\public\images\uploads
mkdir C:\laragon\www\sinergi\public\images\laporan
mkdir C:\laragon\www\sinergi\public\images\warga
mkdir C:\laragon\www\sinergi\public\images\bantuan
mkdir C:\laragon\www\sinergi\public\images\rumah_ibadah
```
---
### Step 6: Jalankan Aplikasi
1. **Start Laragon** (klik tombol Start All)
2. Buka browser: `http://localhost/sinergi`
3. Halaman beranda publik akan tampil
---
## AKUN LOGIN DEMO
Semua akun menggunakan password: **Admin@123**
| Role | Username | Password | Akses |
|------|----------|----------|-------|
| Super Admin | `superadmin` | Admin@123 | Semua fitur admin |
| Verifikator (Kel. Darat Sekip) | `verif_darat` | Admin@123 | Verifikasi laporan |
| Verifikator (Kel. Sungai Jawi) | `verif_jawi` | Admin@123 | Verifikasi laporan |
| Pengurus Masjid Darussalam | `ri_masjid_darussalam` | Admin@123 | Penyaluran bantuan |
| Pengurus Gereja Bethel | `ri_gereja_bethel` | Admin@123 | Penyaluran bantuan |
| Pengurus Masjid Al-Falah | `ri_masjid_alfalah` | Admin@123 | Penyaluran bantuan |
| Dinas Sosial | `dinsos_ahmad` | Admin@123 | Monitoring |
| Wali Kota | `walikota` | Admin@123 | Dashboard Eksekutif |
---
## URL AKSES
| Halaman | URL |
|---------|-----|
| Beranda Publik | `http://localhost/sinergi/` |
| Form Laporan | `http://localhost/sinergi/lapor` |
| Cek Laporan | `http://localhost/sinergi/cek-laporan` |
| Login | `http://localhost/sinergi/login` |
| Dashboard Admin | `http://localhost/sinergi/admin/dashboard` |
| Dashboard Verifikator | `http://localhost/sinergi/verifikator/dashboard` |
| Dashboard Rumah Ibadah | `http://localhost/sinergi/rumah-ibadah/dashboard` |
| Dashboard Dinsos | `http://localhost/sinergi/dinsos/dashboard` |
| Dashboard Wali Kota | `http://localhost/sinergi/walikota/dashboard` |
---
## TROUBLESHOOTING
### Error 404 (Halaman tidak ditemukan)
- Pastikan `mod_rewrite` sudah aktif di Apache
- Cek file `.htaccess` ada di root folder `sinergi/`
- Pastikan `AllowOverride All` aktif di `httpd.conf`:
```
<Directory "C:/laragon/www">
AllowOverride All
</Directory>
```
### Error database connection
- Pastikan MySQL running di Laragon
- Cek konfigurasi di `config/database.php`
- Pastikan database `sinergi_db` sudah diimport
### Peta Leaflet tidak muncul
- Pastikan koneksi internet aktif (Leaflet CDN)
- Cek console browser (F12) untuk error JavaScript
### Upload foto gagal
- Pastikan folder `public/images/uploads/` ada dan writable
- Cek konfigurasi `upload_max_filesize` di `php.ini` (minimal 5M)
### Halaman putih kosong
- Aktifkan error reporting: tambah di awal `index.php`:
```php
ini_set('display_errors', 1);
error_reporting(E_ALL);
```
---
## STRUKTUR FOLDER LENGKAP
```
sinergi/
├── .htaccess # URL Rewriting
├── index.php # Entry point & Router
├── config/
│ ├── app.php # Konfigurasi aplikasi
│ └── database.php # Konfigurasi database
├── core/
│ ├── Auth.php # Autentikasi & session
│ ├── Controller.php # Base controller
│ ├── Database.php # Koneksi database (PDO)
│ ├── Router.php # URL Router
│ └── helpers.php # Helper functions (Haversine, skor, dll)
├── app/
│ ├── controllers/
│ │ ├── AdminController.php
│ │ ├── AuthController.php
│ │ ├── DinsosController.php
│ │ ├── PublicController.php
│ │ ├── RumahIbadahController.php
│ │ ├── VerifikatorController.php
│ │ └── WalikotaController.php
│ │
│ └── views/
│ ├── layouts/
│ │ ├── admin.php
│ │ ├── dinsos.php
│ │ ├── public.php
│ │ ├── rumah_ibadah.php
│ │ ├── verifikator.php
│ │ └── walikota.php
│ ├── admin/ # View Super Admin
│ ├── auth/ # Login
│ ├── dinsos/ # View Dinsos
│ ├── public/ # View Publik
│ ├── rumah_ibadah/ # View Pengurus RI
│ ├── verifikator/ # View Verifikator
│ └── walikota/ # View Wali Kota
├── public/
│ ├── css/app.css # Stylesheet utama
│ ├── js/app.js # JavaScript utama (GIS, Charts)
│ └── images/ # Gambar & upload
└── database/
├── sinergi.sql # Schema + data roles/kecamatan
└── dummy_data.sql # Data dummy untuk testing
```
---
## TEKNOLOGI YANG DIGUNAKAN
| Komponen | Teknologi | Versi |
|----------|-----------|-------|
| Frontend | HTML5, CSS3 Native, JavaScript | — |
| Peta GIS | Leaflet.js | 1.9.4 |
| Heatmap | Leaflet.heat | 0.2.0 |
| Grafik | Chart.js | 4.4.0 |
| Font | Inter (Google Fonts) | — |
| Backend | PHP Native (tanpa framework) | 8.1+ |
| Database | MySQL | 8.0+ |
| Arsitektur | MVC Sederhana + RBAC | — |
| Environment | Laragon | 6.0+ |
---
## FITUR UTAMA
### 🗺 Sistem GIS
- Peta interaktif Leaflet.js
- Marker warga miskin (merah=ekstrem, oranye=miskin, kuning=rentan)
- Marker & radius rumah ibadah (hijau)
- Heatmap persebaran kemiskinan
- Layer control (beralih antara tampilan)
- Popup informasi detail
### 📊 Algoritma Prioritas Bantuan
Skor 0-100 berdasarkan 7 faktor:
1. **Penghasilan** (30 poin) — semakin rendah = skor lebih tinggi
2. **Jumlah tanggungan** (20 poin)
3. **Kondisi rumah** (15 poin)
4. **Pendidikan** (10 poin)
5. **Riwayat penyakit** (10 poin)
6. **Status lansia** (8 poin)
7. **Status disabilitas** (7 poin)
### 🔍 Deteksi Blind Spot
- Menggunakan **Haversine Formula** untuk menghitung jarak
- Jika warga tidak berada dalam radius rumah ibadah manapun → **Blind Spot**
- Blind spot otomatis muncul di dashboard Dinsos & Admin
### ⛪ Assignment Rumah Ibadah
- Otomatis dihitung saat verifikasi warga
- Menggunakan Haversine Formula mencari rumah ibadah dalam radius terdekat
- 1 warga = 1 rumah ibadah penanggung jawab
---
*SINERGI v1.0.0 — Sistem Informasi Geografis Penanganan Kemiskinan*
*Kota Pontianak — © 2024 Dinas Sosial Kota Pontianak*