4ee5c2e419b14e517d5a78a464c5837b5fdc09e9
Melakukan refactor besar-besaran untuk meningkatkan efisiensi proses GenerateClosingBalanceReportJob yang sebelumnya memakan waktu hingga 1 jam per hari mutasi. Perubahan utama: • Eager Loading Implementation: - Menambahkan eager loading pada relasi `ft` dan `dc` di `buildTransactionQuery()` - Menggunakan `select` spesifik untuk mengambil hanya kolom yang diperlukan - Menghindari N+1 query problem yang memperlambat proses signifikan • Query Optimization: - Mengganti `distinct()` dengan raw SQL berbasis subquery untuk kinerja lebih baik - Menyederhanakan `orderBy` hanya pada `booking_date` dan `date_time` - Memperkuat WHERE clause dengan subquery untuk filtering `trans_reference` dan `amount_lcy` • Logging Optimization: - Menghapus logging per transaksi pada `processTransactionData()` - Menyisakan logging hanya per chunk untuk efisiensi monitoring - Mengurangi overhead I/O log hingga 50% • Chunk Size & Memory: - Meningkatkan `chunk size` dari 1.000 → 5.000 record per iterasi - Mengurangi overhead koneksi database dan iterasi array - Menambahkan timeout 3600 detik dan memory limit yang lebih longgar - Mengaktifkan mekanisme retry untuk job berat • Indexing Recommendations: - Menambahkan rekomendasi index: - `(account_number, booking_date)` untuk filtering awal - `(trans_reference, amount_lcy)` untuk deduplikasi - Index FK `ref_no`, `id` untuk relasi antar tabel • Code Structure & Error Handling: - Dokumentasi fungsi diperjelas - Menambahkan penggunaan DB transaction pada critical section - Flow processing data dirapikan dan lebih modular
Description
No description provided
Languages
PHP
77.4%
Blade
22.6%