231 lines
6.3 KiB
Markdown
231 lines
6.3 KiB
Markdown
# RANGKUMAN PENTING PROJECT 05 - WebGIS Poverty Mapping
|
|
|
|
File ini merangkum catatan penting saja dari beberapa file catatan revisi/migrasi.
|
|
|
|
---
|
|
|
|
## 1. File SQL yang Penting Disimpan
|
|
|
|
Simpan file SQL berikut sebagai backup database dan migrasi:
|
|
|
|
1. `schema.sql`
|
|
- Struktur database dasar.
|
|
- Dipakai jika ingin instal ulang database dari awal.
|
|
|
|
2. `migration_fix_multi_ri_pin.sql`
|
|
- Memperbaiki masalah admin rumah ibadah yang punya lebih dari satu rumah ibadah.
|
|
- Menambahkan aturan satu akun penerima hanya boleh punya satu pin aktif.
|
|
|
|
3. `migration_revisi_persetujuan_hapus.sql`
|
|
- Menambahkan fitur pengajuan/persetujuan hapus marker rumah ibadah dan pin penerima.
|
|
|
|
4. `migration_revisi_sinkronisasi.sql`
|
|
- Memperbaiki sinkronisasi penerima dengan rumah ibadah terdekat.
|
|
|
|
Rekomendasi:
|
|
- Jangan letakkan file SQL di folder publik saat hosting.
|
|
- Simpan di folder backup lokal, misalnya `backup_sql/`.
|
|
|
|
---
|
|
|
|
## 2. Perbaikan Paling Penting pada Sistem
|
|
|
|
### A. Admin Rumah Ibadah Multi-RI
|
|
|
|
Masalah lama:
|
|
- Admin rumah ibadah hanya terbaca punya 1 rumah ibadah karena query memakai `LIMIT 1`.
|
|
- Akibatnya, pin/marker dari rumah ibadah lain tidak muncul.
|
|
|
|
Perbaikan:
|
|
- Sistem sekarang mendukung admin yang mengelola lebih dari satu rumah ibadah.
|
|
- Query memakai daftar ID rumah ibadah, bukan hanya 1 ID.
|
|
|
|
Dampak:
|
|
- Pin penerima dan rumah ibadah milik admin tampil lebih lengkap.
|
|
- Laporan, riwayat, program bantuan, dan penyaluran mengikuti semua rumah ibadah milik admin.
|
|
|
|
---
|
|
|
|
### B. Satu Akun Penerima Hanya Boleh Satu Pin Aktif
|
|
|
|
Masalah lama:
|
|
- Satu akun penerima bisa punya lebih dari satu pin aktif.
|
|
- Ini menyebabkan data tidak sinkron dan penerima bisa muncul di beberapa rumah ibadah.
|
|
|
|
Perbaikan:
|
|
- Sebelum menambah pin, sistem mengecek apakah user penerima sudah punya pin aktif.
|
|
- Pin aktif yang dimaksud adalah status `menunggu` atau `diterima`, dan belum disetujui hapus.
|
|
- Database juga ditambah unique key agar satu user tidak bisa punya lebih dari satu pin aktif.
|
|
|
|
---
|
|
|
|
### C. Sinkronisasi Radius 300 Meter
|
|
|
|
Masalah lama:
|
|
- Penerima bisa terhubung ke rumah ibadah yang salah.
|
|
- Jika radius beberapa rumah ibadah saling beririsan, sistem belum selalu memilih yang paling dekat.
|
|
|
|
Perbaikan:
|
|
- Penerima dihitung ulang berdasarkan rumah ibadah aktif terdekat dalam radius 300 meter.
|
|
- Jika rumah ibadah dihapus, penerima dilepas lalu dicari ulang ke rumah ibadah aktif terdekat lain.
|
|
|
|
---
|
|
|
|
### D. Persetujuan Hapus Marker/Pin
|
|
|
|
Alur baru:
|
|
- Super admin bisa menghapus marker rumah ibadah dan pin penerima secara langsung.
|
|
- Admin rumah ibadah hanya bisa mengajukan hapus rumah ibadah/penerima.
|
|
- Penerima bisa mengajukan hapus pin miliknya sendiri.
|
|
- Pengajuan hapus harus disetujui super admin.
|
|
|
|
Dampak:
|
|
- Data tidak langsung hilang sembarangan.
|
|
- Ada kontrol dari super admin.
|
|
- Marker yang sudah disetujui hapus tidak tampil lagi di peta dan laporan aktif.
|
|
|
|
---
|
|
|
|
### E. CRUD Akun
|
|
|
|
Super admin dapat mengelola:
|
|
- Akun admin rumah ibadah.
|
|
- Akun penerima.
|
|
|
|
Admin rumah ibadah dapat mengelola:
|
|
- Akun penerima saja.
|
|
|
|
Fitur:
|
|
- Tambah akun.
|
|
- Lihat daftar akun.
|
|
- Filter role/status.
|
|
- Cari nama/username.
|
|
- Edit akun.
|
|
- Hapus akun jika belum punya relasi data.
|
|
- Nonaktifkan akun jika sudah punya relasi agar audit data tidak rusak.
|
|
|
|
---
|
|
|
|
### F. Validasi Program dan Penyaluran Bantuan
|
|
|
|
Perbaikan penting:
|
|
- Program bantuan tidak otomatis mengambil rumah ibadah pertama.
|
|
- Admin yang punya banyak rumah ibadah harus memilih rumah ibadah.
|
|
- Penyaluran hanya bisa dicatat jika program dan penerima berada di rumah ibadah yang sama.
|
|
- Tombol "Catat" tidak muncul lagi jika program sudah selesai.
|
|
- Dropdown penerima difilter sesuai rumah ibadah dari program yang dipilih.
|
|
|
|
---
|
|
|
|
### G. Perbaikan Logika NULL
|
|
|
|
Masalah lama:
|
|
- Nilai kosong seperti nominal, jarak meter, atau rumah_ibadah_id bisa tersimpan sebagai `0`, bukan `NULL`.
|
|
|
|
Perbaikan:
|
|
- Query INSERT/UPDATE dipisah agar nilai kosong benar-benar masuk sebagai `NULL`.
|
|
|
|
Dampak:
|
|
- Data lebih bersih.
|
|
- Tidak muncul rumah_ibadah_id = 0 atau jarak_meter = 0 yang menyesatkan.
|
|
|
|
---
|
|
|
|
### H. Validasi Client-side
|
|
|
|
Ditambahkan validasi sebelum data dikirim:
|
|
- Program wajib dipilih.
|
|
- Penerima wajib dipilih.
|
|
- Nama program wajib diisi.
|
|
- Bulan harus 1-12.
|
|
- Tahun minimal 2000.
|
|
- Nama, username, dan password wajib saat membuat akun baru.
|
|
- Password minimal 6 karakter.
|
|
|
|
---
|
|
|
|
## 3. Catatan Error SQL
|
|
|
|
### Error #1044 information_schema
|
|
|
|
Penyebab:
|
|
- Akun MySQL tidak punya akses membaca `INFORMATION_SCHEMA`.
|
|
|
|
Solusi:
|
|
- Gunakan file migrasi versi manual.
|
|
- Atau jalankan `jalankan_migrasi_fix.php` jika file itu tersedia.
|
|
- Setelah selesai, hapus `jalankan_migrasi_fix.php`.
|
|
|
|
---
|
|
|
|
### Error #1064 IF NOT EXISTS
|
|
|
|
Penyebab:
|
|
- Versi MySQL/MariaDB tidak mendukung syntax:
|
|
`ALTER TABLE ... ADD COLUMN IF NOT EXISTS`
|
|
|
|
Solusi:
|
|
- Gunakan file `migration_fix_multi_ri_pin.sql` versi kompatibel.
|
|
- Jika ada penerima dengan pin aktif ganda, rapikan dulu lewat dashboard super admin.
|
|
- Setelah itu jalankan ulang migration.
|
|
|
|
---
|
|
|
|
## 4. File Catatan yang Bisa Digabung/Hapus
|
|
|
|
Setelah rangkuman ini dibuat, file catatan berikut boleh dipindahkan ke backup:
|
|
|
|
- `CATATAN_FIXED_MULTI_RI.md`
|
|
- `CATATAN_PERBAIKAN_LOGIKA.md`
|
|
- `CATATAN_REVISI_CRUD_AKUN.md`
|
|
- `CATATAN_REVISI_PERSETUJUAN_HAPUS.md`
|
|
- `CATATAN_SQL_ERROR_1044.md`
|
|
- `CATATAN_SQL_ERROR_1064.md`
|
|
|
|
Jangan langsung buang permanen jika proyek masih diperiksa dosen/penguji.
|
|
|
|
---
|
|
|
|
## 5. Rekomendasi Struktur Folder
|
|
|
|
Gunakan struktur seperti ini:
|
|
|
|
```text
|
|
05/
|
|
├── index.php
|
|
├── login.php
|
|
├── register.php
|
|
├── koneksi.php
|
|
├── auth.php
|
|
├── tambah_penerima.php
|
|
├── tambah_penyaluran.php
|
|
├── tambah_program_bantuan.php
|
|
├── edit_user.php
|
|
├── hapus_user.php
|
|
├── ...
|
|
└── backup_dokumentasi/
|
|
├── RANGKUMAN_PENTING_PROJECT_05.md
|
|
└── backup_sql/
|
|
├── schema.sql
|
|
├── migration_fix_multi_ri_pin.sql
|
|
├── migration_revisi_persetujuan_hapus.sql
|
|
└── migration_revisi_sinkronisasi.sql
|
|
```
|
|
|
|
---
|
|
|
|
## 6. Kesimpulan
|
|
|
|
Yang paling penting disimpan:
|
|
1. `schema.sql`
|
|
2. Semua file `migration_*.sql`
|
|
3. Satu file rangkuman ini
|
|
4. File PHP aplikasi utama
|
|
|
|
Yang tidak wajib ada di folder utama aplikasi:
|
|
- File catatan `.md`
|
|
- File SQL backup
|
|
- File migrasi yang sudah selesai dijalankan
|
|
|
|
Untuk hosting, file SQL dan catatan revisi sebaiknya tidak ikut berada di folder publik.
|