# Laporan Fitur — USMS (US Marshal Service Management System)

## Informasi Umum

| Item | Detail |
|------|--------|
| Nama Aplikasi | USMS — US Marshal Service Management System |
| Framework | Laravel 10 |
| Authentication | Laravel Breeze + Sanctum |
| Database | MySQL |
| CDN | FiveManage API |
| Notifikasi | Discord Bot API |
| External API | DOJ API, Duty Log API |
| URL | https://usms.satumimpirp.id |

---

## Daftar Fitur Lengkap

### 1. Autentikasi & Manajemen Akun

| Fitur | Keterangan |
|-------|------------|
| Login | Login dengan email & password |
| Register | Registrasi akun baru (status default: pending) |
| Logout | Logout session |
| Role System | Admin, Moderator, Member |
| Rank Hierarchy | Recruit → Deputy → Senior Deputy → Supervisory Deputy → Assistant Chief → Chief Deputy → Marshal |
| Status Akun | Pending, Active, Suspended, Banned |

---

### 2. Dashboard Analytics

| Fitur | Keterangan |
|-------|------------|
| Online Duty Banner | Menampilkan officer yang sedang on-duty secara real-time (dari API external) |
| Statistik Personal | Laporan saya, tersangka saya, senjata, kendaraan, izin pending |
| Statistik Global | Total officer, laporan bulan ini, data tersangka, izin pending |
| Tren Laporan (Chart) | Area chart ApexCharts — jumlah laporan 6 bulan terakhir |
| Aktivitas per Jenis (Chart) | Donut chart — breakdown laporan per jenis aktivitas bulan ini |
| Laporan Terbaru | Tabel 5 laporan terbaru dengan status |
| Top Officer Bulan Ini | Ranking officer berdasarkan bonus dari laporan |
| Admin Quick Links | Shortcut ke halaman admin (hanya admin) |

---

### 3. Incident Reporting (Laporan Insiden)

| Fitur | Keterangan |
|-------|------------|
| Buat Laporan | Form header: judul, jenis aktivitas, incident commander, tanggal |
| Edit Laporan | Edit header + briefing (Quill rich text editor) + upload evidence |
| Detail Laporan | Lihat semua info + officer terlibat + tersangka + charges |
| Tambah Officer | Multi-select officer ke laporan (client-side search) |
| Tambah Tersangka | Cari/buat tersangka baru + pilih penal code (Choices.js) |
| Sub-Report | Kontribusi individual officer per tersangka per laporan |
| Upload Evidence | Multi-file upload ke FiveManage CDN (max 30 file, 5MB each) |
| Preview Evidence | Grid 4 kolom portrait + lightbox modal (navigasi keyboard) |
| Hapus Evidence | Checkbox per gambar untuk menandai hapus |
| Submit ke Discord | Kirim notifikasi embed ke channel Discord saat submit |
| Status | Draft → Submitted |
| Report Templates | Admin bisa buat template briefing default |

---

### 4. Suspect Database (Data Tersangka)

| Fitur | Keterangan |
|-------|------------|
| CRUD Tersangka | Tambah, edit, lihat, hapus data tersangka |
| Data Tersangka | NIK, nama, foto (CDN), telepon, catatan |
| Riwayat Kasus | JSON array cases per tersangka |
| Pencarian | Search tersangka via API (AJAX) |
| Quick Store | Buat tersangka baru langsung dari form laporan |

---

### 5. Prison Management (Integrasi DOJ)

| Fitur | Keterangan |
|-------|------------|
| List Criminal Cases | Ambil data dari DOJ API dengan filter (nama, CID, status) |
| Detail Case | Lihat detail lengkap: plea, bail, hakim, jaksa, pembela, tanggal sidang |
| Tambah Tahanan | Form input + kirim ke DOJ API |
| Close Case | Tutup kasus via DOJ API |
| Upload Foto Tahanan | Upload foto ke FiveManage, link ke suspect lokal |
| Statistik | Total, active, arraignment, trial, sentence, closed |
| Pagination | Client-side pagination 15 item/halaman |

---

### 6. Arrest Warrants (Integrasi DOJ)

| Fitur | Keterangan |
|-------|------------|
| List Arrest Warrants | Ambil data approved dari DOJ API |
| Detail Warrant | Info tersangka, foto, pihak terkait, charges lengkap (imprisonment + fine) |
| Pencarian | Filter: nama tersangka, no. permohonan, CID |
| Statistik | Total warrants, bulan ini, total charges |
| Pagination | Client-side 15 item/halaman |
| Collapsible Cards | Expand/collapse detail di list |

---

### 7. Search Warrants (Integrasi DOJ)

| Fitur | Keterangan |
|-------|------------|
| List Search Warrants | Ambil data approved dari DOJ API |
| Detail Warrant | Info lokasi, penghuni, pihak terkait, charges lengkap |
| Pencarian | Filter: lokasi (premises), penghuni (person), no. permohonan, CID |
| Statistik | Total warrants, bulan ini, total charges |
| Pagination | Client-side 15 item/halaman |

---

### 8. Manajemen Personalia

#### 8a. Senjata (Weapon Registry)

| Fitur | Keterangan |
|-------|------------|
| Member | Lihat & tambah senjata milik sendiri |
| Admin | CRUD semua senjata (global) |
| Data | Nama senjata, nomor seri, pemilik |

#### 8b. Kendaraan (Vehicle Registry)

| Fitur | Keterangan |
|-------|------------|
| Member | Lihat & tambah kendaraan milik sendiri |
| Admin | CRUD semua kendaraan (global) |
| Data | Nama kendaraan, plat nomor, pemilik |

#### 8c. Izin / Leave of Absence (LOA)

| Fitur | Keterangan |
|-------|------------|
| Member | Ajukan izin (tanggal mulai/selesai, alasan IC & OOC) |
| Admin | Approve / Reject izin |
| Notifikasi Discord | Kirim embed ke admin channel saat ada pengajuan baru |
| Status | Pending → Approved / Rejected |

---

### 9. Top Week Leaderboard

| Fitur | Keterangan |
|-------|------------|
| Ranking Duty | Ambil data dari external API (uapi.satumimpirp.id) |
| Podium Top 3 | Tampilan medal: Gold (#1), Silver (#2), Bronze (#3) dengan gradient |
| List Rank 4+ | Card list dengan durasi duty |
| Pilih Minggu | Dropdown pilih week (5 minggu terakhir) |
| Refresh | Force refresh cache (cache 5 menit) |
| Format Durasi | Hari, jam, menit |

---

### 10. Officer Reporting (Admin)

| Fitur | Keterangan |
|-------|------------|
| Rekap per Officer | Total laporan, bonus, rank |
| Filter Periode | Bulan ini / custom |
| Tabel Detail | Nama, badge, rank, jumlah laporan, total bonus |

---

### 11. Broadcast DM (Admin)

| Fitur | Keterangan |
|-------|------------|
| Kirim DM Discord | Broadcast pesan ke banyak officer via Discord DM |
| Log Broadcast | Riwayat broadcast yang sudah dikirim |

---

### 12. User Management (Admin)

| Fitur | Keterangan |
|-------|------------|
| List Users | Semua user dengan role, status, last login |
| CRUD User | Tambah, edit, lihat detail, hapus |
| Ubah Role | Set admin/moderator/member |
| Ubah Status | Active/suspended/banned |
| Ubah Rank | Set rank hierarchy |

---

### 13. Profil Member

| Fitur | Keterangan |
|-------|------------|
| Lihat Profil | Nama, badge, rank, email, telepon, status |
| Edit Profil | Update nama, telepon, foto profil (CDN), signature (CDN) |
| Ganti Password | Form ubah password |

---

### 14. Public Pages (Landing)

| Fitur | Keterangan |
|-------|------------|
| Home | Landing page USMS |
| Who We Are | Halaman about |
| Services | Judicial Security, Fugitive Apprehension, Witness Security |

---

## Integrasi External

| Service | Endpoint | Fungsi |
|---------|----------|--------|
| DOJ API | `https://doj.satumimpirp.id/api` | Criminal cases, arrest warrants, search warrants, charges |
| Duty Log API | `https://uapi.satumimpirp.id/api` | Top week duty, online duty status |
| Discord Bot | `discord.com/api/v10` | Notifikasi report, LOA, broadcast DM |
| FiveManage CDN | `api.fivemanage.com` | Upload gambar (evidence, profil, signature, foto tahanan) |

---

## Tech Stack

| Layer | Teknologi |
|-------|-----------|
| Backend | Laravel 10 (PHP 8.1+) |
| Frontend | Blade + Tailwind CSS (Attex Template) |
| Icons | Remix Icon |
| Charts | ApexCharts |
| Rich Editor | Quill.js |
| Select | Choices.js |
| Auth | Laravel Breeze + Sanctum |
| Database | MySQL |
| CDN | FiveManage |
| Notifikasi | Discord Bot API |

---

## Akses Halaman

### Member (semua yang login)
- `/member/dashboard` — Dashboard
- `/member/profile` — Profil
- `/member/reports` — Laporan insiden (CRUD)
- `/member/prison` — Prison management
- `/member/arrest-warrants` — Arrest warrants
- `/member/search-warrants` — Search warrants
- `/member/suspects` — Database tersangka
- `/member/absences` — Izin/LOA
- `/member/weapons` — Senjata saya
- `/member/vehicles` — Kendaraan saya
- `/member/top-week` — Top week leaderboard

### Admin Only
- `/admin/users` — Manajemen user
- `/admin/activities` — Manajemen aktivitas
- `/admin/report-templates` — Template laporan
- `/admin/absences` — Approval izin
- `/admin/weapons` — Senjata (global)
- `/admin/vehicles` — Kendaraan (global)
- `/admin/broadcast` — Broadcast DM
- `/admin/reporting` — Officer reporting

### Public
- `/` — Home
- `/who-we-are` — About
- `/services/*` — Service pages
- `/login` — Login
- `/register` — Register
