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 <ddeni05@gmail.com>
This commit is contained in:
Daeng Deni Mardaeni
2025-06-17 09:54:26 +07:00
parent 2c8f49af20
commit 6035c61cc4

View File

@@ -1,7 +1,4 @@
<?php
use Illuminate\Support\Facades\DB;
namespace Modules\Webstatement\Jobs;
use Exception;
@@ -13,6 +10,7 @@ use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Storage;
use Modules\Webstatement\Models\StmtEntry;
use Illuminate\Support\Facades\DB;
class ProcessStmtEntryDataJob implements ShouldQueue
{
@@ -201,9 +199,10 @@ use Illuminate\Support\Facades\DB;
if (!empty($this->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++;
}
}