# Roadmap migrasi (eksekusi)

## Fase 1 — API inti (`Json.php`) ✅ (kerangka + logika port)

- [x] Audit method & tabel
- [x] `MobileJsonService` + `MobileJsonController`
- [x] Rute `api/mobile` + alias `json`
- [x] Upload path di `public/assets/uploads/...`
- [ ] Uji parity di staging dengan DB salinan
- [ ] Sinkronisasi file upload lama dari server CI3 (jika perlu)

## Fase 2 — Auth & hardening

- [ ] Rate limit `login`
- [ ] Rencana upgrade password (dual column / flag migrasi)
- [ ] CORS origin spesifik per lingkungan
- [ ] Logging audit presensi

## Fase 3 — Admin rebuild

- [ ] Pilih stack auth admin (Shield / custom)
- [ ] Port modul `admin` per domain: Pegawai, Presensi, Laporan, …
- [ ] Ganti PHPExcel → PhpSpreadsheet
- [ ] Hapus / kurangi ketergantungan Grocery CRud bertahap

## Fase 4 — Cleanup & optimasi

- [ ] Pecah `MobileJsonService` menjadi service + repository/model
- [ ] Indeks DB untuk query ramai (`presensi`, `cuti`, …)
- [ ] Matikan CI3 endpoint per endpoint setelah cutover
- [ ] Build TailAdmin CSS produksi (ganti CDN jika diperlukan)

## Dependensi

- DB schema sama antara CI3 dan CI4 selama transisi.
- `app.baseURL` dan `.env` database harus benar di CI4.

## Risiko & blocker

Lihat [risks.md](risks.md).
