Fix daily_summary dan hourly_summary aggregation, tambah fallback logic untuk dashboard, update validator untuk camera dan location type
This commit is contained in:
74
DASHBOARD_DATA_FIX.md
Normal file
74
DASHBOARD_DATA_FIX.md
Normal 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
|
||||
|
||||
Reference in New Issue
Block a user