Files
api-btekno/DASHBOARD_DATA_FIX.md

75 lines
2.0 KiB
Markdown
Raw Permalink Normal View History

# 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