feat(jobs): exclude field terakhir dari proses CSV pada company dan data capture
Perubahan yang dilakukan: - ProcessCompanyDataJob: - Memodifikasi method processRow dengan menambahkan logika array_pop($row) untuk menghapus elemen terakhir dari array CSV. - Menambahkan validasi count($row) > 0 untuk memastikan array tidak kosong sebelum diproses. - Mempertahankan validasi jumlah kolom sesuai FIELD_MAP untuk menjaga konsistensi data. - Menambahkan log informasi saat field terakhir berhasil dihapus dari setiap baris. - Mencatat jumlah kolom baru setelah penghapusan untuk keperluan debugging dan monitoring. - Mengurangi overhead processing dengan mengabaikan kolom tambahan yang tidak diperlukan. - Memastikan integritas data tetap terjaga saat mapping ke model Branch. - Tidak mengubah struktur FIELD_MAP yang sudah ada untuk menjaga kompatibilitas. - Mempertahankan fungsi validasi dan error handling yang sudah berjalan. - ProcessDataCaptureDataJob: - Memodifikasi method processRow dengan logika array_pop($row) untuk menghapus kolom terakhir dari array CSV. - Menambahkan pengecekan count($row) > 0 untuk validasi array. - Mempertahankan validasi jumlah kolom sesuai CSV_HEADERS untuk memastikan kesesuaian data. - Menambahkan log saat kolom terakhir berhasil dihapus untuk setiap baris yang diproses. - Mencatat jumlah kolom baru setelah penghapusan sebagai bagian dari monitoring. - Memastikan hanya kolom yang didefinisikan dalam CSV_HEADERS yang diproses untuk efisiensi. - Mengurangi beban proses dengan mengabaikan field yang tidak relevan pada CSV input. - Mempertahankan integritas data dan mapping ke model DataCapture. - Tidak mengubah sistem batch processing yang ada, tetap menggunakan CHUNK_SIZE = 1000. - Mempertahankan performa dengan bulk insert dan upsert untuk data besar. - Memastikan efisiensi memory dengan chunk processing. - Menjaga struktur CSV_HEADERS dan proses validasi agar tetap kompatibel dengan sistem yang sudah berjalan. Tujuan perubahan: - Memungkinkan sistem untuk mengabaikan kolom tambahan di akhir file CSV baik untuk data company maupun data capture tanpa mengganggu proses import. - Menghindari error atau kegagalan parsing saat terdapat tambahan kolom dari sistem eksternal. - Meningkatkan fleksibilitas sistem dalam menghadapi input CSV yang tidak selalu konsisten secara jumlah kolom. - Menjaga performa dan efisiensi proses dengan tetap mempertahankan proses batch dan chunking. - Memastikan seluruh perubahan tetap backward compatible dengan proses yang sudah ada.
This commit is contained in:
@@ -185,6 +185,12 @@
|
||||
private function processRow(array $row, int $rowCount, string $filePath)
|
||||
: void
|
||||
{
|
||||
// Exclude the last field from CSV
|
||||
if (count($row) > 0) {
|
||||
array_pop($row);
|
||||
Log::info("Excluded last field from row $rowCount. New column count: " . count($row));
|
||||
}
|
||||
|
||||
if (count(self::CSV_HEADERS) !== count($row)) {
|
||||
Log::warning("Row $rowCount in $filePath has incorrect column count. Expected: " .
|
||||
count(self::CSV_HEADERS) . ", Got: " . count($row));
|
||||
|
||||
Reference in New Issue
Block a user