131 lines
5.6 KiB
SQL
131 lines
5.6 KiB
SQL
-- ============================================================
|
|
-- 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
|
|
-- ============================================================
|