# PRD: Koperasi Bermadani v2.0 — Rebuild

## 1. Ringkasan Eksekutif

Proyek ini adalah pembangunan ulang (rebuild) dari sistem manajemen Koperasi Bermadani (saat ini menggunakan Laravel 11, Inertia.js, React, Tailwind CSS v4, dan shadcn/ui). Rebuild ini bertujuan untuk memecahkan *architectural debt* yang ada pada versi sebelumnya dan meletakkan fondasi yang kokoh untuk pengembangan masa depan.

**Tujuan Utama Rebuild:**
- **Migrasi ke Double-Entry Bookkeeping:** Beralih dari pencatatan *single-entry* ke *double-entry* yang memenuhi standar akuntansi.
- **General Ledger sebagai Single Source of Truth:** Memastikan seluruh transaksi finansial bermuara pada General Ledger untuk menghindari anomali data.
- **Memperbaiki Architectural Debt:** Menghapus denormalisasi saldo (seperti yang saat ini ada pada tabel Member), pelaporan yang disintesis secara on-the-fly, dan sistem perhitungan Sisa Hasil Usaha (SHU) yang rapuh.
- **Fondasi Multi-tenant SaaS:** Menyiapkan arsitektur database dan aplikasi untuk berevolusi menjadi platform "Manasuka Koperasi".
- **Mempertahankan Fitur Eksisting:** Menjaga ketersediaan seluruh fitur operasional yang sudah digunakan oleh KSPPS Berkah Madani UMBandung, dengan peningkatan keandalan dan konsistensi data.

> [!IMPORTANT]
> Transisi ke General Ledger merupakan prioritas mutlak dalam rebuild ini. Semua modul operasional (Simpanan, Pinjaman, POS) harus melakukan *auto-posting* ke jurnal secara *real-time*.

## 2. Visi Produk

Sesuai visi Product Manager, sistem ini diarahkan menjadi **"Digital Operating System for Cooperatives"** — Platform digital yang membantu koperasi mengelola anggota, keuangan, usaha, pelayanan, dan tata kelola secara terintegrasi dan akuntabel.

**Product Hierarchy (MANASUKA KOPERASI):**
- Member Management
- Savings (Simpanan)
- Loans (Pinjaman/Pembiayaan)
- Accounting & General Ledger
- Cash Management
- Business/POS (Minimarket)
- Inventory & Consignment
- Member App (Portal)
- Supplier Portal
- RAT & SHU
- Dashboard & Reporting
- Cooperative Settings

```mermaid
graph TD
    A[Manasuka Koperasi OS] --> B(Core Modules)
    A --> C(Business Modules)
    A --> D(Financial & Accounting)
    A --> E(Portals)
    
    B --> B1[Member Management]
    B --> B2[Cooperative Settings]
    
    C --> C1[Savings / Simpanan]
    C --> C2[Loans / Pembiayaan]
    C --> C3[Minimarket / POS]
    C --> C4[Consignment & Inventory]
    
    D --> D1[General Ledger & CoA]
    D --> D2[Cash Management]
    D --> D3[RAT & SHU]
    D --> D4[Dashboard & Reporting]
    
    E --> E1[Member App]
    E --> E2[Supplier Portal]
```

## 3. User Personas & Roles

Sistem memiliki otorisasi berbasis peran (Role-Based Access Control) yang ketat.

### 3.1 Pengurus (Super Admin / Pengurus Koperasi)
- **Goals:** Pengawasan strategis, pelaporan keuangan komprehensif, manajemen Rapat Anggota Tahunan (RAT) dan Sisa Hasil Usaha (SHU).
- **Pain Points:** Kesulitan melacak anomali keuangan, proses RAT yang manual dan memakan waktu.
- **Access:** Akses penuh ke seluruh modul sistem, tutup buku, RAT, pengaturan, manajemen pengguna (Biasanya Ketua, Sekretaris, atau Bendahara koperasi).
- **Middleware:** `role:PENGURUS`

### 3.2 Pengawas (Supervisory Board)
- **Goals:** Melakukan audit keuangan dan operasional sesuai dengan mandat UU Perkoperasian.
- **Pain Points:** Kesulitan mendapatkan data yang valid dan real-time dari pengurus untuk keperluan audit berkala.
- **Access:** Read-only access ke seluruh laporan keuangan, laporan operasional, *audit trail*, dan data anggota. Tidak dapat memodifikasi data apa pun.
- **Middleware:** `role:PENGAWAS`

### 3.3 Staf (Admin / Staf Operasional Koperasi)
- **Goals:** Menjalankan operasional harian koperasi seperti registrasi anggota, pengelolaan simpanan, dan pemrosesan pinjaman.
- **Pain Points:** Proses rekonsiliasi data yang rumit antara simpanan dan pinjaman anggota.
- **Access:** Manajemen Anggota, Simpanan, Pinjaman. Tidak bisa menutup buku fiskal, mengakses laporan agregat tertentu, atau manajemen user tingkat sistem.
- **Middleware:** `role:STAF`

### 3.4 Kasir (Cashier)
- **Goals:** Melakukan transaksi Point of Sale (POS) dengan cepat, mengelola shift, dan menerima barang dari supplier.
- **Pain Points:** Sistem kasir offline, perhitungan shift kasir tidak akurat.
- **Access:** POS operations, shift management, receiving goods. **Wajib** memiliki status *shift OPEN* untuk menggunakan POS.
- **Middleware:** `role:KASIR` + `cashier.shift`

### 3.5 Anggota (Cooperative Member)
- **Goals:** Melihat profil, melacak saldo simpanan, tagihan pinjaman, dan sejarah transaksi POS.
- **Access:** Read-only untuk profil dan laporan pribadi. Dapat mentransfer simpanan sukarela. Berubah menjadi *read-only* penuh (tanpa kemampuan transfer, dll) jika status *NONAKTIF* atau *KELUAR*.
- **Portal:** Akses via `/member/*`

### 3.6 Member Retail (Loyalty Customer)
- **Goals:** Mendapatkan keuntungan belanja, melihat poin loyalitas, riwayat transaksi.
- **Access:** Sistem Tier: Bronze → Silver → Gold → Platinum. Akses portal pelanggan.
- **Portal:** Akses via `/membership/*`

### 3.7 Supplier / Mitra UMKM
- **Goals:** Menjual produk titipan (konsinyasi), memantau penjualan, meminta restock.
- **Access:** Menggunakan *guard authentication* terpisah. Mengelola produk konsinyasi dan melihat settlement harian.
- **Portal:** Akses via `/supplier/*`

## 4. Daftar Fitur & User Stories

### 4.1 Manajemen Anggota (Member Management)
**Fitur Utama:**
- Registrasi keanggotaan (NIK, Nama, Alamat, No HP, Pekerjaan, Foto, Dokumen KTP).
- Auto-generate Member ID dengan format `YYNNNNNN` (8 digit).
- Manajemen status anggota yang jelas:
  - `AKTIF` — Anggota aktif, hak penuh.
  - `NONAKTIF` — Tidak aktif sementara (belum bayar iuran 3+ bulan, dll). Read-only portal. Dapat direaktivasi.
  - `KELUAR` — Mengundurkan diri atau diberhentikan. Settlement processed. Permanent.
  - `MENINGGAL` — Anggota meninggal dunia. Settlement ke ahli waris.
- Settlement process untuk anggota yang keluar atau meninggal: Net Refund = (Gross Simpanan - Pemotongan Pinjaman/Tunggakan).
- Pembuatan PDF *Settlement Certificate*.
- Manajemen keanggotaan ritel dengan sistem poin.

**User Stories:**
- Sebagai Staf, saya ingin mendaftarkan anggota baru dengan data lengkap, sehingga anggota tercatat resmi di koperasi.
- Sebagai Staf, saya ingin memproses pengunduran diri anggota (atau yang meninggal dunia) dan menghitung pengembalian simpanan otomatis ke anggota atau ahli waris, sehingga proses settlement transparan dan akurat.
- Sebagai Anggota, saya ingin melihat profil dan kartu anggota digital saya di portal, sehingga saya bisa membuktikan keanggotaan koperasi dengan mudah.
- Sebagai Staf, saya ingin sistem secara otomatis mengunci perubahan data krusial untuk anggota yang berstatus `KELUAR` atau `MENINGGAL`, sehingga integritas data masa lalu terjaga.

### 4.2 Simpanan (Savings)
**Fitur Utama:**
- 3 jenis simpanan inti: 
  - **Simpanan Pokok:** Rp200.000, dapat dicicil 4x @Rp50.000.
  - **Simpanan Wajib:** Default Rp50.000/bulan (configurable per koperasi).
  - **Simpanan Sukarela:** Bebas (fleksibel).
- Transaksi simpanan: `SETOR`, `TARIK`, `TRANSFER` (antar anggota).
- Penagihan (billing) bulanan dan approval autodebet untuk Simpanan Wajib.
- Simpanan Sukarela dapat digunakan sebagai metode pembayaran pada POS (Minimarket).
- **Perbaikan Krusial:** Saldo tidak lagi disintesis / denormalisasi di tabel Member, melainkan berasal dari General Ledger.
- Tools Audit Simwa untuk rekonsiliasi.

**User Stories:**
- Sebagai Staf, saya ingin mencatat setoran Simpanan Wajib setiap bulan, sehingga saldo anggota terbarui dan masuk ke General Ledger.
- Sebagai Anggota, saya ingin menggunakan saldo Simpanan Sukarela untuk membayar belanjaan di Minimarket, sehingga saya tidak perlu membawa uang tunai.
- Sebagai Pengurus, saya ingin sistem membatasi penarikan Simpanan Pokok dan Simpanan Wajib selama anggota masih aktif, sehingga permodalan koperasi aman sesuai AD/ART.

### 4.3 Pinjaman / Pembiayaan (Loans)
**Fitur Utama:**
- 2 sumber dana: `BERMADANI` (internal) dan `BMT_ITQAN` (mitra eksternal).
- Perhitungan flat margin: `Interest Amount = Base Amount × (Interest Rate / 100)`.
- Cicilan per bulan: `(Base Amount + Interest Amount) / Tenor`. Tambahan *simwa fee* berlaku untuk BMT_ITQAN.
- Siklus pembiayaan: `PENDING` → `ACTIVE` (approved) → pembayaran angsuran → `COMPLETED` / `OVERDUE`.
- Biaya administrasi (Admin fee): Rp25.000.
- Potongan simwa (BMT_ITQAN): Rp30.000.
- Cadangan kerugian 5% untuk pinjaman berstatus `OVERDUE`.
- Tools import data pinjaman *legacy* & Audit pinjaman.

**User Stories:**
- Sebagai Staf, saya ingin menyetujui aplikasi pinjaman dan memotong biaya admin sebesar Rp25.000 secara otomatis, sehingga dana cair dengan nilai yang benar.
- Sebagai Anggota, saya ingin melihat jadwal angsuran pinjaman saya di portal, sehingga saya tidak telat membayar cicilan.
- Sebagai Pengurus, saya ingin melihat laporan *Non-Performing Financing* (NPF) dan otomatis mencadangkan kerugian 5% untuk pinjaman *Overdue*, sehingga profil risiko pinjaman tercermin di akuntansi.

### 4.4 Minimarket / POS
**Fitur Utama:**
- Point of Sale dengan dukungan *barcode scanning*.
- Offline sync capability via teknologi PWA.
- Manajemen Shift Kasir: buka/tutup shift dengan rekonsiliasi uang kas (cash reconciliation).
- Katalog produk, kategori, pelacakan mutasi stok, dan opname stok.
- Poin keanggotaan: 1 poin = Rp1.000 transaksi.
- Tier loyalty: `BRONZE` (0-199), `SILVER` (200-749), `GOLD` (750-1999), `PLATINUM` (2000+).
- Metode pembayaran: Tunai, Simpanan Sukarela.
- Struk transaksi (thermal print format).

**User Stories:**
- Sebagai Kasir, saya harus membuka shift terlebih dahulu sebelum bertransaksi, sehingga arus kas masuk/keluar di laci saya tercatat akurat.
- Sebagai Kasir, saya ingin memindai barcode barang dengan cepat saat kondisi offline, sehingga antrean pelanggan tidak menumpuk saat internet mati.
- Sebagai Member Retail, saya ingin melihat poin loyalitas saya naik ke tier Gold, sehingga saya mendapatkan diskon khusus.

### 4.5 Konsinyasi (Consignment)
**Fitur Utama:**
- Registrasi supplier mitra UMKM dengan verifikasi pembayaran.
- Biaya registrasi: Rp25.000; Biaya *maintenance* bulanan: Rp25.000.
- Pengajuan barang titipan → *Approval* admin → *Stocking* ke minimarket.
- Settlement: `Payable = Sold Qty × Supplier Price`, `Coop Margin = (Sell Price - Supplier Price) × Sold Qty`.
- Persentase bagi hasil konsinyasi default 90% ke supplier (configurable).
- Penerimaan barang fisik (*Goods receiving*) diverifikasi oleh Kasir.

**User Stories:**
- Sebagai Supplier UMKM, saya ingin memantau stok barang titipan saya secara real-time, sehingga saya tahu kapan harus melakukan restock.
- Sebagai Staf, saya ingin sistem otomatis memisahkan uang hasil penjualan produk konsinyasi ke akun terutang (payable), sehingga dana supplier tidak tercampur dengan kas operasional.

### 4.6 Keuangan & Akuntansi (Finance & Accounting) - *CORE REBUILD*
**Fitur Utama:**
- **NEW:** Chart of Accounts (CoA) standar akuntansi koperasi.
- **NEW:** General Ledger dengan sistem *double-entry bookkeeping*.
- **NEW:** Fiscal period management (Tutup Buku Bulanan/Tahunan).
- **NEW:** Auto-posting *Journal Entries* langsung dari transaksi operasional (Simpanan, Pinjaman, POS).
- Pencatatan transaksi pendapatan/pengeluaran manual.
- Manajemen Aset Tetap dengan depresiasi metode *straight-line*.
- Bank reconciliation.

**User Stories:**
- Sebagai Akuntan, saya ingin semua transaksi operasional otomatis membentuk jurnal di General Ledger, sehingga saya tidak perlu merekap ulang setiap akhir bulan.
- Sebagai Pengurus, saya ingin menutup buku periode bulan berjalan, sehingga data transaksi bulan tersebut terkunci dan tidak bisa dimanipulasi (*freeze*).
- Sebagai Akuntan, saya ingin mencatat penyusutan aset tetap secara otomatis setiap bulan dengan metode *straight-line*, sehingga nilai aset valid di neraca.

### 4.7 RAT & SHU (Annual Member Meeting)
**Fitur Utama:**
- *Wizard* distribusi SHU (4 langkah): Setup → Eligibility → Allocation → Disbursement.
- Persentase alokasi SHU:
  - Jasa Simpanan (Anggota): 30%
  - Jasa Usaha (Anggota): 25%
  - Cadangan Koperasi: 25%
  - Pengurus: 10%
  - Dana Sosial: 10%
- Perhitungan Proporsional Anggota:
  - Jasa Simpanan = proporsional berdasarkan total (Simpanan Pokok + Simpanan Wajib).
  - Jasa Usaha = proporsional berdasarkan total belanja (POS Transaction Volume).
- Syarat penerima: Status `AKTIF`, bergabung sebelum tanggal *cutoff*, *manual overrides* (include/exclude).
- Dashboard visual RAT & Infografis PDF (4-page).
- **CRITICAL FIX:** SHU *WAJIB* dihitung berdasarkan data periode fiskal yang sudah *locked*, bukan data *live*.
- **RAT Book Generator (Killer Feature):** Auto-generate dokumen lengkap "Buku RAT" ke dalam format PDF untuk disajikan secara langsung saat RAT.
  - BAB I — Profil Koperasi (diambil dari data `cooperative_settings`)
  - BAB II — Pertanggungjawaban Pengurus (ringkasan aktivitas operasional, auto-generated)
  - BAB III — Laporan Keuangan (ditarik dari General Ledger: Neraca, Laba Rugi, Arus Kas)
  - BAB IV — Perkembangan Anggota (grafik pertumbuhan anggota, statistik bergabung/keluar)
  - BAB V — SHU (ditarik dari hasil kalkulasi SHU, rincian distribusi)
  - BAB VI — Rencana Kerja (format template yang dapat diedit oleh Pengurus)
  - BAB VII — Rencana Anggaran Pendapatan & Belanja (RAPB, template editable)
  - BAB VIII — Penutup (template)

**User Stories:**
- Sebagai Pengurus, saya ingin menghitung proporsi SHU Jasa Simpanan anggota berdasarkan periode fiskal tahun lalu, sehingga perhitungan adil dan valid.
- Sebagai Anggota, saya ingin menerima SHU secara otomatis langsung ke saldo Simpanan Sukarela saya saat Rapat Anggota Tahunan disahkan, sehingga saya tidak perlu mengambilnya secara tunai.
- Sebagai Pengurus, saya ingin meng-generate Buku RAT lengkap 8 bab dengan 1 klik, sehingga persiapan RAT tidak memakan waktu berminggu-minggu.
- Sebagai Pengurus, saya ingin mengedit Rencana Kerja dan RAPB di dalam sistem sebelum di-generate ke PDF, sehingga semua data terpusat dan tidak tercecer di file luar.

### 4.8 Laporan & Dashboard (Reporting)
**Fitur Utama:**
- 4 Laporan Keuangan Standar (berasal dari General Ledger): Neraca (Balance Sheet), Laba Rugi (Income Statement / SHU), Perubahan Ekuitas, Arus Kas (Cash Flow).
- CALK (Catatan Atas Laporan Keuangan) Builder.
- **Dashboard Pengurus** — Tampilan eksekutif untuk pengurus koperasi:
  - *Metric Cards:*
    - Total Anggota Aktif
    - Total Simpanan (Pokok + Wajib + Sukarela)
    - Outstanding Pinjaman
    - Total Tunggakan
    - Rasio NPF (*Non-Performing Financing*)
    - Saldo Kas & Bank
    - SHU Tahun Berjalan
  - *Grafik Tren (line/bar charts):*
    - Pertumbuhan anggota (bulanan)
    - Pertumbuhan simpanan (bulanan)
    - Volume pembiayaan baru (bulanan)
    - Tingkat pembayaran angsuran (bulanan)
    - Tren tunggakan (bulanan)
    - Proyeksi SHU (bulanan kumulatif)
  - *Health Indicators:*
    - Kecukupan Modal (*Capital Adequacy*)
    - Kualitas Aset / NPF (*Asset Quality*)
    - Profitabilitas (*Profitability*)
    - Likuiditas (*Liquidity*)
    - Efisiensi Operasional (*Operational Efficiency*)
- **Dashboard Pengawas** — Konsolidasi terpadu *read-only* untuk audit dewan pengawas:
  - Semua laporan keuangan (Neraca, Laba Rugi, Arus Kas).
  - *Audit trail* / activity logs sistem.
  - Ringkasan data (overview) anggota.
  - Kesehatan portofolio pinjaman (rasio NPF).
  - Status rekonsiliasi simpanan.
  - Konsolidasi semua alat audit internal (SimwaAudit, LoanAudit, BankAudit).
- Ekspor PDF & Excel untuk semua laporan.

**User Stories:**
- Sebagai Pengurus, saya ingin mengunduh Neraca dan Laba Rugi dengan 1 klik yang ditarik langsung dari General Ledger, sehingga laporan audit eksternal cepat selesai.
- Sebagai Pengurus, saya ingin melihat rasio kesehatan NPF (*Asset Quality*) di Dashboard, sehingga saya bisa segera mengambil tindakan bila rasio kredit macet mendekati ambang batas bahaya.
- Sebagai Pengawas, saya ingin mengakses Dashboard Pengawas yang mencakup seluruh *audit trail* dan status rekonsiliasi secara terpusat dan read-only, sehingga saya dapat menjalankan fungsi pengawasan tanpa bergantung pada staf.

### 4.9 Pengaturan Koperasi (Settings)
**Fitur Utama:**
- Konfigurasi parameter global (*Tenant specific* di masa depan):
  - `fin_simwa_default`: Rp50.000
  - `fin_loan_admin_fee`: Rp25.000
  - `fin_bmt_simwa_deduction`: Rp30.000
  - `fin_supplier_reg_fee`: Rp25.000
  - `fin_supplier_monthly_fee`: Rp25.000
  - `fin_consignment_share`: 90%
- Branding *White-label* (Nama Koperasi, Logo, Tema warna utama).

### 4.10 Manajemen Pengguna & Keamanan (User Management & Security)
- 5 Roles: `PENGURUS`, `PENGAWAS`, `STAF`, `KASIR`, dan `ANGGOTA` (Ditambah entitas `Supplier` pada guard terpisah).
- Activity Logging (*audit trail*) ketat pada semua aksi kritikal.
- Keamanan otentikasi. Login menggunakan Email, Nomor HP, atau Member ID.
- Pengaturan izin RBAC (Role-Based Access Control) yang granular.

### 4.11 Installer
- *Self-hosted installation wizard* (3 langkah). Pengecekan koneksi database, inisialisasi akun pengurus pertama, & pengisian profil awal koperasi.

## 5. Business Rules Matrix

Tabel berikut merangkum *business rules* dan konstanta yang diimplementasikan di dalam codebase:

| ID | Modul | Aturan Bisnis | Nilai / Formula (Default) | Pemicu (Trigger) |
|---|---|---|---|---|
| BR-01 | Simpanan | Tarif Simpanan Pokok | Rp200.000 (Dapat dicicil 4x @Rp50.000) | Pendaftaran Anggota Baru |
| BR-02 | Simpanan | Tagihan Simpanan Wajib | Rp50.000 / bulan | Tanggal 1 setiap bulan |
| BR-03 | Member | Format Member ID | `YYNNNNNN` (YY=Tahun, NNNNNN=Auto increment) | Approval Anggota Baru |
| BR-04 | Member | Net Refund (Keluar/Meninggal) | `(Simp. Pokok + Wajib + Sukarela) - Tunggakan` | Saat status diubah ke `KELUAR` atau `MENINGGAL` |
| BR-05 | Pinjaman | Margin / Bunga | `Interest = Base Amount × (Interest Rate / 100)` | Kalkulasi Jadwal Angsuran |
| BR-06 | Pinjaman | Cicilan Bulanan | `(Base + Interest) / Tenor` (flat) | Kalkulasi Jadwal Angsuran |
| BR-07 | Pinjaman | Loan Admin Fee | Rp25.000 | Pencairan Pinjaman |
| BR-08 | Pinjaman | BMT Simwa Deduction | Rp30.000 | Pencairan Pinjaman via BMT |
| BR-09 | Pinjaman | Cadangan Kerugian NPF | 5% dari sisa pokok pinjaman | Saat pinjaman berstatus `OVERDUE` |
| BR-10 | POS/Ritel | Loyalty Points | 1 Poin setiap pembelanjaan Rp1.000 | Saat transaksi POS berhasil |
| BR-11 | Supplier | Consignment Share | 90% Penjualan ke Supplier, 10% Koperasi | Saat Settlement Bulanan |
| BR-12 | Supplier | Biaya Registrasi Supplier| Rp25.000 | Approval Supplier Baru |
| BR-13 | Supplier | Biaya Maintenance | Rp25.000 / bulan | Penagihan Bulanan Supplier |
| BR-14 | RAT/SHU | Alokasi Jasa Simpanan | 30% dari Total SHU | Saat Wizard Alokasi RAT |
| BR-15 | RAT/SHU | Alokasi Jasa Usaha | 25% dari Total SHU | Saat Wizard Alokasi RAT |
| BR-16 | RAT/SHU | Cadangan Koperasi | 25% dari Total SHU | Saat Wizard Alokasi RAT |
| BR-17 | RAT/SHU | Alokasi Pengurus | 10% dari Total SHU | Saat Wizard Alokasi RAT |
| BR-18 | RAT/SHU | Dana Sosial | 10% dari Total SHU | Saat Wizard Alokasi RAT |
| BR-19 | Akuntansi | Depresiasi Aset | *Straight-line* | Penutupan Buku Akhir Bulan |
| BR-20 | Simpanan | Simpanan Berjangka | *[Placeholder, to be defined by PM]* | Jatuh Tempo Simpanan Berjangka |
| BR-21 | Pinjaman | Denda Keterlambatan | *[Placeholder, to be defined by PM]* | Pembayaran melewati jatuh tempo |
| BR-22 | Notifikasi | WhatsApp Notification Triggers | Pesan pengingat | Angsuran H-3, Jatuh tempo, & Pengumuman RAT |

> [!WARNING]
> Nilai seperti Rp50.000, persentase SHU (30%, 25%, dll) di atas adalah *default* aplikasi. Sistem harus membaca dari tabel pengaturan agar nilai dapat diubah secara dinamis tanpa mengubah kode.

## 6. Prioritas Rebuild (MVP Scope)

Pengembangan ulang akan dilakukan dalam beberapa fase:

**Phase 1 (Core + GL Foundation)**
- Pembuatan *Chart of Accounts* (CoA), General Ledger, dan sistem *Fiscal Periods*.
- Manajemen Anggota (*As-Is* dengan penyesuaian status).
- Modul Simpanan dengan integrasi *Journal Posting*.
- Modul Pinjaman dengan integrasi *Journal Posting*.
- Laporan Keuangan Dasar (Neraca & Laba Rugi sederhana).

**Phase 2 (Retail + POS & Extra Services)**
- Sistem Kasir/POS dengan *Journal Posting*.
- Konsinyasi Supplier dan Sinkronisasi Jurnal.
- Manajemen Inventori & Opname.
- WhatsApp Notification (reminder angsuran, pengumuman, OTP).
- Simpanan Berjangka (term deposits with maturity dates and profit-sharing rates).

**Phase 3 (Advanced Reporting + RAT & Governance)**
- Laporan Keuangan Penuh dari GL (Arus Kas, Perubahan Modal).
- Fitur RAT dan Perhitungan SHU bersumber dari periode fiskal yang *locked*.
- RAT Book Generator (8-chapter auto-generation).
- Dashboard Pengurus (metric cards + grafik tren lengkap).
- Dashboard Pengawas (consolidated audit view).
- Denda Keterlambatan Angsuran (configurable percentage or flat amount).
- CALK Builder & Executive Dashboard lengkap.
- Mobile App Anggota (PWA-first, kemudian native iOS/Android) — akses simpanan, pinjaman, SHU, riwayat transaksi dari HP.

**Phase 4 (Multi-tenant + SaaS)**
- Isolasi penyewa (*Tenant Isolation*).
- *White-labeling* per tenant.
- Penagihan layanan berlangganan (*Subscription billing*).
- Model bisnis 3-tier:

| Tier | Target | Fitur Termasuk | Estimasi Harga |
|------|--------|----------------|----------------|
| **BASIC** | Koperasi kecil (<500 anggota) | Anggota, Simpanan, Pinjaman, Laporan Dasar | Rp100.000–200.000/bulan |
| **PROFESSIONAL** | Koperasi menengah | + Accounting/GL, Dashboard, Mobile App, RAT Generator, WhatsApp Notification, Multi-user | Rp300.000–750.000/bulan |
| **ENTERPRISE** | Koperasi besar (5.000+ anggota) | + Multi-unit usaha, Multi-cabang, API, Integrasi, Custom workflow, Dedicated support | Rp1.000.000–5.000.000+/bulan |

> [!NOTE]
> Harga belum final — validasi *willingness-to-pay* melalui 10–20 koperasi pertama sebelum ditetapkan.

**Phase 5 (Intelligence & Ecosystem)** — *Visi Jangka Panjang*
- *Cooperative Intelligence Dashboard* (internal Manasuka Digital): analytics anonim lintas tenant untuk segmentasi pasar, benchmarking industri, dan laporan tren koperasi nasional.
- AI-powered insights: prediksi tunggakan, proyeksi SHU, deteksi anomali keuangan.
- Ecosystem integrations: Bank, Supplier Marketplace, Pemerintah (Satu Data Koperasi).

## 7. Non-Functional Requirements

- **Performance:** Waktu *page load* harus di bawah 2 detik. Query pada General Ledger (yang akan membesar secara eksponensial) harus diindeks dengan baik dan dimuat dengan teknik asinkron bila perlu.
- **Security:**
  - Autorisasi RBAC kuat. *Audit trail logs* wajib mencatat siapa mengubah apa, dan kapan, khususnya untuk entri jurnal manual atau *override* sistem.
  - **Two-Factor Authentication (2FA)** wajib untuk role `PENGURUS` dan `PENGAWAS` (akses ke data keuangan sensitif). Implementasi: TOTP (Google Authenticator) atau OTP via WhatsApp.
  - Enkripsi data sensitif (NIK, nomor HP) di database (*at-rest encryption*).
- **Data Integrity:** Operasi transaksional database menggunakan `DB::transaction()`. Jangan ada jurnal yang berat sebelah (Debet != Kredit).
- **Data Privacy & Portability:**
  - *Data Export:* Anggota berhak meng-export seluruh data pribadinya (simpanan, pinjaman, transaksi) dalam format standar (CSV/PDF).
  - *Privacy Policy:* Halaman kebijakan privasi wajib tersedia dan dapat diakses publik di landing page.
  - *Data Retention:* Data anggota berstatus `KELUAR` atau `MENINGGAL` disimpan minimal 5 tahun sesuai regulasi, setelah itu dapat diarsipkan.
- **Backup:** Rotasi pencadangan database secara harian otomatis.
- **Cross-Platform:** Dukungan Chrome, Safari, Firefox modern. UI/UX responsif. Minimarket POS harus dibangun sebagai PWA dengan kapabilitas *offline* minimum (IndexedDB) sinkronisasi antrean.
- **Deployment:** Mendukung instalasi *self-hosted* pada instance lokal maupun *cloud provisioning* di masa depan.

## 8. Acceptance Criteria

Berikut adalah kriteria keberhasilan untuk modul-modul esensial:

**AC-01: Double-Entry Bookkeeping**
- *Given* pengguna melakukan transaksi simpanan/pinjaman/POS,
- *When* transaksi berhasil disimpan,
- *Then* sistem wajib menghasilkan setidaknya 2 entri di tabel Jurnal (Debet dan Kredit) dengan total nilai yang sama persis (Balanced).

**AC-02: Tutup Buku (Fiscal Lock)**
- *Given* pengurus menekan tombol Tutup Buku bulan berjalan,
- *When* proses selesai,
- *Then* sistem mengubah status periode menjadi `LOCKED`.
- *And* tidak ada modifikasi, penambahan, atau pembatalan transaksi yang bisa dilakukan pada periode tersebut tanpa *Supervisor override*.

**AC-03: Perhitungan SHU Otomatis**
- *Given* RAT diselenggarakan,
- *When* perhitungan SHU dieksekusi,
- *Then* persentase Jasa Simpanan (30%) dialokasikan sesuai rumus rasio (`Simpanan Anggota / Total Simpanan Koperasi`),
- *And* nilainya harus menggunakan data *Snapshot* akhir tahun keuangan sebelumnya, bukan data realtime hari ini.

**AC-04: Transparansi Anggota yang Keluar/Meninggal**
- *Given* anggota dengan tunggakan pinjaman mengajukan keluar atau meninggal dunia,
- *When* staf memproses penyelesaian,
- *Then* aplikasi menampilkan PDF *Settlement* yang memuat: Saldo Simpanan (Kredit) dikurangi Sisa Pinjaman (Debet) menghasilkan nilai Netto,
- *And* anggota berubah statusnya menjadi `KELUAR` / `MENINGGAL` dan portal menjadi *read-only*.

**AC-05: Pengawas Read-Only Access**
- *Given* pengguna dengan peran `PENGAWAS` berhasil login,
- *When* mereka menavigasi ke laporan keuangan atau perangkat audit manapun,
- *Then* mereka dapat MELIHAT seluruh data,
- *And* TIDAK ADA tombol edit/delete/create yang terlihat,
- *And* setiap request POST/PUT/DELETE secara langsung (*direct request*) akan mengembalikan status `403 Forbidden`.

**AC-06: RAT Book Generation**
- *Given* seluruh periode fiskal untuk tahun tersebut sudah dalam status `LOCKED`,
- *When* Pengurus menekan tombol "Generate Buku RAT",
- *Then* sistem memproduksi file PDF yang berisi 8 bab lengkap dengan data yang terisi otomatis dari General Ledger dan statistik anggota.
