75 lines
2.0 KiB
Markdown
75 lines
2.0 KiB
Markdown
# 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
|
|
|