8eb7e69b217d87dc4aab7298e747ac51496d8a83
Memperbaiki bug yang menyebabkan data duplikat pada hasil closing balance report karena penggunaan `distinct` yang tidak efektif. Perubahan utama: • Query Optimization untuk Duplicate Elimination: - Mengganti subquery `whereRaw` dengan pendekatan `groupBy` untuk performa dan akurasi yang lebih baik - Menggunakan `MIN(id)` dan `MIN(date_time)` untuk menjaga konsistensi data terpilih - Menambahkan `groupBy` pada `trans_reference`, `amount_lcy`, dan `booking_date` untuk filter duplikat yang akurat • Double Layer Validation: - Validasi di level database: eliminasi duplikat menggunakan `groupBy` - Validasi di level aplikasi: menggunakan array `$seenTransactions` untuk deteksi duplikat saat iterasi - Transaksi yang terdeteksi sebagai duplikat akan dilewati (skip processing) • Enhanced Logging: - Menambahkan log saat duplicate transaction terdeteksi dan dilewati - Log jumlah total duplikat yang ditemukan untuk audit dan monitoring - Menambahkan log jumlah record yang dihapus saat `deleteExistingProcessedData()` • Database Index Recommendations: - Menambahkan saran index untuk mendukung operasi `groupBy`: - `(account_number, booking_date, trans_reference, amount_lcy)` - Index ini akan membantu efisiensi dalam filtering dan deduplikasi data • Compatibility: - Eager loading tetap dipertahankan untuk efisiensi query - Skema output CSV tidak berubah (tidak ada breaking changes) - Proses chunk tetap digunakan untuk efisiensi memory Testing: - Validasi output CSV tidak mengandung duplikat `trans_reference` dengan `amount_lcy` sama - Performa tetap cepat (±5–10 menit) - Validasi hasil closing balance tetap akurat dan konsisten Breaking Changes: Tidak ada Performa: Terjaga dengan eliminasi duplikat yang efektif
Description
No description provided
Languages
PHP
77.4%
Blade
22.6%