# Proposal

## Why

Settings masih menampilkan data dummy dan kontrol yang tidak sesuai perilaku aplikasi. Pengguna membutuhkan penyimpanan profil dan password, sedangkan ADMIN membutuhkan pengelolaan akun dan nama fasilitas tanpa mengubah kebijakan notifikasi atau checkout.

## What Changes

- Hubungkan profil akun login dengan API; simpan nama, email, posisi dan perubahan password opsional secara atomik melalui tombol Save Changes yang sudah ada.
- Tambahkan daftar, pembuatan, penyuntingan, penonaktifan dan pengaktifan akun khusus ADMIN. Ganti tindakan hapus dengan nonaktifkan agar histori tetap utuh; lindungi ADMIN terakhir dan akun sendiri dari penonaktifan/penurunan role lewat administrasi.
- Aktifkan pengaturan nama fasilitas khusus ADMIN menggunakan SystemSetting id=1.
- Hapus bagian Notifications dari Settings sesuai persetujuan pengguna. Notifikasi header, halaman Notifications, publisher dan preferensi database tetap seperti sekarang.
- Usulkan penghapusan kontrol auto-approve berbasis prioritas: checkout publik saat ini selalu PENDING, dan Settings tidak boleh mengubah kebijakan tersebut.
- Usulkan penggunaan nama fasilitas pada metadata laporan serta header Excel/cetak PDF agar sesuai keterangan UI yang sudah ada; tidak mengubah perhitungan laporan.
- Gunakan service Settings dan React Query, kontrak bersama, validasi, audit, serta dokumentasi OpenAPI mengikuti arsitektur existing.
- Tidak menambah email, kalibrasi, perhitungan biaya, konfigurasi timezone, reset password oleh ADMIN, pendaftaran publik, atau pencabutan seluruh sesi. Tidak membutuhkan perubahan schema/migration.

## Capabilities

### New Capabilities

- `account-settings`: Profil pribadi, password dan manajemen akun oleh ADMIN dengan perlindungan histori serta akses.
- `facility-settings`: Penyimpanan nama fasilitas dan penggunaannya pada keluaran laporan, dengan Settings yang sesuai cakupan operasional.

### Modified Capabilities

Tidak ada durable specs yang sudah terdaftar. Integrasi mempertahankan kontrak autentikasi dan notifikasi existing; penambahan metadata laporan bersifat additive.

## Impact

- Backend: routes/controller/service/validator Settings, katalog error, audit, OpenAPI, serta metadata report analytics.
- Frontend: services/settings.service.ts, halaman dan komponen Settings, cache akun login, serta header ekspor laporan.
- Shared: DTO Settings dan metadata laporan. Dokumentasi: AUTH.md dan catatan perilaku Settings.
- Database: gunakan User, SystemSetting dan AuditLog existing; NotificationPreference dan field legacy SystemSetting tidak dihapus atau diaktifkan.
- Proposal saja untuk review. Perubahan UI existing (hapus kontrol auto-approve, ganti hapus menjadi nonaktif, pembatasan tab ADMIN, tambahan nama fasilitas di laporan) tercantum eksplisit untuk disetujui sebelum apply.
