Manual Pengguna - Bagian 1: Fundamental & Logika Bisnis

Buku Panduan Sistem AO BPRS

Sistem Penilaian Kredit & Monitoring Pembiayaan Berbasis AI (Rule-Based Production)
Versi Dokumen: 1.0 (Produksi) Tanggal Rilis: 2026 Bagian: 1 dari 3

⚠️ Perbaikan Penting: Upgrade ke Logika Produksi

Pada Sesi 5 sebelumnya digunakan "Mock Engine". Untuk kebutuhan Produksi yang nyata, Anda WAJIB mengganti file app/ml/predictor.py dengan kode di bawah ini. Kode ini mengimplementasikan Weighted Scorecard yang deterministik (hasil selalu sama untuk data yang sama), mudah diaudit oleh OJK/Internal Audit, dan mematuhi prinsip Syariah dalam penilaian risiko.

File yang harus diupdate: /www/wwwroot/app-collection/ao/app/ml/predictor.py

from decimal import Decimal
from typing import Dict

class ProductionScoringEngine:
    """
    ENGINE SKOR KREDIT PRODUKSI (Production Ready).
    
    Metodologi: Weighted Scorecard (Tabel Bobot).
    Pendekatan ini bersifat transparan (White Box), memudahkan penjelasan ke nasabah 
    dan audit internal, sesuai standar perbankan.
    """
    
    # Konstanta Bobot (Weights) - Dapat disesuaikan oleh Komite Risiko
    BASE_SCORE = 300
    MAX_SCORE = 850
    
    # Threshold Segmen
    SEGMENT_HIGH_RISK_THRESHOLD = 550
    SEGMENT_MED_RISK_THRESHOLD = 700
    
    def calculate_score(self, monthly_income: float, assets: float, loan_amount: float, tenor_months: int) -> Dict:
        """
        Input: Data finansial nasabah.
        Output: Skor Kredit (300-850), Probabilitas Gagal Bayar (%), dan Segmen.
        """
        
        # --- 1. Perhitungan Angsuran (Flat Rate Syariah - Margin) ---
        # Asumsi Margin Standar untuk perhitungan kapasitas bayar (Contoh: 15% flat per tahun)
        margin_rate = 0.15 
        total_margin = loan_amount * margin_rate
        total_debt = loan_amount + total_margin
        monthly_installment = total_debt / tenor_months
        
        # --- 2. Variabel Penilaian (Assessment Variables) ---
        
        # A. Debt Service Ratio (DSR) = Angsuran / Pendapatan Bersih
        # Standar OJK/Bank Umum: DSR aman di bawah 35-40%
        if monthly_income <= 0:
            dsr_score = -200 # Risiko maksimal jika tidak ada penghasilan
        else:
            dsr = monthly_installment / monthly_income
            if dsr <= 0.30:
                dsr_score = 150      # Sangat Sehat
            elif dsr <= 0.40:
                dsr_score = 100      # Sehat
            elif dsr <= 0.50:
                dsr_score = 0        # Waspada (Netral)
            else:
                dsr_score = -150     # Berisiko (Cicilan membebani)

        # B. Asset Coverage Ratio (ACR) = Total Aset / Plafond Pinjaman
        # Jaminan/Agunan yang kuat menurunkan risiko kerugian (Loss Given Default)
        if loan_amount <= 0:
            acr_score = 0
        else:
            acr = assets / loan_amount
            if acr >= 1.2:
                acr_score = 100      # Aset melampaui pinjaman 20%
            elif acr >= 0.8:
                acr_score = 50       # Aset mendekati pinjaman
            else:
                acr_score = -50      # Aset kurang mencukupi

        # C. Tenor Risk (Jangka Waktu)
        # Semakin lama tenor, semakin tinggi ketidakpastian
        if tenor_months <= 12:
            tenor_score = 50
        elif tenor_months <= 24:
            tenor_score = 20
        elif tenor_months <= 36:
            tenor_score = -20
        else:
            tenor_score = -50

        # --- 3. Agregasi Skor ---
        final_score = self.BASE_SCORE + dsr_score + acr_score + tenor_score
        
        # Clamp skor agar tidak melebihi batas min/max
        final_score = max(self.BASE_SCORE, min(self.MAX_SCORE, int(final_score)))
        
        # --- 4. Probabilitas Gagal Bayar (Default Probability) ---
        # Kurva Invers: Skor Tinggi -> Probabilitas Rendah
        # Rumus Linear Sederhana untuk Produksi
        if final_score >= 750:
            pd = 0.01   # 1%
        elif final_score >= 650:
            pd = 0.05   # 5%
        elif final_score >= 550:
            pd = 0.15   # 15%
        else:
            pd = 0.40   # 40% (Sangat berisiko)

        # --- 5. Segmentasi ---
        if final_score >= self.SEGMENT_MED_RISK_THRESHOLD:
            segment = "low"
        elif final_score >= self.SEGMENT_HIGH_RISK_THRESHOLD:
            segment = "medium"
        else:
            segment = "high"

        return {
            "credit_score": final_score,
            "default_probability": float(pd),
            "segment": segment,
            "dsr": round(monthly_installment / monthly_income if monthly_income > 0 else 0, 2),
            "monthly_installment": round(monthly_installment, 2),
            "assessment": {
                "dsr_score": dsr_score,
                "acr_score": acr_score,
                "tenor_score": tenor_score
            }
        }

# Instance Engine
scoring_engine = ProductionScoringEngine()

Bab 1: Arsitektur Sistem & Keamanan

Sistem AO (Account Officer) BPRS Baktimakmur Indah dibangun dengan arsitektur Client-Server yang terpisah secara ketat demi keamanan data nasabah (Confidentiality).

1.1 Area Sistem

  • Frontend (Public): Berjalan di ao.baktimakmur.com. Ini adalah tampilan visual yang diakses oleh browser user. Tidak ada data sensitif (password/pinjaman) yang disimpan di sini secara permanen, hanya ditampilkan sementara.
  • Backend API (Private): Berjalan di app-collection/ao di server aaPanel. Ini adalah "Otak" sistem. Semua logika bisnis (perhitungan bunga, skor kredit) terjadi di sini. Area ini tidak bisa diakses langsung oleh publik, hanya bisa diakses oleh Frontend yang sudah terautentikasi.

1.2 Keamanan Data

Password pengguna disimpan menggunakan algoritma Bcrypt. Ini adalah standar industri (hashing one-way). Artinya, bahkan Administrator Database tidak bisa melihat password asli user, hanya bisa memvalidasi kecocokannya.

Bab 2: Metodologi Penilaian Kredit (Credit Scoring)

Sebelum menggunakan aplikasi, seluruh staf (AO sampai Direksi) wajib memahami bagaimana sistem mengambil keputusan. Sistem ini bukan "kotak hitam" (black box), melainkan menggunakan metode Weighted Scorecard.

2.1 Komponen Penilaian

Sistem menilai nasabah berdasarkan 3 pilar utama dengan bobot tertentu:

  1. Kapasitas Pembayaran (DSR - Debt Service Ratio):
    Mengukur apakah pendapatan nasabah cukup untuk membayar cicilan tanpa menderita.
    Rumus: (Angsuran Bulanan) / (Penghasilan Bersih Bulanan).
  2. Jaminan/Agunan (ACR - Asset Coverage Ratio):
    Mengukur perlindungan bank jika nasabah gagal bayar. Apakah nilai agunan cukup untuk menutup pinjaman?
    Rumus: (Total Nilai Aset) / (Plafond Pinjaman).
  3. Jangka Waktu (Tenor Risk):
    Risiko waktu. Pinjaman jangka pendek lebih aman daripada jangka panjang karena ketidakpastian ekonomi di masa depan.

2.2 Skor & Segmentasi Risiko

Hasil perhitungan di atas dikonversi menjadi angka Skor (300 - 850) dan dikelompokkan ke dalam segmen:

Segmen Range Skor Arti Bisnis Tindakan AO
LOW RISK (Hijau) 700 - 850 Nasabah Primadona. Sangat mampu bayar, agunan kuat. Proses segera. Prioritas layanan.
MEDIUM RISK (Kuning) 550 - 699 Nasabah Waspada. Pendapatan pas-pasan atau agunan kurang. Perlu analisis tambahan (Survey lapangan).
HIGH RISK (Merah) 300 - 549 Risiko Gagal Bayar Tinggi. Cicilan terlalu berat. Tolak atau ajukan penurunan plafond.

Bab 3: Peran Pengguna (Roles & Responsibilities)

Sistem ini mendukung Multi-User Access. Setiap user memiliki hak akses (privilege) yang berbeda sesuai tugas pokok dan fungsinya (Job Description).

PENTING: Transparansi kunci audit log. Setiap aksi (Buat Nasabah, Approve Pinjaman, Update Status) tercatat di database dengan ID User yang melakukannya.

3.1 Branch User (AO / Teller)

  • Akses: Terbatas pada Cabang tempat user bertugas (misal: User SBY hanya bisa input data nasabah di Surabaya).
  • Tugas: Input data nasabah, Upload Dokumen, Input Pengajuan Pembiayaan, Input Pembayaran Angsuran.
  • Keterbatasan: Tidak bisa mengubah logika skor atau melihat data cabang lain.

3.2 Risk Director (Direktur Operasional & Manajemen Risiko)

  • Akses: Global (Semua Cabang).
  • Tugas: Memantau Portofolio Risiko (High Risk List), menyetujui penyesuaian parameter skor (jika ada perubahan kebijakan), dan memantau Early Warning System (EWS).

3.3 Director Main (Direktur Utama)

  • Akses: Global.
  • Tugas: Monitoring kinerja bisnis secara makro (Total Aset, Total Penyaluran Dana).

3.4 Commissioner (Komisaris)

  • Akses: Read-Only Global. Bisa melihat laporan namun tidak bisa mengubah data transaksi. Fungsi pengawasan.