SIGAP Pangan adalah platform web intelligence yang mampu mengumpulkan data dari berbagai sumber, mengolahnya menjadi insight prediktif, menghitung risiko rantai pasok per wilayah, dan menyajikannya dalam bentuk dasbor interaktif, peta risiko, alert, serta rekomendasi intervensi.
- Frontend: Next.js (TypeScript)
- Backend: NestJS (TypeScript)
- Database & Auth: Supabase (PostgreSQL)
- AI Service / Data Pipeline: Python (XGBoost, Prophet) yang di-deploy/diintegrasikan menggunakan Microsoft Azure
- Peta & Visualisasi Geospatial: Azure Maps (Fitur Microsoft Azure)
- Deployment & Scheduler: Azure Functions / Cron Worker
SIGAP-Pangan/
├── frontend/ # Aplikasi web Frontend menggunakan Next.js
├── backend/ # API Backend menggunakan NestJS
├── ai-service/ # Service Python AI & Machine Learning
│ ├── notebooks/ # Jupyter notebooks untuk eksplorasi data & eksperimen
│ ├── pipelines/ # Pipeline ingestion, preprocessing, & training
│ └── services/ # Script untuk inference harian & risk scoring
├── supabase/ # Konfigurasi Supabase (skema DB & migrasi)
│ └── migrations/ # File SQL untuk skema database (commodities, regions, dll)
└── README.md # Dokumentasi utama proyek
Sistem ini bekerja dari pengambilan data (hulu) hingga visualisasi kepada pengguna (hilir) dengan alur sebagai berikut:
- Proses: Scheduler (menggunakan Azure Functions) berjalan setiap hari (pagi & sore) untuk mengambil data eksternal.
- Sumber Data:
- PIHPS BI (harga pangan harian)
- BMKG API (prakiraan cuaca)
- Bapanas / Satu Data (indikator ketersediaan/stok)
- Output: Data mentah disimpan ke dalam database (tabel staging).
- Proses: Membersihkan data mentah, menyamakan format tanggal/wilayah, menangani missing value, dan menyatukan data ke dalam satu tabel analitik (analytical table).
- Feature Engineering: Membuat fitur tambahan seperti pergerakan moving average, volatilitas, lag harga, dll.
- Proses: Melatih model AI secara berkala dan terjadwal (memisahkan training dari inference agar web tidak berat).
- Model: Baseline (Prophet) dan Model Fitur Gabungan (XGBoost).
- Output: Model terbaik disimpan ke penyimpanan (registry), beserta pencatatan metrik performa (MAE, RMSE, MAPE).
- Proses: Berjalan setiap hari menggunakan model AI yang sudah dilatih pada data teraktual.
- Output: Prediksi harga 3–7 hari ke depan per komoditas dan wilayah, lalu datanya disimpan ke dalam tabel
forecast_results.
- Proses: Membaca hasil prediksi dan menghitung Risk Score (0-100) menggunakan formula gabungan dari fitur relevan, contoh komposisi:
- Prediksi kenaikan harga (40%)
- Volatilitas historis (25%)
- Severity cuaca (20%)
- Indikator ketersediaan pasokan (15%)
- Output: Klasifikasi Level Risiko (Rendah, Sedang, Tinggi) dan penjelasan alert yang disimpan ke tabel
risk_scoressertaalerts.
- Proses: Layanan terpisah (NestJS) yang tidak memproses model AI langsung, namun menjembatani operasional UI dengan Database.
- Output: Menangani autentikasi, penyaringan (filter), penyiapan JSON terstruktur untuk dasbor, endpoint peta, alert, dan detail wilayah.
- Halaman Utama / Landing Dashboard: Memberikan gambaran cepat mengenai jumlah komoditas dipantau, wilayah risiko tinggi, komoditas paling rawan, tren harga, serta heatmap.
- Analisis Spesifik (Peta Risiko & Detail Komoditas): Pengguna menelusuri data dengan klik hover, peta interaktif per-wilayah (didukung fitur Azure Maps), maupun filter komoditas spesifik.
- Alerts Center: Pengguna bisa melihat notifikasi kenaikan harga, membaca insight / alasan di balik tingginya indeks risiko, serta melihat usulan prioritas intervensi.
Tabel-tabel inti yang direkomendasikan untuk memfasilitasi operasional sistem di atas:
commodities: Daftar komoditas yang dipantau (kode, nama, satuan).regions: Data titik pemantauan (provinsi, kabupaten/kota, latitude, longitude).daily_prices: Histori harga pangan (source, price, komoditas).weather_features: Data historis & perkiraan cuaca (curah hujan, temperatur).supply_indicators: Indikator tambahan suplai/ketersediaan barang.forecast_results: Proyeksi prediksi harga dari engine AI.risk_scores: Nilai persentase risiko untuk masing-masing komoditas di wilayahnya.alerts&recommendations: Rekaman peringatan aktif, status alert, skor keparahan (severity), dan aksi rekomendasi.
Dengan pemisahan layanan (Frontend, Backend Web, Service AI), pengembangan proyek diharapkan lebih scalable, modular, dan pembagian tugas dalam tim menjadi lebih jelas.