First commit / commit pertama

This commit is contained in:
Mr.Haruna
2026-06-13 11:24:58 +07:00
commit 522c4f7200
166 changed files with 13326 additions and 0 deletions
+51
View File
@@ -0,0 +1,51 @@
-- ============================================================
-- Migrasi Fase A — Sistem 4 Role SKPL + Log Aktivitas
-- ============================================================
-- Jalankan SEKALI pada database existing (webgis_db).
-- Aman untuk data yang sudah ada: role lama dipetakan, bukan dihapus.
-- admin -> operator
-- user -> pimpinan
-- ============================================================
-- 1. Migrasi nilai role lama -> SKPL (widen -> update -> narrow)
ALTER TABLE users MODIFY COLUMN role VARCHAR(20) NOT NULL DEFAULT 'enumerator';
UPDATE users SET role = 'operator' WHERE role = 'admin';
UPDATE users SET role = 'pimpinan' WHERE role = 'user';
ALTER TABLE users
MODIFY COLUMN role ENUM('publik','enumerator','operator','pimpinan')
NOT NULL DEFAULT 'enumerator';
-- 2. Kolom tambahan users (KF-02 / KF-03 / KF-26)
ALTER TABLE users
ADD COLUMN email VARCHAR(120) DEFAULT NULL AFTER username,
ADD COLUMN is_active TINYINT(1) NOT NULL DEFAULT 1 AFTER role,
ADD COLUMN wilayah_tugas VARCHAR(100) DEFAULT NULL AFTER is_active,
ADD COLUMN last_login TIMESTAMP NULL DEFAULT NULL AFTER wilayah_tugas;
-- 3. Akun demo Enumerator (password: user123)
-- operator & pimpinan berasal dari migrasi akun lama (admin / pengguna)
INSERT IGNORE INTO users (username, email, password, role, nama_lengkap)
VALUES (
'enumerator',
'enumerator@webgis.id',
'$2y$12$djJkmhJBRCSCqqpAICIvGuLoVpICrDUS2IVECbZUodgR89VRTqdLW',
'enumerator',
'Petugas Lapangan'
);
-- 4. Log aktivitas (KF-04) — audit trail
CREATE TABLE IF NOT EXISTS activity_log (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NULL,
username VARCHAR(50) DEFAULT NULL,
aksi VARCHAR(50) NOT NULL,
tabel_target VARCHAR(50) DEFAULT NULL,
record_id INT DEFAULT NULL,
keterangan TEXT DEFAULT NULL,
ip_address VARCHAR(45) DEFAULT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
INDEX idx_activity_user (user_id),
INDEX idx_activity_created (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+29
View File
@@ -0,0 +1,29 @@
-- ============================================================
-- Migrasi Fase B — Tabel Wilayah (choropleth) + seed sampel
-- ============================================================
-- Polygon kelurahan SAMPEL (disederhanakan) di sekitar data warga.
-- Geometri SRID 0 agar konsisten dengan data spasial lama.
-- jumlah_penduduk = jumlah KK (dummy) untuk hitung persentase miskin.
-- ============================================================
CREATE TABLE IF NOT EXISTS wilayah (
id INT AUTO_INCREMENT PRIMARY KEY,
kode_wilayah VARCHAR(20) DEFAULT NULL,
nama VARCHAR(100) NOT NULL,
jenis ENUM('kelurahan','kecamatan') NOT NULL DEFAULT 'kelurahan',
parent_id INT DEFAULT NULL,
jumlah_penduduk INT NOT NULL DEFAULT 0,
geom GEOMETRY NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
SPATIAL INDEX idx_wilayah_geom (geom)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO wilayah (kode_wilayah, nama, jenis, jumlah_penduduk, geom) VALUES
('6171010001', 'Kel. Tambelan Sampit', 'kelurahan', 45,
ST_GeomFromText('POLYGON((109.357 -0.047, 109.368 -0.047, 109.368 -0.058, 109.357 -0.058, 109.357 -0.047))')),
('6171010002', 'Kel. Sungai Bangkong', 'kelurahan', 60,
ST_GeomFromText('POLYGON((109.328 -0.043, 109.340 -0.043, 109.340 -0.055, 109.328 -0.055, 109.328 -0.043))')),
('6171010003', 'Kel. Akcaya', 'kelurahan', 80,
ST_GeomFromText('POLYGON((109.339 -0.035, 109.350 -0.035, 109.350 -0.045, 109.339 -0.045, 109.339 -0.035))')),
('6171010004', 'Kel. Benua Melayu Darat', 'kelurahan', 55,
ST_GeomFromText('POLYGON((109.318 -0.044, 109.329 -0.044, 109.329 -0.056, 109.318 -0.056, 109.318 -0.044))'));
+82
View File
@@ -0,0 +1,82 @@
-- ============================================================
-- Migrasi Fase C — Manajemen Data Kemiskinan (KF-12 s/d 18)
-- ============================================================
-- Memperkaya warga_miskin + bantuan sosial + foto + fasilitas publik.
-- Aman dijalankan pada DB existing (kolom & tabel baru saja).
-- ============================================================
-- 1. Perluas kolom warga_miskin (KF-12 / KF-18)
ALTER TABLE warga_miskin
ADD COLUMN nik_kk VARCHAR(16) DEFAULT NULL AFTER nama_kk,
ADD COLUMN alamat VARCHAR(255) DEFAULT NULL AFTER nik_kk,
ADD COLUMN wilayah_id INT DEFAULT NULL AFTER alamat,
ADD COLUMN rt VARCHAR(5) DEFAULT NULL AFTER wilayah_id,
ADD COLUMN rw VARCHAR(5) DEFAULT NULL AFTER rt,
ADD COLUMN jumlah_jiwa INT DEFAULT NULL AFTER rw,
ADD COLUMN pekerjaan_kk VARCHAR(100) DEFAULT NULL AFTER jumlah_jiwa,
ADD COLUMN sumber_air ENUM('SUMUR_BOR','PDAM','SUNGAI','HUJAN','TIDAK_ADA') DEFAULT NULL,
ADD COLUMN status_listrik ENUM('PLN','NON_PLN','TIDAK_ADA') DEFAULT NULL,
ADD COLUMN material_dinding ENUM('PERMANEN','SEMI_PERMANEN','TIDAK_PERMANEN') DEFAULT NULL,
ADD COLUMN status_kepemilikan ENUM('MILIK','SEWA','NUMPANG','LAINNYA') DEFAULT NULL,
ADD COLUMN status_verifikasi ENUM('belum','terverifikasi','perlu_tinjauan') NOT NULL DEFAULT 'belum',
ADD COLUMN created_by INT DEFAULT NULL;
-- 2. Master jenis bantuan (KF-17) + seed
CREATE TABLE IF NOT EXISTS jenis_bantuan (
id INT AUTO_INCREMENT PRIMARY KEY,
kode VARCHAR(20) NOT NULL UNIQUE,
nama VARCHAR(100) NOT NULL,
deskripsi VARCHAR(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT IGNORE INTO jenis_bantuan (kode, nama, deskripsi) VALUES
('PKH', 'Program Keluarga Harapan', 'Bantuan tunai bersyarat keluarga miskin'),
('BPNT', 'Bantuan Pangan Non Tunai', 'Bantuan sembako via KKS'),
('PBI-JK', 'Penerima Bantuan Iuran JK', 'Subsidi iuran BPJS Kesehatan'),
('BLT-DD', 'Bantuan Langsung Tunai Dana Desa','Bantuan tunai dari Dana Desa'),
('RUTILAHU','Rumah Tidak Layak Huni', 'Rehabilitasi rumah tidak layak huni'),
('KIP', 'Kartu Indonesia Pintar', 'Bantuan biaya pendidikan');
-- 3. Riwayat penerimaan bantuan per rumah tangga (KF-17)
CREATE TABLE IF NOT EXISTS bantuan_sosial (
id INT AUTO_INCREMENT PRIMARY KEY,
warga_id INT NOT NULL,
jenis_bantuan_id INT NOT NULL,
tgl_mulai DATE DEFAULT NULL,
tgl_berakhir DATE DEFAULT NULL,
is_aktif TINYINT(1) NOT NULL DEFAULT 1,
keterangan VARCHAR(255) DEFAULT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
INDEX idx_bansos_warga (warga_id),
INDEX idx_bansos_jenis (jenis_bantuan_id),
CONSTRAINT fk_bansos_warga FOREIGN KEY (warga_id) REFERENCES warga_miskin(id) ON DELETE CASCADE,
CONSTRAINT fk_bansos_jenis FOREIGN KEY (jenis_bantuan_id) REFERENCES jenis_bantuan(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 4. Foto kondisi rumah (KF-13)
CREATE TABLE IF NOT EXISTS foto_rumah (
id INT AUTO_INCREMENT PRIMARY KEY,
warga_id INT NOT NULL,
file_path VARCHAR(255) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
INDEX idx_foto_warga (warga_id),
CONSTRAINT fk_foto_warga FOREIGN KEY (warga_id) REFERENCES warga_miskin(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 5. Fasilitas publik untuk proximity (KF-21) + seed sampel
CREATE TABLE IF NOT EXISTS fasilitas_publik (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(120) NOT NULL,
jenis ENUM('sekolah','puskesmas','pasar','kantor_kelurahan','rumah_ibadah','lainnya') NOT NULL DEFAULT 'lainnya',
wilayah_id INT DEFAULT NULL,
geom GEOMETRY NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
SPATIAL INDEX idx_fasilitas_geom (geom)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO fasilitas_publik (nama, jenis, geom) VALUES
('SDN 01 Pontianak Kota', 'sekolah', ST_GeomFromText('POINT(109.3380 -0.0420)')),
('Puskesmas Alianyang', 'puskesmas', ST_GeomFromText('POINT(109.3330 -0.0480)')),
('Pasar Flamboyan', 'pasar', ST_GeomFromText('POINT(109.3470 -0.0250)')),
('Kantor Kel. Akcaya', 'kantor_kelurahan', ST_GeomFromText('POINT(109.3445 -0.0400)')),
('Puskesmas Kampung Bali','puskesmas', ST_GeomFromText('POINT(109.3360 -0.0440)'));