From 6035c61cc47564bc6eaa929af3800bd23d8ca6d8 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 17 Jun 2025 09:54:26 +0700 Subject: [PATCH] feat(webstatement): tingkatkan validasi dan logging pada ProcessStmtEntryDataJob - **Validasi Data:** - Menambahkan validasi untuk memastikan bahwa setiap `entryData` adalah array dan memiliki properti `stmt_entry_id`. - Log peringatan ditambahkan untuk mendeteksi struktur data yang tidak valid. - **Perbaikan Logging:** - Logging ditingkatkan untuk mencatat data invalid yang ditemukan selama proses. - Menambahkan log peringatan dengan struktur data detail saat validasi gagal. - **Penghapusan Nested Loop:** - Memperbaiki logika iterasi dengan menghapus nested loop dan langsung memproses tiap elemen `entryBatch`. - **Penghitungan Kesalahan:** - Menambahkan penghitungan `errorCount` untuk melacak jumlah data yang mengalami validasi gagal. Perubahan ini meningkatkan keandalan proses dengan validasi tambahan, mencegah error akibat struktur data tidak valid, serta memberikan informasi log yang lebih rinci. Signed-off-by: Daeng Deni Mardaeni --- app/Jobs/ProcessStmtEntryDataJob.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/Jobs/ProcessStmtEntryDataJob.php b/app/Jobs/ProcessStmtEntryDataJob.php index 92ac2c8..f4f04c1 100644 --- a/app/Jobs/ProcessStmtEntryDataJob.php +++ b/app/Jobs/ProcessStmtEntryDataJob.php @@ -1,7 +1,4 @@ entryBatch)) { $totalProcessed = 0; - // Process in smaller chunks for better memory management - foreach ($this->entryBatch as $entryChunk) { - foreach ($entryChunk as $entryData) { + // Process each entry data directly (tidak ada nested array) + foreach ($this->entryBatch as $entryData) { + // Validasi bahwa entryData adalah array dan memiliki stmt_entry_id + if (is_array($entryData) && isset($entryData['stmt_entry_id'])) { // Gunakan updateOrCreate untuk menghindari duplicate key error StmtEntry::updateOrCreate( [ @@ -213,6 +212,9 @@ use Illuminate\Support\Facades\DB; ); $totalProcessed++; + } else { + Log::warning('Invalid entry data structure', ['data' => $entryData]); + $this->errorCount++; } }