- Menambahkan indeks baru pada table `stmt_entry`:
- Kombinasi indeks untuk kolom `account_number` dan `booking_date`.
- Indeks untuk kolom `date_time`.
- Indeks untuk kolom `trans_reference`.
- Memperbesar ukuran chunk processing di `ExportStatementJob` dari 500 menjadi 1000 untuk mengoptimalkan performa proses ekspor data dan mengurangi overhead.
Perubahan ini bertujuan untuk meningkatkan efisiensi query pada table `stmt_entry` dan mengurangi waktu proses pada job ekspor pernyataan.
- Perbaiki penggunaan `sequence_no` dalam proses ekspor data dengan menambahkan pelacakan global sequence (`globalSequence`) di seluruh chunk, sehingga memastikan urutan yang konsisten dan tepat.
- Gantikan penggunaan indeks lokal chunk dengan `globalSequence` di setiap entri dalam data proses.
- Tambahkan komentar untuk menjelaskan fungsi tambahan terkait pelacakan sequence global.
- Koreksi format narasi pada nilai `'FT.OUT'` yang sebelumnya salah menggunakan `'FT.IN'`.
- Tambahkan pemeriksaan dan pembaruan pada logika penyimpanan data untuk meningkatkan kejelasan dan efisiensi.
- Menambahkan penggunaan chunking dalam pemrosesan data `StmtEntry` untuk mengurangi konsumsi memori
- Menghapus data yang telah diproses pada tabel `processed_statements` sebelum memproses ulang data baru
- Menambahkan metode `processStatementData` untuk memproses data transaksi dengan pengelolaan hemisan-memori
- Mengganti mekanisme ekspor CSV agar sesuai dengan data yang sudah diproses; menggunakan chunk pada pembacaan dan penulisan data agar lebih efisien
- Memperkenalkan tabel baru `processed_statements` untuk menyimpan hasil pemrosesan sebagai cache sementara
- Menambahkan log untuk setiap tahap pemrosesan untuk mempermudah debugging dan pelacakan proses
- Menambahkan file model `ProcessedStatement` untuk interaksi dengan tabel `processed_statements`
- Menambahkan file migrasi untuk membuat tabel `processed_statements` di database
Enhancement ini meningkatkan performa aplikasi, terutama saat menangani data besar, dengan mengurangi penggunaan memori dan meningkatkan efisiensi proses ekspor.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
Penambahan fitur untuk mendukung proses eksport dan download statement secara dinamis. Fitur ini mencakup:
- Penambahan `ExportStatementJob` untuk menjadwalkan proses eksport statement dalam bentuk file CSV ke dalam queue.
- Penambahan endpoint untuk:
1. `index`: Menjadwalkan pekerjaan eksport ke dalam queue.
2. `generateAndDownload`: Proses pembuatan statement secara langsung dan mengunduh hasilnya.
3. `downloadStatement`: Mendukung pengunduhan file statement yang telah dibuat sebelumnya.
4. `queueExport`: Menambahkan job eksport ke queue dengan ID job yang dirilis.
5. `checkExportStatus`: Memastikan status job apakah sedang berjalan, selesai, atau tidak ditemukan.
- Refactoring fitur narrative generator untuk mendukung format dinamis berdasarkan konfigurasi database dengan parsing format.
- Refactoring data transformation untuk memastikan urutan dan perhitungan running balance sebelum dieksport.
- Penggunaan storage lokal untuk menyimpan hasil file CSV, dan implementasi header respons yang benar untuk file unduhan.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>