waste-prediction-api / docs /BACKEND_DOC.md
ALAMDIENG's picture
feat(ui/docs): redesign UI/UX for scientific honesty, 5-tier data provenance, and GovTech credibility
05e35f7
|
Raw
History Blame Contribute Delete
7.92 kB
# AETERNA AI — Backend Architecture & Engineering Documentation (v4.1.0)
Dokumen ini menjelaskan detail teknis arsitektur sistem backend, model machine learning (Stacking Regressor & Amazon Chronos), rekayasa fitur (*feature engineering*), simulasi logistik deterministik, serta panduan kontainerisasi dan *deployment* untuk **AETERNA AI (Waste Forecasting & Decision Intelligence Platform)**.
---
## 🏗️ 1. Desain Arsitektur Backend
Backend AETERNA AI dibangun menggunakan **FastAPI (Python)** dengan arsitektur asinkron berkecepatan tinggi.
```
+-----------------------------------------------------------------------------------------------+
| FASTAPI BACKEND ENGINE |
| |
| [ /api/v1/predict ] [ /api/v1/autopilot ] [ /api/v1/news ] |
| | | | |
| v v v |
| +---------------------------------------------------------+ +------------------+ |
| | AI FORECAST LAYER | | Curated News DB | |
| | - Stacking Regressor (DT + RF + GBR -> Ridge) | | (Static JSON) | |
| | - Amazon Chronos-T5 (Tiny) Time-Series Model | +------------------+ |
| +---------------------------------------------------------+ |
| | |
| v |
| +---------------------------------------------------------+ |
| | DETERMINISTIC LOGISTICS SIMULATION | |
| | - Suggested Fleet (15T Compactor @ 95% Load Factor) | |
| | - Crew Sizing (3 Personnel / Active Truck) | |
| | - Collection Time (Throughput 2.0 Ton/Hour/Truck) | |
| +---------------------------------------------------------+ |
| | |
| v |
| +---------------------------------------------------------+ |
| | DATA INGESTION LAYER | |
| | - Open-Meteo Weather API (Live Observed Rainfall mm) | |
| | - BPS Headcount Reference (44 Sub-districts) | |
| | - Event & Mudik Calendar Feature Extractor | |
| +---------------------------------------------------------+ |
+-----------------------------------------------------------------------------------------------+
```
### Komponen Utama:
1. **Asynchronous Handling**: Memanfaatkan FastAPI dengan `run_in_threadpool` untuk menjalankan inferensi neural time-series (Chronos Transformer) tanpa memblokir thread event loop utama.
2. **Data Provenance Enforcement**: Seluruh skema response mengembalikan field provenance resmi (`data_status`, `forecast_type`, `model_version`, `training_data_type`, `disclaimer`, `weather_source`, `population_source`).
3. **Automatic OpenAPI / Swagger**: Endpoint terdokumentasi interaktif di `/docs` berbasis skema Pydantic V2.
---
## 🧠 2. Mesin Machine Learning (ML Engine)
### A. AETERNA Stacking Regressor — Model Prediksi Spasial Multi-Kecamatan
Model ensemble yang menggabungkan 3 base-learner pohon keputusan dengan 1 meta-learner linear:
* **Base Models**:
1. `DecisionTreeRegressor(max_depth=6)`
2. `RandomForestRegressor(n_estimators=150, max_depth=6)`
3. `GradientBoostingRegressor(n_estimators=150, max_depth=5, lr=0.05)`
* **Meta-Learner**: `Ridge(alpha=1.0)`
* **Fitur Input**: 11 variabel spasial-temporal (`Population_Jiwa`, `Normal_Avg_Ton`, `Zone_Type_Code`, `Rainfall_mm`, `Rain_Lag_1`, `Is_Weekend`, `Hari_Dalam_Minggu`, `Bulan`, `Is_Mudik`, `Ada_Event`, `Event_Crowd_Headcount`).
> ⚠️ **Catatan Evaluasi Ilmiah**: Metrik evaluasi di bawah ini merupakan hasil pengujian pada dataset simulasi pengembangan (*Mode A: Synthetic Development Benchmark*). Evaluasi ini menunjukkan kemampuan algoritma mempelajari pola sintetis dan **bukan** bukti validasi akurasi lapangan dunia nyata.
* **Metrik Evaluasi Synthetic Benchmark (Test Set Kronologis Juli – Desember 2025)**:
* **Mean Absolute Error (MAE)**: `11.85 Ton`
* **Root Mean Squared Error (RMSE)**: `15.42 Ton`
* **R-Squared ($R^2$ Score)**: `88.45%`
* **Mean Absolute Percentage Error (MAPE)**: `6.12%`
### B. Amazon Chronos-T5 (Tiny) — Model Deret Waktu
Model Transformer deret waktu dari Amazon Research yang digunakan untuk inferensi deret waktu zero-shot berdasarkan riwayat tonase lokal.
---
## 🚚 3. Mesin Simulasi Logistik Deterministik (Non-AI Engine)
AETERNA AI memisahkan secara tegas perhitungan logistik dari model machine learning. Rekomendasi armada dihitung menggunakan formula deterministik berbasis kapasitas dan throughput pengangkutan:
1. **Suggested Fleet (15-Ton Compactor Baseline)**:
$$ ext{Effective Capacity} = 15.0 ext{ Ton} imes 0.95 = 14.25 ext{ Ton/trip}$$
$$ ext{Base Trucks} = \lceil ext{Forecast Volume} / 14.25 ext{ Ton} ceil$$
$$ ext{Suggested Trucks} = \lceil ext{Base Trucks} imes 1.05 ext{ (Buffer)} ceil$$
2. **Kebutuhan Personel (Crew Sizing)**:
$$ ext{Total Personel} = ext{Suggested Trucks} imes 3 ext{ (1 Driver + 2 Sanitarians)}$$
3. **Estimasi Waktu Pengangkutan (Throughput-Based)**:
$$ ext{Fleet Throughput} = ext{Active Trucks} imes 2.0 ext{ Ton/jam}$$
$$ ext{Raw Hours} = rac{ ext{Forecast Volume}}{ ext{Fleet Throughput}}$$
$$ ext{Adjusted Hours} = rac{ ext{Raw Hours} imes F_{ ext{traffic}} imes F_{ ext{weather}} imes F_{ ext{event}}}{ ext{Efficiency}}$$
---
## 🌦️ 4. Rekayasa Fitur Dinamis & Integrasi Weather Open-Meteo
* **Curah Hujan Live (Open-Meteo API)**:
Sistem memanggil Open-Meteo API secara asinkron berdasarkan koordinat (`latitude`, `longitude`) masing-masing kecamatan.
1. `Rainfall_mm`: Curah hujan harian (mm) tanggal target.
2. `Rain_Lag_1`: Curah hujan harian 1 hari sebelumnya untuk menangkap efek penundaan pengangkutan dan penyerapan air.
* **Fitur Demografi**: Populasi BPS DKI Jakarta per kecamatan.
* **Fitur Kalender**: Hari kerja vs akhir pekan, bulan, serta jendela mudik Lebaran.
---
## 📰 5. Sistem Berita & Artikel Referensi Terkurasi
Endpoint `/api/v1/news` menyediakan artikel referensi terkurasi mengenai tata kelola sampah DKI Jakarta.
### Integritas Sumber:
* **Curated Static Mode**: Seluruh artikel diverifikasi secara manual dengan tautan URL asli ke media resmi (Detik.com, Antara News, Kompas.com).
* **No LLM Fabrication**: Pembuatan artikel buatan oleh LLM dinonaktifkan secara permanen guna mencegah penyebaran disinformasi publik.
---
## 🐳 6. Panduan Kontainerisasi & Deployment
Aplikasi dapat dijalankan melalui Docker:
```dockerfile
FROM python:3.11-slim
WORKDIR /code
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
```