- Menambahkan konstanta baru pada setiap job untuk meningkatkan keterbacaan:
- `CSV_DELIMITER` untuk delimiter CSV.
- `MAX_EXECUTION_TIME` untuk batas waktu eksekusi (86400 detik).
- `FILENAME` untuk nama file masing-masing job.
- `DISK_NAME` untuk disk yang digunakan.
- Mengubah `protected` menjadi `private` untuk properti seperti:
- `$period`, `$processedCount`, dan `$errorCount` di semua job.
- Memindahkan logika proses menjadi metode modular untuk meningkatkan modularitas:
- Metode `initializeJob` untuk inisialisasi counter.
- Metode `processPeriod` untuk menangani file dan memulai proses.
- Metode `validateFile` untuk validasi keberadaan file.
- Metode `createTemporaryFile` untuk menyalin file sementara.
- Metode `processFile` untuk membaca isi file CSV dan memproses.
- Metode `processRow`/`mapAndSaveRecord`/`saveRecord` untuk pemrosesan dan penyimpanan data.
- Metode `cleanup` untuk menghapus file sementara.
- Metode `logJobCompletion` untuk logging hasil akhir.
- Menerapkan pengolahan file dengan sistem logging terperinci:
- Logging row dengan kolom tidak sesuai akan menghasilkan peringatan.
- Mencatat jumlah record berhasil diproses serta error.
Refaktor ini bertujuan untuk meningkatkan kualitas kode melalui modularisasi, keterbacaan, dan kemudahan pengujian ulang di seluruh kelas job.
- Mengubah tipe properti `periods` dari `protected $periods` menjadi `protected array $periods` untuk memastikan konsistensi tipe data.
- Memodifikasi konstruktor pada beberapa job class (`ProcessFtTxnTypeConditionJob`, `ProcessStmtNarrFormatDataJob`, `ProcessStmtNarrParamDataJob`, dan `ProcessTransactionDataJob`) agar mendukung parameter `periods` dalam bentuk array atau string.
- Menambahkan validasi dalam konstruktor untuk mengonversi string `periods` menjadi array jika diperlukan, memastikan fleksibilitas dan kompatibilitas yang lebih baik saat inisialisasi object.
- Refaktor ini meningkatkan kejelasan dalam codebase dan mengurangi potensi error akibat perbedaan format input.
- Nonaktifkan pengecekan folder `_parameter` di berbagai job untuk memungkinkan pemrosesan file pada folder ini.
- Ubah logika konstruksi nama file di job `ProcessTransactionDataJob` agar tidak lagi menyertakan nama folder periode.
- Sesuaikan pola nama file pada job `ProcessStmtNarrParamDataJob` dan `ProcessStmtNarrFormatDataJob` untuk menghapus ketergantungan pada nama folder periode.
- Tambahkan pemanggilan fungsi `processTransactionData`, `processStmtNarrParamData`, dan `processStmtNarrFormatData` secara eksplisit dengan argumen folder `_parameter` di `MigrasiController`.
- Batasi pemrosesan data customer dan akun hanya pada periode tertentu (`20250519`) di `MigrasiController`.
- Hapus pemanggilan beberapa fungsi proses data lain di `MigrasiController` untuk periode umum.
- Perubahan ini bertujuan untuk meningkatkan fleksibilitas dan mengakomodasi kebutuhan pemrosesan data secara spesifik.
- Menambahkan parameter `$periods` untuk mendukung proses dinamis berdasarkan folder periode dalam SFTP.
- Memperkenalkan penggunaan `Storage::disk('sftpStatement')` untuk membaca file dari SFTP.
- Menyortir folder periode secara menurun berdasarkan tanggal.
- Memproses tiap entitas data (Customer, Account, Arrangement, Bill Details, dll.) berdasarkan file dalam folder periode.
- Menambah log untuk mencatat jumlah proses yang berhasil, baris error, dan peringatan tentang ketidaksesuaian jumlah kolom.
- Menyisipkan mekanisme untuk mengabaikan folder `_parameter`.
- Mengubah pendekatan dari membaca file lokal menjadi menggunakan file sementara (temp).
- Memperbaiki bug pada metode yang sebelumnya menggunakan jalur file statis.
- Memastikan penanganan file CSV yang lebih fleksibel, termasuk kasus di mana jumlah kolom dalam baris melebihi ekspektasi.
- Menambah error handling untuk mencatat baris-baris bermasalah dan menghindari interupsi proses.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Memperbarui pemisah CSV dari ';' menjadi '~'.
- Menambahkan pengecekan untuk memastikan '_id' tidak sama dengan 'id' sebelum memperbarui atau membuat entri baru.
- Menambahkan job `ProcessTransactionDataJob` untuk memproses file CSV transaksi.
- Membuat model `TempTransaction` untuk menyimpan data transaksi sementara.
- Menambahkan migrasi untuk tabel `temp_transactions` dengan atribut yang diperlukan.