Fix daily_summary dan hourly_summary aggregation, tambah fallback logic untuk dashboard, update validator untuk camera dan location type

This commit is contained in:
mwpn
2025-12-18 11:13:06 +07:00
parent 9416de7d87
commit d05fa2f4cd
31 changed files with 2041 additions and 45 deletions

74
DASHBOARD_DATA_FIX.md Normal file
View File

@@ -0,0 +1,74 @@
# Perbaikan Dashboard Data Kosong
## 🔍 Masalah yang Ditemukan
1. **Data entry_events ada** (1382 records)
2. **Data terakhir**: 2025-12-16 (kemarin)
3. **Data hari ini**: Tidak ada (0 records)
4. **Daily summary hari ini**: Kosong
5. **Dashboard menampilkan "Hari Ini"**: Jadi semua nilai 0
## ✅ Solusi yang Diterapkan
### 1. Fallback ke Entry Events
**File**: `api-btekno/src/Modules/Retribusi/Dashboard/DashboardService.php`
Ditambahkan fallback logic di method `getSummary()` dan `getByCategoryChart()`:
- Jika `daily_summary` kosong untuk tanggal tertentu
- Query langsung dari `entry_events` dengan join ke `locations`, `gates`, dan `tariffs`
- Hitung total_count dan total_amount secara real-time
### 2. Aggregate Data Kemarin
Jalankan aggregation untuk data yang ada:
```bash
php bin/daily_summary.php 2025-12-16
```
## 📋 Cara Mengatasi
### Option 1: Aggregate Data yang Ada
```bash
# Aggregate data kemarin
cd api-btekno
php bin/daily_summary.php 2025-12-16
# Atau aggregate semua tanggal yang ada data
php bin/daily_summary.php 2025-12-15
php bin/daily_summary.php 2025-12-14
```
### Option 2: Ubah Default Date di Dashboard
Edit `retribusi (frontend)/public/dashboard/js/dashboard.js`:
```javascript
const state = {
date: '2025-12-16', // Ganti dengan tanggal yang ada data
locationCode: '',
gateCode: ''
};
```
### Option 3: Setup Cron Job
Setup cron job untuk auto-aggregate setiap hari:
```cron
# Daily summary (run at 1 AM, rekap kemarin)
0 1 * * * cd /path/to/api-btekno && php bin/daily_summary.php
```
## 🔧 Testing
Setelah perbaikan, test dengan:
```bash
# Cek data dashboard
php bin/check_dashboard_data.php
# Test API endpoint
curl "http://localhost:8000/retribusi/v1/dashboard/summary?date=2025-12-16" \
-H "Authorization: Bearer YOUR_TOKEN"
```
## 📝 Catatan
1. **Fallback hanya untuk read**: Data tetap perlu di-aggregate ke `daily_summary` untuk performa
2. **Hari ini kosong**: Normal jika belum ada data entry_events hari ini
3. **Dashboard akan otomatis**: Menampilkan data dari entry_events jika daily_summary kosong