Files
2026-06-11 12:30:23 +07:00

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
-- ============================================================