﻿# Manual Execute Guide - Estimate Activity History

Jika environment remote tidak menyediakan command migration, jalankan SQL manual.

## File yang dipakai
1. `files/SQL_ESTIMATE_ACTIVITY_HISTORY_MANUAL_EXEC.sql`
2. (Opsional rollback) `files/SQL_ESTIMATE_ACTIVITY_HISTORY_ROLLBACK.sql`
3. (Verifikasi) `files/SQL_ESTIMATE_ACTIVITY_HISTORY_VERIFY.sql`
4. (Jika sudah telanjur pakai flow lama) `files/SQL_ESTIMATE_ACTIVITY_ALIGN_TO_DOC_STATUS.sql`
5. (Hardening immutability) `files/SQL_ESTIMATE_ACTIVITY_HISTORY_IMMUTABILITY.sql`
6. (Hardening monitoring) `files/SQL_ESTIMATE_ACTIVITY_HISTORY_MONITORING_STEP4.sql`
7. (Hardening index/performance) `files/SQL_ESTIMATE_ACTIVITY_HISTORY_PERFORMANCE_STEP4.sql`
8. (Hardening retention/arsip) `files/SQL_ESTIMATE_ACTIVITY_HISTORY_RETENTION_STEP3.sql`

## Cara eksekusi (phpMyAdmin / Adminer / MySQL CLI)
1. Backup database terlebih dahulu.
2. Pastikan prefix tabel di aplikasi Anda adalah `rise_`.
3. Jalankan isi file `SQL_ESTIMATE_ACTIVITY_HISTORY_MANUAL_EXEC.sql`.
4. Verifikasi hasil query di bagian akhir script:
   - `rise_estimate_activity_master` memiliki 4 kode aktif: `DRAFT/SENT/ACCEPTED/DECLINED`.
   - `rise_estimate_activity_history` dan `rise_estimate_activity_state` awalnya 0 (normal).
5. Script juga otomatis menormalkan index lama `uq_snapshot_hash` jika pernah terpasang.

## Jika prefix tabel Anda bukan `rise_`
1. Ganti semua nama tabel pada script:
   - `rise_estimate_activity_master`
   - `rise_estimate_activity_history`
   - `rise_estimate_activity_state`
2. Simpan lalu eksekusi script yang sudah disesuaikan.

## Rollback (jika perlu)
Jalankan file `SQL_ESTIMATE_ACTIVITY_HISTORY_ROLLBACK.sql`.

## Smoke test setelah eksekusi
1. Buka halaman estimate.
2. Lakukan edit kecil atau ubah status estimate.
3. Cek endpoint timeline/activity history dari estimate terkait (sesuai routing yang sudah dipatch).
4. Pastikan record baru masuk ke `rise_estimate_activity_history` dan state update di `rise_estimate_activity_state`.

## Verifikasi SQL terstruktur
Jalankan `SQL_ESTIMATE_ACTIVITY_HISTORY_VERIFY.sql` dan pastikan seluruh baris status bernilai `PASS`.

## Jika sebelumnya activity masih NEW/WON/LOST
Jalankan `SQL_ESTIMATE_ACTIVITY_ALIGN_TO_DOC_STATUS.sql` sekali untuk normalisasi ke:
`DRAFT/SENT/ACCEPTED/DECLINED`.

## Hardening lanjutan (enterprise)
1. Jalankan `SQL_ESTIMATE_ACTIVITY_HISTORY_IMMUTABILITY.sql` untuk blok update/delete history.
2. Jalankan `SQL_ESTIMATE_ACTIVITY_HISTORY_MONITORING_STEP4.sql` untuk baseline monitoring.
3. Jalankan `SQL_ESTIMATE_ACTIVITY_HISTORY_PERFORMANCE_STEP4.sql` untuk index optimasi.
4. Jalankan `SQL_ESTIMATE_ACTIVITY_HISTORY_RETENTION_STEP3.sql` untuk arsip periodik data lama.
