Update besar apk finance
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# Runbook Upgrade Database Production
|
||||
|
||||
Jangan arahkan `.env` development ke Production. Lakukan upgrade pada maintenance window dan gunakan salinan staging terbaru terlebih dahulu.
|
||||
|
||||
## Sebelum perubahan
|
||||
|
||||
1. Bekukan transaksi dan buat full backup database serta uji restore.
|
||||
2. Catat versi migration Production dan bandingkan struktur, engine, charset, trigger, role, serta foreign key dengan staging.
|
||||
3. Jalankan pemeriksaan berikut:
|
||||
|
||||
```sql
|
||||
SELECT no_ref, COUNT(*) total, GROUP_CONCAT(id ORDER BY id) journal_ids
|
||||
FROM journals GROUP BY no_ref HAVING COUNT(*) > 1;
|
||||
|
||||
SELECT r.id, r.nama_role, COUNT(u.id) users
|
||||
FROM roles r LEFT JOIN users u ON u.role_id=r.id GROUP BY r.id, r.nama_role;
|
||||
```
|
||||
|
||||
4. Rekonsiliasi setiap referensi duplikat terhadap dokumen sumber, invoice, stok, aset, dan bukti bank. Tentukan nomor koreksi bersama bagian Finance. Jangan menjalankan `accountingrepair duplicate_refs` di Production.
|
||||
5. Pastikan role bernama `Admin` tersedia. Tentukan approver Production; seed default menggunakan role tersebut dan wajib ditinjau.
|
||||
|
||||
## Urutan deployment
|
||||
|
||||
1. Deploy kode dan backup kedua sesaat sebelum migration.
|
||||
2. Jalankan migration 001–008.
|
||||
3. Konfigurasi `approval_workflows` dan `approval_workflow_steps` sesuai matriks otorisasi perusahaan. Uji dengan akun non-pembuat.
|
||||
4. Koreksi duplikat Production menggunakan change script yang telah disetujui dan menyimpan mapping nomor lama/baru.
|
||||
5. Jalankan migration 009 untuk unique constraint `journals.no_ref`.
|
||||
6. Jalankan `php index.php accountingcheck`, smoke test submit–approve–post–reverse, laporan, dan tutup/buka periode.
|
||||
|
||||
## Struktur baru yang wajib dipertahankan
|
||||
|
||||
`approval_workflows`, `approval_workflow_steps`, `approval_requests`, `approval_actions`, dan `immutable_audit_logs`; trigger `trg_immutable_audit_no_update`, `trg_immutable_audit_no_delete`, serta unique index `uq_journals_no_ref`.
|
||||
|
||||
Audit log adalah append-only. Koreksi dilakukan dengan event audit baru, bukan UPDATE/DELETE. Akses langsung database ke tabel audit harus dibatasi untuk user aplikasi; DBA darurat harus masuk prosedur change management.
|
||||
|
||||
Untuk perubahan invoice/piutang Tahap 5, lanjutkan dengan `PRODUCTION-DB-TAHAP-5.md` setelah seluruh langkah Tahap 4 selesai.
|
||||
|
||||
## Rollback
|
||||
|
||||
Rollback schema setelah transaksi baru masuk berisiko menghilangkan kontrol dan tidak disarankan. Jika smoke test gagal, hentikan transaksi, rollback kode, pertahankan tabel kontrol untuk investigasi, atau restore backup penuh setelah persetujuan Finance/DBA.
|
||||
Reference in New Issue
Block a user