Files
api-btekno/DASHBOARD_DATA_FIX.md

2.0 KiB

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:

php bin/daily_summary.php 2025-12-16

📋 Cara Mengatasi

Option 1: Aggregate Data yang Ada

# 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:

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:

# 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:

# 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