# HANDOFF STATE: Refactoring Modul `master_project` (Everest)

**Dokumen ini adalah *State Checkpoint* untuk AI Agent di masa depan.**
Tugas ini dijeda pada tanggal 17 Agustus 2026. Agen yang membaca dokumen ini harus melanjutkan *deployment* arsitektur baru menggunakan teknik **Shadow Verification**.

## 1. Konteks & Latar Belakang
Modul `master_project` (`MasterData.php` 28k baris & `FollowUp.php` 12k baris) sedang dalam proses perombakan (*refactoring*) keluar dari status "God Object" menjadi arsitektur "Thin Controller + Domain Engine" (Strangler Fig Pattern) sesuai panduan arsitektur.

## 2. Progres Saat Ini (Selesai Dieksekusi)

Infrastruktur Domain Engine telah berhasil ditanamkan ke dalam `W:\everest_13agus`:

- [x] **Fase 1: Standarisasi & Isolasi Data**
  - Pembuatan `application/config/everest_project_constants.php` (Menghapus *magic strings*).
  - Pembuatan `application/models/DTOs/ProjectDTO.php` (Pengganti *Spaghetti Session*).
- [x] **Fase 2: Ekstraksi Operasi Baca (Read-Only Engine)**
  - Pembuatan `application/models/Coms/ComProjectViewEngine.php`.
  - Telah menggantikan kueri `lookupByPID` di `MasterData.php`.
- [x] **Fase 3: Ekstraksi Validasi & Aturan Bisnis**
  - Pembuatan `application/models/Coms/ComProjectValidationEngine.php`.
  - Telah menggantikan blok *IF-ELSE* raksasa untuk validasi stok locker di `_processSelectBiaya.php`.
- [x] **Fase 4 (Sebagian): Ekstraksi Transaksi Keuangan**
  - Pembuatan `application/models/Coms/ComLockerStockDualWrite.php` dengan fungsi `verify_and_lock_invoice_stock`.
  - Fitur: Mencegah *Double Spending* dengan Row-Locking MySQL (`FOR UPDATE`) dan CodeIgniter Transaction (`trans_start()`).

## 3. Tugas Anda Selanjutnya (Next Agent Action)

Agen berikutnya (1-2 minggu dari sekarang) WAJIB melakukan tugas berikut:

### A. Eksekusi "Shadow Verification"
Jangan menghapus 28.000 baris kode lama di `FollowUp.php`. Tanamkan `ComLockerStockDualWrite` ke dalam kode secara paralel (berjalan di belakang layar).
Bandingkan kalkulasi mesin lama dengan `verify_and_lock_invoice_stock`. Tulis selisihnya ke log server.

### B. Monitoring & Hard Cut-over
Jika log *error/diff* bersih selama 1-2 minggu beroperasi secara paralel, maka lakukan *Hard Cut-over*: Hapus total logika lama di `FollowUp.php` dan `MasterData.php`, sisakan hanya *request routing* dan pemanggilan ke *Domain Engine*.

### C. Pembuatan Engine Kalkulasi SPK (Work Order)
Di dalam `MasterData.php` (sekitar baris 1022-1027), terdapat kebocoran logika bisnis di mana *Controller* melakukan kalkulasi nilai RAB SPK secara langsung (hardcoded math: `$byData->jml * $byData->harga`).
Tugas Anda adalah membedah dan mengeluarkan logika matematis SPK ini ke dalam *Engine* tersendiri (misal: `ComProjectWorkOrderEngine.php`) agar `MasterData.php` terbebas dari tugas hitung-menghitung.

### D. Pemecahan Controller Berdasarkan Peta Domain
`MasterData.php` yang berukuran 28.401 baris telah diaudit dan dipetakan ke dalam 5 Domain Bisnis utama:
1. Work Order, RAB & BOM (Target: `ComProjectWorkOrderEngine.php`)
2. Task & Execution Management (Target: `ComProjectExecutionEngine.php`)
3. Format & Penomoran Dokumen (Target: `ComNumberingEngine.php`)
4. Core Data Manipulation / Mutasi Proyek (Target: `ComProjectMutationEngine.php`)
5. Presentation & UI Routing (Sisa kode akhir yang boleh ada di `MasterData.php`)
Lihat rincian lengkapnya pada dokumen `audit_report_master_project.md` sebelum melakukan ekstraksi lanjutan.

> **ATURAN MUTLAK:** Agen dilarang keras menebak nama tabel atau melakukan *full rewrite* pada file berukuran masif tanpa melalui fase *Shadow Verification* ini. Sesuai *AGENTS.md*, gunakan PHP 5.6 murni (tanpa tipe *hinting* modern).
