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:
@@ -144,6 +144,12 @@
|
|||||||
private function processRow(array $row, int $rowCount, string $filePath)
|
private function processRow(array $row, int $rowCount, string $filePath)
|
||||||
: void
|
: 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));
|
||||||
|
}
|
||||||
|
|
||||||
$csvHeaders = array_keys(self::FIELD_MAP);
|
$csvHeaders = array_keys(self::FIELD_MAP);
|
||||||
|
|
||||||
if (count($csvHeaders) !== count($row)) {
|
if (count($csvHeaders) !== count($row)) {
|
||||||
|
|||||||
@@ -185,6 +185,12 @@
|
|||||||
private function processRow(array $row, int $rowCount, string $filePath)
|
private function processRow(array $row, int $rowCount, string $filePath)
|
||||||
: void
|
: 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)) {
|
if (count(self::CSV_HEADERS) !== count($row)) {
|
||||||
Log::warning("Row $rowCount in $filePath has incorrect column count. Expected: " .
|
Log::warning("Row $rowCount in $filePath has incorrect column count. Expected: " .
|
||||||
count(self::CSV_HEADERS) . ", Got: " . count($row));
|
count(self::CSV_HEADERS) . ", Got: " . count($row));
|
||||||
|
|||||||
Reference in New Issue
Block a user