# HotelFix — Catatan Go-Live (pengerasan sebelum publish)

Aplikasi sudah lengkap secara fitur (Fase A–D). Sebelum dibuka ke user
sungguhan lewat jaringan, selesaikan item berikut. Diurutkan prioritas.

## 1. Aktifkan paksa-ganti sandi untuk SEMUA user (saat go-live)
Kebijakan & mekanisme sudah terpasang (kolom `users.must_change_password`,
`PasswordPolicy`, guard BasePage, halaman `change-password.php`). Selama QC
flag dimatikan agar tidak mengganggu. **Saat go-live**, tandai semua wajib-ganti
sekali lagi supaya tiap karyawan menetapkan sandinya sendiri:

```sql
UPDATE users SET must_change_password = 1;
```

(User baru yang dibuat admin sudah otomatis wajib-ganti.)

## 2. HTTPS/TLS — WAJIB
Sekarang HTTP polos (XAMPP). Tanpa TLS, sandi & token tersadap di jaringan.
- Web/API: pasang sertifikat (Let's Encrypt) di web server produksi; paksa
  redirect HTTP→HTTPS.
- Android: setelah backend HTTPS, hapus `usesCleartextTraffic=true` dan
  aktifkan certificate pinning (kode pinning sudah disiapkan, tinggal diisi).

## 3. Hosting produksi
Pindah dari XAMPP laptop ke server/VPS: document root = `backend/public`,
`config/config.php` produksi terpisah (kredensial DB kuat, `token_secret` acak
sudah ada), PHP-FPM + Nginx/Apache, timezone benar.

## 4. Migrasi data v1
Pindahkan data aplikasi lama (`htdocs/hotelfix`) ke skema v2 sesuai §12
(rooms→locations, defects→work_orders type=corrective, pemetaan role,
property_id = properti pertama).

## 5. Backup harian + uji restore (spek §11)
Jadwalkan `mysqldump` harian + uji restore bulanan. Belum ada.

## 6. Generator PM terjadwal
Daftarkan `bin/generate-pm.php --property=<id>` ke Windows Task Scheduler /
cron (mis. tiap 06.00) agar WO preventif terbit otomatis.

## 7. Push notification (FCM)
Saat ini stub. Isi kunci FCM/APNs untuk notifikasi ke HP sungguhan.

## Utang teknis (tidak memblok, tapi rapikan)
- Log book masih numpang tabel `notifications` (type='logbook'). Bila butuh
  lampiran foto / status "dibaca shift berikutnya", buat tabel
  `logbook_entries` sungguhan (migrasi 0008).
- Belum ada test otomatis — pertimbangkan smoke-test skrip minimal untuk alur
  kritis (login, buat WO, tag done, biaya) sebelum tiap rilis.
- Pustaka checklist baru 12 dari 32 (§10) — lengkapi sebelum Fase 2 operasional.

## Sudah aman
- `token_secret` API = nilai acak kuat (bukan placeholder).
- `file.php` (foto WO) sudah mendukung otorisasi token (mobile bisa unduh).
- Isolasi multi-property ditegakkan di lapis Model tiap query.
- Kebijakan sandi konsisten di web + API.
