Update besar apk finance

This commit is contained in:
Wian Drs
2026-09-11 16:03:00 +07:00
parent d42483b350
commit 4ef15c22ae
897 changed files with 98056 additions and 15979 deletions
+61
View File
@@ -0,0 +1,61 @@
# Tahap 16 — Skalabilitas database dan performa
## Implementasi
- Migration `20260902000100` menambahkan indeks query transaksi, database session, dashboard summary, queue, dead-letter, dan metrik database.
- Migration `20260902000200` menyediakan shared application cache.
- Migration `20260902000300` menyediakan arsip activity log.
- Session default menggunakan driver database (`ci_sessions`). Production dapat mengatur `SESSION_DRIVER=database`; Redis dapat dipilih setelah extension dan server Redis tersedia.
- Dashboard summary di-cache 5 menit per company. Chart dapat dikembangkan dengan pola cache yang sama bila volume jurnal sudah besar.
- Endpoint `lookups/search/{customer|item|account|employee|supplier}` memakai pencarian dan pagination maksimal 30 baris.
- Form penerimaan pelanggan telah berhenti memuat seluruh customer dan menggunakan AJAX lookup.
- Queue memiliki claim transaction/row lock, idempotency key, exponential retry, batas percobaan, dan dead-letter.
- Handler tersedia untuk report PDF/Excel/CSV, email/reminder, penyusutan, dan payroll calculation.
- Retention worker memindahkan activity log lama ke `activity_logs_archive` dalam batch, lalu membersihkan cache, session, dan completed job lama.
- DB monitor menyimpan latency koneksi/query, threads, slow query counter, dan ukuran database.
## Perintah operasional
Jalankan dari folder aplikasi melalui Task Scheduler/cron:
```text
php index.php queueworker run reports 20
php index.php queueworker run default 20
php index.php maintenanceworker retention 365 5000
php index.php dbmonitor run
php index.php scalabilitycheck index 20
php index.php stage16check
```
Saran jadwal: queue setiap menit, DB monitor setiap 5 menit, retention setiap malam, scalability check pada CI/staging.
## Baseline development 2 September 2026
- Database: 6.19 MB.
- Journal: 123 header / 388 detail.
- Activity log: 654.
- Latency koneksi: 16.926 ms.
- Latency query health check: 10.053 ms.
- Dashboard summary p95: 11.046 ms.
- Open receivables p95: 22.089 ms.
- General ledger berada jauh di bawah target 2 detik.
- Queue integration: idempotent dan berhasil menghasilkan file background.
Volume development masih kecil. Angka ini baseline fungsi, bukan bukti kapasitas production.
## Audit lanjutan untuk staging
- 29 view memakai DataTables; 13 sudah `serverSide:true`. Tabel master/transaksi yang tumbuh tanpa batas harus dimigrasikan bertahap ke server-side. Tabel referensi kecil boleh tetap client-side dengan hard limit.
- Jalankan load test menggunakan salinan data yang sudah dianonimkan: minimal 100 ribu jurnal, 50 ribu invoice, 25 ribu item/barcode, dan 1 juta stock/activity ledger.
- Uji 25, 50, lalu 100 virtual user untuk dashboard, pencarian, daftar transaksi, posting invoice, pembayaran, dan transfer stok.
- Gunakan akun serta session khusus staging; jangan melakukan load test transaksi pada production.
- Acceptance: daftar p95 <2 detik, dashboard p95 <3 detik, error <1%, tidak ada duplikasi nomor/stok/job.
## Catatan production
- Backup dan jalankan migration sampai `20260902000300`.
- Perubahan file-session ke database-session akan meminta user login kembali saat deploy.
- Jalankan worker hanya satu instance dahulu; tambah worker setelah memastikan locking MariaDB bekerja pada versi production.
- Konfigurasikan SMTP sebelum mengaktifkan job email/reminder.
- Pantau pertumbuhan `app_dead_letters`; setiap dead-letter harus mempunyai tindak lanjut dan mekanisme replay terkontrol.
- Aktifkan slow query log pada database production dan review query di atas ambang 500 ms.