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