- **Perbaikan Struktural:**
- Melakukan perapihan kode dengan konsistensi indentasi dan penyusunan namespace seluruh file.
- Menambahkan dan mengimpor namespace baru seperti `Throwable`, `InvalidArgumentException`, dan `Exception`.
- **Peningkatan Readability:**
- Menambahkan format dan penyesuaian pada komentar, khususnya penjelasan method dan atribut.
- Menggunakan alignment untuk parameter pada log dan constructor untuk meningkatkan keterbacaan.
- **Pengelolaan Job:**
- Menambahkan logging detail saat memulai, menjalankan, hingga menyelesaikan job.
- Menambahkan penanganan proses tiap akun dalam batch, termasuk logging sukses/gagal dan pembaruan status log.
- **Penanganan Error:**
- Menambahkan rollback database jika terjadi exception pada saat proses pengiriman email.
- Melakukan logging error dengan detail tambahan termasuk pesan dan trace.
- **Penambahan Utility:**
- Menambahkan metode reusable seperti `updateLogStatus` untuk update status log dengan parameter dinamis.
- Menambahkan validasi seperti pengecekan eksistensi file PDF dan email terkait sebelum pengiriman.
- **Peningkatan Proses Batch:**
- Menambahkan pengelolaan batch berbasis properti `batchId` untuk tracking.
- Memperbaiki handle retries dan status akhir batch secara komprehensif (completed, failed).
- Menambahkan logging agregat untuk jumlah akun yang diproses dan tingkat keberhasilan.
- **Peningkatan Validasi Email:**
- Menambahkan skenario untuk pengambilan email dari `stmt_email` atau fallback ke data customer jika tersedia.
- Menambahkan peringatan saat akun tertentu tidak memiliki email yang valid.
- **Pemeliharaan File PDF:**
- Mengecek keberadaan file PDF terkait sebelum proses pengiriman.
- Menampilkan log error jika file tidak ditemukan.
- **Peningkatan Retry dan Logging Gagal:**
- Implementasi metode `failed()` untuk logging pada job yang gagal permanen.
- Menangani detail error dan rollback pada level tiap akun dan batch.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>