# Proposal

## Why

Halaman Notifications dan header masih menggunakan data dummy yang berbeda. Model Notification dan NotificationRecipient sudah tersedia, tetapi belum ada API inbox maupun pembentukan notifikasi dari kejadian bisnis. Pengguna memerlukan riwayat pribadi yang konsisten, dengan hanya tiga notifikasi terbaru pada header.

## What Changes

- Tambahkan API inbox pengguna terautentikasi: daftar, detail, jumlah belum dibaca, tandai dibaca, tandai semua dibaca, hapus pribadi, pulihkan, dan ekspor sesuai filter.
- Tambahkan pembentukan notifikasi checkout menunggu approval, WO urgent, WO terlambat, PM jatuh tempo, dan stok rendah. Kebijakan penerima dan pengulangan di design merupakan rekomendasi untuk persetujuan sebelum implementasi.
- Usulkan field nullable unique `Notification.eventKey` untuk mencegah duplikasi, dengan perubahan models, schema, ERD, dan migration setelah persetujuan desain database.
- Tambahkan `apps/app/src/services/notifications.service.ts` dan integrasi React Query pada halaman Notifications serta header.
- Header menampilkan maksimal tiga notifikasi terbaru pengguna, termasuk yang sudah dibaca dan tidak termasuk yang dihapus. Usulkan badge jumlah seluruh notifikasi belum dibaca dan navigasi tombol Lihat semua ke halaman Notifications.
- Ganti sumber dummy halaman dengan API sambil mempertahankan pencarian, filter, pagination, detail, read, delete/undo, dan CSV. Loading/error/empty state merupakan penambahan UI yang dimintakan persetujuan.
- Keluarkan calibration dari feed dan pembentukan notifikasi. Tidak menghapus enum atau data historis calibration dalam perubahan ini.
- Tidak mencakup email, integrasi Settings/preferences, push/WebSocket, penugasan teknisi, halaman baru, atau tombol approval dari notifikasi.

## Capabilities

### New Capabilities

- `notification-inbox`: Inbox per pengguna dan integrasi consumer halaman/header, termasuk read/delete/restore dan ekspor.
- `notification-generation`: Pembentukan notifikasi bisnis, penentuan penerima, dan deduplikasi.

### Modified Capabilities

Tidak ada spesifikasi utama yang telah diterbitkan untuk dimodifikasi.

## Impact

API mengikuti struktur routes/controllers/services/validators, autentikasi dan response envelope yang sudah tersedia. Integrasi menyentuh transaksi inventory/checkout, pembuatan dan pembaruan WO, serta pemeriksaan terjadwal. Frontend menyentuh halaman Notifications, komponen terkait, header, service baru, dan isolasi cache notifikasi saat sesi berubah. Database hanya diubah setelah persetujuan D1. Rincian perubahan frontend F1–F3 dan kebijakan P1–P3 tercantum pada design untuk review; proposal ini tidak mengizinkan implementasi secara otomatis.
