# Page Map — Koperasi Bermadani v2.0

Dokumentasi lengkap semua halaman yang dibutuhkan per role, cross-referenced ke PRD & FSD.
Status: ✅ = Page JSX exists | 🔧 = Backend ready, page needed | ❌ = Future phase

---

## 1. Public Pages (No Auth)

| # | Route | Page Component | Deskripsi | Status |
|---|---|---|---|---|
| 1 | `/` | `Landing.jsx` | Landing page — hero, features, CTA login | ✅ Exists |
| 2 | `/login` | `Auth/Login.jsx` | Login form (email/phone/member_number) | ✅ Exists |
| 3 | `/welcome` | `Welcome.jsx` | Laravel default welcome (bisa dihapus) | ✅ Exists |

> **Note:** Sign-up / Register page **tidak ada** by design — pendaftaran anggota dilakukan oleh Staf via Admin Panel (PRD §4.1). Anggota tidak self-register.

---

## 2. Member Portal — Role: ANGGOTA (Authenticated)

Semua member (ANGGOTA, STAF, PENGURUS, dll) bisa akses halaman ini. Middleware: `auth` + `active.member`.

| # | Route | Page Component | Deskripsi | Backend | Page Status |
|---|---|---|---|---|---|
| 1 | `/dashboard` | `Dashboard.jsx` | Ringkasan: saldo simpanan, pinjaman aktif, mutasi terakhir, poin & tier | ✅ Controller | ✅ Exists |
| 2 | `/simpanan` | `Member/Simpanan.jsx` | Detail 3 jenis simpanan (Pokok/Wajib/Sukarela) + histori transaksi | ✅ Controller | ✅ Exists |
| 3 | `/pinjaman` | `Member/Pinjaman.jsx` | Pinjaman aktif + jadwal angsuran + riwayat pembayaran | ✅ Controller | ✅ Exists |
| 4 | `/mutasi` | `Member/Mutasi.jsx` | Riwayat semua transaksi (simpanan + loan payment) with filter | ✅ Controller | ✅ Exists |
| 5 | `/layanan` | `Member/Layanan.jsx` | Daftar layanan koperasi (static info) | ✅ Route | ✅ Exists |
| 6 | `/kantin` | `Member/Kantin.jsx` | Info minimarket / kantin koperasi (placeholder Phase 2 POS) | ✅ Route | ✅ Exists |
| 7 | `/pengaturan` | `Member/Pengaturan.jsx` | Profil anggota, ubah password, preferensi | ✅ Route | ✅ Exists |
| 8 | `/bantuan` | `Member/Bantuan.jsx` | FAQ, kontak pengurus, bantuan | ✅ Route | ✅ Exists |
| 9 | `/ai` | `Member/AI.jsx` | AI assistant / insights (placeholder Phase 5) | ✅ Route | ✅ Exists |

---

## 3. Admin Panel — Role: PENGURUS, STAF

Middleware: `auth` + `role:PENGURUS,STAF` + `log.activity`. Prefix: `/admin/*`

| # | Route | Page Component (Needed) | Deskripsi | Backend | Page Status |
|---|---|---|---|---|---|
| 1 | `/admin/dashboard` | `Admin/Dashboard.jsx` | Overview: total anggota, total simpanan, outstanding pinjaman, kas, SHU berjalan | ✅ Controller | ❌ **NEED** |
| 2 | `/admin/members` | `Admin/Members/Index.jsx` | Daftar anggota + search/filter (status, role, unit_kerja) | ✅ Controller | ❌ **NEED** |
| 3 | `/admin/members/create` | `Admin/Members/Create.jsx` | Form registrasi anggota baru (NIK, nama, alamat, foto, dokumen) | ✅ Controller | ❌ **NEED** |
| 4 | `/admin/members/{id}` | `Admin/Members/Show.jsx` | Detail profil anggota + ringkasan keuangan | ✅ Controller | ❌ **NEED** |
| 5 | `/admin/members/{id}/edit` | `Admin/Members/Edit.jsx` | Edit data anggota, ubah status (AKTIF/NONAKTIF/KELUAR) | ✅ Controller | ❌ **NEED** |
| 6 | `/admin/simpanan` | `Admin/Simpanan/Index.jsx` | Manajemen simpanan: daftar transaksi, total per jenis | ✅ Controller | ❌ **NEED** |
| 7 | `/admin/simpanan/deposit` | `Admin/Simpanan/Deposit.jsx` | Form setoran simpanan (pilih anggota, jenis, jumlah) | ✅ Controller | ❌ **NEED** |
| 8 | `/admin/simpanan/withdraw` | `Admin/Simpanan/Withdraw.jsx` | Form penarikan simpanan sukarela | ✅ Controller | ❌ **NEED** |
| 9 | `/admin/loans` | `Admin/Loans/Index.jsx` | Daftar semua pinjaman + filter status | ✅ Controller | ❌ **NEED** |
| 10 | `/admin/loans/create` | `Admin/Loans/Create.jsx` | Form pengajuan pinjaman baru | ✅ Controller | ❌ **NEED** |
| 11 | `/admin/loans/{id}` | `Admin/Loans/Show.jsx` | Detail pinjaman + jadwal angsuran + riwayat bayar + approve/disburse/payment | ✅ Controller | ❌ **NEED** |

---

## 4. Pengawas Panel — Role: PENGAWAS (READ-ONLY)

PRD §3.2: "Read-only access ke seluruh laporan keuangan, audit trail, data anggota."

| # | Route | Page Component (Needed) | Deskripsi | Phase |
|---|---|---|---|---|
| 1 | `/pengawas/dashboard` | `Pengawas/Dashboard.jsx` | Consolidated audit view — semua laporan keuangan | Phase 3 |
| 2 | `/pengawas/laporan` | `Pengawas/Laporan.jsx` | Neraca, Laba Rugi, Arus Kas (read-only dari GL) | Phase 3 |
| 3 | `/pengawas/audit-trail` | `Pengawas/AuditTrail.jsx` | Activity logs — siapa ubah apa kapan | Phase 3 |
| 4 | `/pengawas/anggota` | `Pengawas/Anggota.jsx` | Ringkasan data anggota (read-only) | Phase 3 |
| 5 | `/pengawas/pinjaman` | `Pengawas/Pinjaman.jsx` | Portfolio pinjaman + NPF ratio | Phase 3 |

---

## 5. Kasir — Role: KASIR

PRD §3.4: "POS operations, shift management, receiving goods."

| # | Route | Page Component (Needed) | Deskripsi | Phase |
|---|---|---|---|---|
| 1 | `/kasir/pos` | `Kasir/POS.jsx` | Point of Sale — barcode scan, cart, payment | Phase 2 |
| 2 | `/kasir/shift` | `Kasir/Shift.jsx` | Buka/tutup shift + rekonsiliasi kas | Phase 2 |
| 3 | `/kasir/receiving` | `Kasir/Receiving.jsx` | Terima barang dari supplier | Phase 2 |
| 4 | `/kasir/riwayat` | `Kasir/Riwayat.jsx` | Riwayat transaksi shift saya | Phase 2 |

---

## 6. Supplier Portal — Guard: `supplier`

PRD §3.7: "Guard authentication terpisah. Mengelola produk konsinyasi."

| # | Route | Page Component (Needed) | Deskripsi | Phase |
|---|---|---|---|---|
| 1 | `/supplier/login` | `Supplier/Login.jsx` | Login supplier (separate auth guard) | Phase 2 |
| 2 | `/supplier/dashboard` | `Supplier/Dashboard.jsx` | Overview penjualan + settlement | Phase 2 |
| 3 | `/supplier/products` | `Supplier/Products.jsx` | Kelola produk konsinyasi | Phase 2 |
| 4 | `/supplier/settlements` | `Supplier/Settlements.jsx` | Riwayat settlement bulanan | Phase 2 |

---

## 7. Laporan & Keuangan — Role: PENGURUS

| # | Route | Page Component (Needed) | Deskripsi | Backend | Phase |
|---|---|---|---|---|---|
| 1 | `/admin/laporan/neraca` | `Admin/Laporan/Neraca.jsx` | Balance Sheet dari GL | ✅ GL Service | Phase 1* |
| 2 | `/admin/laporan/laba-rugi` | `Admin/Laporan/LabaRugi.jsx` | Income Statement dari GL | ✅ GL Service | Phase 1* |
| 3 | `/admin/laporan/trial-balance` | `Admin/Laporan/TrialBalance.jsx` | Trial Balance per periode | ✅ GL Service | Phase 1* |
| 4 | `/admin/laporan/buku-besar` | `Admin/Laporan/BukuBesar.jsx` | Account Ledger detail | ✅ GL Service | Phase 1* |
| 5 | `/admin/laporan/arus-kas` | `Admin/Laporan/ArusKas.jsx` | Cash Flow Statement | ❌ Need service | Phase 3 |
| 6 | `/admin/coa` | `Admin/COA/Index.jsx` | Chart of Accounts management | ✅ Controller | Phase 1* |
| 7 | `/admin/jurnal` | `Admin/Jurnal/Index.jsx` | Daftar jurnal + entri manual | ✅ Controller | Phase 1* |
| 8 | `/admin/fiscal-periods` | `Admin/FiscalPeriod/Index.jsx` | Tutup buku / lock period | ✅ Controller | Phase 1* |

> Items marked Phase 1* have controllers + frontend skeleton ready, but need business logic + UI implementation.

---

## 8. RAT & SHU — Role: PENGURUS

| # | Route | Page Component (Needed) | Deskripsi | Phase |
|---|---|---|---|---|
| 1 | `/admin/rat` | `Admin/RAT/Index.jsx` | RAT sessions list | Phase 3 |
| 2 | `/admin/rat/wizard` | `Admin/RAT/Wizard.jsx` | SHU distribution wizard (4 steps) | Phase 3 |
| 3 | `/admin/rat/book` | `Admin/RAT/BookGenerator.jsx` | RAT Book Generator (8 bab) | Phase 3 |

---

## 9. Settings — Role: PENGURUS

| # | Route | Page Component (Needed) | Deskripsi | Phase |
|---|---|---|---|---|
| 1 | `/admin/settings` | `Admin/Settings/Index.jsx` | Pengaturan koperasi (simwa default, admin fee, branding) | Phase 1* |
| 2 | `/admin/users` | `Admin/Users/Index.jsx` | Manajemen user & role assignment | Phase 1* |

---

## Summary — Page Count per Phase

| Phase | Role | Pages Exist | Pages Needed | Total |
|---|---|---|---|---|
| **Phase 1** | Public/Auth | 3 ✅ | 0 | **3** |
| **Phase 1** | Member (ANGGOTA) | 9 ✅ | 0 | **9** |
| **Phase 1** | Admin (PENGURUS/STAF) | 0 | **11** 🔧 | **11** |
| **Phase 1*** | Laporan/Accounting | 0 | **8** 🔧 | **8** |
| **Phase 1*** | Settings | 0 | **2** 🔧 | **2** |
| **Phase 2** | Kasir | 0 | 4 | 4 |
| **Phase 2** | Supplier | 0 | 4 | 4 |
| **Phase 3** | Pengawas | 0 | 5 | 5 |
| **Phase 3** | RAT/SHU | 0 | 3 | 3 |
| **Total** | | **12** | **37** | **49** |

### Priority untuk Frontend Agent:

1. **Urgent (Phase 1)**: 11 Admin pages — backend controllers sudah ready
2. **Important (Phase 1*)**: 10 Laporan + Settings pages — GL services ready
3. **Later (Phase 2-3)**: 16 pages — POS, Supplier, Pengawas, RAT

---

## Existing Frontend Files

```
resources/js/Pages/
├── Auth/
│   └── Login.jsx              ✅
├── Dashboard.jsx              ✅
├── Landing.jsx                ✅
├── Welcome.jsx                ✅ (can remove)
└── Member/
    ├── AI.jsx                 ✅
    ├── Bantuan.jsx            ✅
    ├── Kantin.jsx             ✅
    ├── Layanan.jsx            ✅
    ├── Mutasi.jsx             ✅
    ├── Pengaturan.jsx         ✅
    ├── Pinjaman.jsx           ✅
    └── Simpanan.jsx           ✅
```

Pages yang perlu dibuat:
```
resources/js/Pages/
├── Admin/
│   ├── Dashboard.jsx          🔧 NEED
│   ├── Members/
│   │   ├── Index.jsx          🔧 NEED
│   │   ├── Create.jsx         🔧 NEED
│   │   ├── Show.jsx           🔧 NEED
│   │   └── Edit.jsx           🔧 NEED
│   ├── Simpanan/
│   │   ├── Index.jsx          🔧 NEED
│   │   ├── Deposit.jsx        🔧 NEED
│   │   └── Withdraw.jsx       🔧 NEED
│   ├── Loans/
│   │   ├── Index.jsx          🔧 NEED
│   │   ├── Create.jsx         🔧 NEED
│   │   └── Show.jsx           🔧 NEED
│   ├── Laporan/
│   │   ├── Neraca.jsx         🔧 NEED
│   │   ├── LabaRugi.jsx       🔧 NEED
│   │   ├── TrialBalance.jsx   🔧 NEED
│   │   └── BukuBesar.jsx      🔧 NEED
│   ├── COA/
│   │   └── Index.jsx          🔧 NEED
│   ├── Jurnal/
│   │   └── Index.jsx          🔧 NEED
│   ├── FiscalPeriod/
│   │   └── Index.jsx          🔧 NEED
│   ├── Settings/
│   │   └── Index.jsx          🔧 NEED
│   └── Users/
│       └── Index.jsx          🔧 NEED
├── Pengawas/                  (Phase 3)
├── Kasir/                     (Phase 2)
└── Supplier/                  (Phase 2)
```
