Dokumentasi
Blueprint fungsional & analisis kesenjangan
Konten berikut disematkan langsung dari dokumen referensi.
03 — Fitur, Modul, Menu & Form (Blueprint Fungsional)
Benchmark terhadap: TurnKey Lender, nCino, Temenos, Ellie Mae / ICE Mortgage Technology, Oracle Banking Loan Origination, CRIF Indonesia, Ad-ins (PT Adicipta Inovasi Teknologi), CorSys, Indonesian Cloud, AlurKerja (PT Javan Cipta Solusi), RDS (PT Reycom Document Solusi), dan MARS-LOS (PT Marstech Global).
Dokumen ini mendefinisikan fitur, modul, menu, dan form dari OriginIQ LOS. Penomoran (mis. MD-01) menjadi referensi bagi menu & form di frontend.
A. Daftar Modul & Menu (Informasi Arsitektur / Peta Aplikasi)
MD-01 — Dasbor & Pipeline
| Menu | Deskripsi | Form/Tampilan |
|---|
| Dasbor Eksekutif | KPI portfolio: total aplikasi, approval rate, time-to-decision, volume hari ini, NPL indikatif | F-DAS-01 |
| Pipeline Kanban | Kartu pengajuan per tahap (New → KYC → Underwriting → Approval → Document → Disburse) | F-PIP-01 |
| Worklist Saya | Daftar tugas yang menunggu aksi user (sesuai role) | F-WKL-01 |
MD-02 — Origination & Aplikasi Kredit
| Menu | Deskripsi | Form/Tampilan |
|---|
| Pengajuan Baru | Buat aplikasi (perorangan/UKM/korporasi) | F-APP-01 |
| Daftar Pengajuan | Pencarian, filter, ekspor | F-APP-02 |
| Detail Pengajuan (360°) | Tab lengkap: ringkasan, data, kredit, dokumen, keputusan, aktivitas | F-APP-03 |
| Daftar Produk Kredit | CRUD penuh produk (KPR, KKB, KMG, KMK, dll) + aktivasi/nonaktif & soft-delete; segmen, tenor min/maks, provisi, grace period, wajib agunan | F-PRD-01 |
| Pricing & Simulation | Simulasi angsuran, suku bunga, biaya | F-PRC-01 |
MD-03 — KYC, AML & Nasabah
| Menu | Deskripsi | Form/Tampilan |
|---|
| Profil Nasabah | Data pribadi/usaha, kontak, relasi | F-KYC-01 |
| Verifikasi Identitas (eKYC & Biometrik) | Dukcapil NIK + face-match + liveness (anti-spoof) | F-KYC-02 |
| AML Screening | Daftar sanksi, PEP, daftar hitam internal | F-KYC-03 |
| Risk Rating Nasabah | CDD/EDD, tingkat risiko | F-KYC-04 |
MD-04 — Underwriting & Credit Scoring
| Menu | Deskripsi | Form/Tampilan |
|---|
| Analisis Kredit | Analisa keuangan, DSR, LTV, kelayakan | F-UW-01 |
| Hasil Biro Kredit | SLIK OJK + Pefindo IdScore | F-UW-02 |
| Scorecard & Policy (BRE) | Aturan/parameter skoring, cut-off; decision table CRUD + rule tester | F-UW-03 |
| Analisa Jaminan (Collateral) | Penilaian agunan, appraisal | F-UW-04 |
MD-05 — Persetujuan & Workflow
| Menu | Deskripsi | Form/Tampilan |
|---|
| Approval Berjenjang | Review & putus sesuai LKMK | F-APR-01 |
| Komite Kredit | Agenda & risalah komite | F-APR-02 |
| Workflow Engine | Definisi alur & SLA per tahap | F-WF-01 |
| Distribusi Tugas (Routing) | Strategi round-robin / skill-based / load-based, beban kerja analis, penugasan manual, SLA | F-APR-04 |
| Limit Kewenangan (LKMK) | Konfigurasi limit pemutus | F-APR-03 |
MD-06 — Dokumen & Tanda Tangan Elektronik
| Menu | Deskripsi | Form/Tampilan |
|---|
| Checklist Dokumen | Daftar syarat dokumen per produk | F-DOC-01 |
| Penyimpanan Dokumen | Upload, versioning, preview (MinIO) | F-DOC-02 |
| Tanda Tangan Elektronik | eSign (akad, PO, dll) | F-DOC-03 |
| Template Dokumen (Doc Gen) | Template akad/surat (variabel merge): Perjanjian Kredit, SPK, Addendum, Surat Kuasa + clause library + jadwal angsuran | F-DOC-04 |
MD-07 — Pencairan (Disbursement)
| Menu | Deskripsi | Form/Tampilan |
|---|
| Instruksi Pencairan | Jadwal & metode pencairan | F-DIS-01 |
| Batching Pencairan | Pencairan massal (bulk) | F-DIS-02 |
| Rekonsiliasi | Rekonsiliasi dengan core banking | F-DIS-03 |
MD-08 — Kepatuhan, Pelaporan & Biro Kredit
| Menu | Deskripsi | Form/Tampilan |
|---|
| Koneksi SLIK OJK | Konfigurasi pelapor, jadwal, log permintaan | F-CMP-01 |
| Koneksi Pefindo IdScore | Konfigurasi kredensial & paket | F-CMP-02 |
| Pelaporan Regulator | Antrian laporan (SLIK bulanan, LBU, dll) | F-CMP-03 |
| Audit Trail | Jejak semua perubahan & keputusan | F-CMP-04 |
MD-09 — Administrasi & Konfigurasi
| Menu | Deskripsi | Form/Tampilan |
|---|
| Manajemen User | CRUD user & status | F-ADM-01 |
| Role & Permission | RBAC | F-ADM-02 |
| Master Data | Referensi (provinsi, bank, pekerjaan, dsb) | F-ADM-03 |
| Parameter Sistem | Konfigurasi global | F-ADM-04 |
MD-10 — Notifikasi & Layanan Nasabah
| Menu | Deskripsi | Form/Tampilan |
|---|
| Template Notifikasi | Email/SMS/push | F-NTF-01 |
| Log Pengiriman | Status kirim | F-NTF-02 |
| Portal Nasabah | Nasabah memantau status & upload dokumen | F-CUS-01 |
B. Kamus Form (Referensi Field Penting)
F-APP-01 — Pengajuan Kredit Baru
- Tipe nasabah: Perorangan / UKM / Korporasi
- Data pemohon: nama, NIK/KTP (scan), NPWP, tanggal lahir, alamat (provinsi/kota/kecamatan/ kelurahan/kode pos), status perkawinan, jumlah tanggungan, pendidikan
- Data kontak: HP, email, alamat domisili, lama tinggal, status tempat tinggal
- Data usaha/pekerjaan: jenis pekerjaan/usaha, bidang usaha (KBLI), lama bekerja, jabatan, penghasilan, penghasilan tambahan
- Data keuangan: rekening bank, pengeluaran bulanan, kewajiban lain
- Produk kredit: jenis (KPR/KMG/KMK/KI/multiguna), plafon, tenor, tujuan penggunaan, suku bunga, metode angsuran
- Jaminan: tipe agunan, nilai pasar, deskripsi
- Kelengkapan: daftar dokumen unggah
F-UW-02 — Hasil Biro Kredit (SLIK + Pefindo)
- SLIK OJK: status permintaan, tanggal respons, jumlah fasilitas, kolektibilitas per fasilitas (1–5), total eksposur, DPK aktif/macet,
IDEKU/ID permintaan - Pefindo IdScore: skor (250–900), grade risiko, alasan skor (reason codes), laporan kredit historis
- Ringkasan risiko gabungan: status lulus/hati-hati/tolak
F-UW-01 — Analisis Kredit
- Debt Service Ratio (DSR): perhitungan otomatis vs ambang
- Loan to Value (LTV): nilai agunan vs plafon
- Skor internal (scorecard) & skor biro; risk grade akhir
- Rekomendasi: APPROVE / REJECT / REVIEW + catatan analis
- Fasilitas usulan: plafon akhir, tenor, pricing
F-APR-01 — Persetujuan Berjenjang
- Detail pengajuan & hasil underwriting (read-only)
- Tindakan: Setuju / Tolak / Kembalikan (return) / Tunda (pending) + catatan wajib
- Tingkat persetujuan sesuai LKMK; notifikasi ke pemutus berikutnya
F-DOC-03 — Tanda Tangan Elektronik
- Daftar dokumen akad, status sign tiap pihak (pemohon, bank, saksi)
- Metode sign: TTE tersertifikasi (PSrE) / digital signature
- Log waktu tanda tangan & integritas (hash)
F-DIS-01 — Instruksi Pencairan
- Nomor pengajuan, nomor rekening tujuan, bank tujuan, nominal, tanggal efektif
- Metode: RTGS/Kliring/transfer internal; batch ID
- Status: draft → terkirim → sukses/gagal → rekonsiliasi
F-KYC-02 — Verifikasi Identitas (eKYC & Biometrik)
- Dukcapil: NIK, nama, nama ibu kandung, tempat/tanggal lahir, gender → status
match/not-found - Biometrik: face-match (selfie vs KTP, skor 0–1), liveness/anti-spoof (skor 0–1), flag spoof
- Hasil:
PASSED / FAILED → KYC VERIFIED / REJECTED (kombinasi Dukcapil + biometrik) - AML screening: daftar sanksi, PEP, daftar hitam internal →
amlRisk LOW/MEDIUM/HIGH
F-PRD-01 — Daftar Produk Kredit
- Kode & nama produk; segmen (KONSUMTIF/PRODUKTIF/PERUMAHAN/MULTIGUNA); tujuan penggunaan
- Plafon min/maks, tenor min/maks, bunga dasar, biaya provisi, grace period
- Wajib agunan (secured/unsecured); deskripsi; status aktif/nonaktif (soft-delete)
F-UW-03 — Scorecard & Policy (Mesin Aturan Bisnis / BRE)
- Parameter cut-off: DSR maks, LTV maks, DSR hard-reject, skor Pefindo minimal, kolektibilitas SLIK maks, skor internal minimal
- Decision table (aturan): nama, fakta (DSR/LTV/Pefindo/SLIK_KOL), operator, ambang, aksi (REJECT/REVIEW/APPROVE), severity, prioritas, status aktif
- Rule tester: uji seluruh aturan aktif terhadap nilai fakta contoh
F-APR-04 — Distribusi Tugas (Routing)
- Antrean tugas (worklist): instance, nama tugas, skill, prioritas, assignee, SLA
- Strategi: round-robin / skill-based / load-based; distribusi otomatis
- Beban kerja analis (load + tugas aktif); penugasan ulang manual per tugas
F-DOC-04 — Template Dokumen (Pembuat Kontrak / Doc Gen)
- Jenis dokumen: Perjanjian Kredit, Surat Persetujuan Pemberian Kredit (SPK), Addendum, Surat Kuasa
- Variabel merge: nomor akad, produk, debitur (perorangan NIK / korporasi NIB + PIC), plafon, tenor, bunga, jaminan, tujuan penggunaan
- Jadwal angsuran (anuitas): periode, angsuran, pokok, bunga, sisa pokok
- Output: preview + unduh (produksi: DOCX templating Carbone/Aspose + clause library + versi)
F-ENR-01 — Data Alternatif (Enrichment)
- Consent nasabah (wajib UU PDP 27/2022) → tanpa consent =
NEEDS_CONSENT - Sumber data: telco, e-commerce, sosial, utilitas, fintech, pekerjaan, geolokasi
- Output: skor pengayaan (400–899), score band (THIN/FAIR/GOOD/STRONG), uplift kelayakan, rekomendasi, sinyal risiko/penguatan
F-FDS-01 — Deteksi Penipuan (FDS)
- Device fingerprint: OS, root/jailbreak, emulator, VPN, resolusi layar
- Velocity: aplikasi 24 jam/7 hari, perangkat 30 hari, jam pengajuan pertama
- Aturan terpicu (kode, deskripsi, severity, skor) → skor 0–100, risk level, decision PASS / REVIEW / BLOCK; admin aturan di
/api/v1/fraud/rules
C. Matriks Fitur vs Benchmark Vendor
| Fitur | TurnKey Lender | nCino | Temenos | Ellie Mae/ICE | Oracle Banking LOS | CRIF | Ad-ins | CorSys | Ind.Cloud | AlurKerja | RDS | MARS-LOS | OriginIQ |
|---|
| Origination multi-produk | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ | ✅ | ✅ | ✅ | ✅ | ➖ | ✅ | ✅ |
| Workflow & approval berjenjang | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ | ✅ | ✅ | ➖ | ✅ | ➖ | ✅ | ✅ |
| Credit scoring / decision engine | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ | ✅ | ✅ |
| Integrasi SLIK OJK | ➖ | ➖ | ✅ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ | ✅ | ✅ |
| Integrasi Pefindo IdScore | ➖ | ➖ | ➖ | ➖ | ➖ | ✅ | ✅ | ✅ | ➖ | ✅ | ➖ | ✅ | ✅ |
| eKYC / Dukcapil | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ✅ | ➖ | ➖ | ✅ | ➖ | ✅ | ✅ |
| Manajemen dokumen + eSign | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ | ✅ | ✅ | ➖ | ➖ | ✅ | ➖ | ✅ |
| Pricing & simulasi | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ | ✅ | ✅ | ✅ | ✅ | ➖ | ✅ | ✅ |
| Disbursement & rekonsiliasi | ✅ | ✅ | ✅ | ➖ | ✅ | ➖ | ✅ | ✅ | ➖ | ➖ | ➖ | ✅ | ✅ |
| Pelaporan regulator & audit trail | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ | ✅ | ✅ | ✅ | ✅ | ➖ | ✅ | ✅ |
| Portal nasabah | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ | ➖ | ✅ | ➖ | ➖ | ➖ | ➖ | ✅ |
Catatan: matriks adalah generalisasi kemampuan produk (bukan klaim fitur pasti tiap vendor). Ad-ins dikenal kuat di multifinance/leasing; CRIF & CorSys kuat di perbankan & biro kredit; RDS kuat di document management/digital signature; AlurKerja kuat di workflow engine & case management.
D. Alur & Status Pengajuan (State Machine)
DRAFT → SUBMITTED → KYC_IN_PROGRESS → KYC_COMPLETED
→ UNDERWRITING → DECISION_PENDING (REVIEW) ──┐
→ APPROVED ──────────────────────────────────┤
→ REJECTED (terminal) │
APPROVED → DOCUMENT_PREPARING → DOCUMENT_SIGNED
→ DISBURSEMENT_PENDING → DISBURSED (terminal)
REVIEW → APPROVED / REJECTED (via approval workflow)
Aturan transisi status divalidasi oleh loan-service; setiap transisi dipublish ke Kafka dan dicatat ke audit trail.
10 — Gap Analysis Group Modul LOS & Modul Pintar (AI)
Hasil pemeriksaan aplikasi terhadap 6 Group Modul LOS + 6 Modul Pintar (AI) yang diminta, beserta status "sudah ada / sebagian / belum" dan apa yang ditambahkan pada pembaruan ini.
Pembaruan terbaru (penyempurnaan modul): 7 modul dilengkapi & disempurnakan — Alternatif Data (Enrichment), Deteksi Penipuan (FDS), Pembuat Kontrak (Doc Gen), Manajemen Produk, Distribusi Tugas (Routing), Mesin Aturan Bisnis (BRE), dan e-KYC & Biometrik. Rincian endpoint & perubahan tercantum di bawah.
1. Status Group Modul LOS (18 Modul)
Group 1 — Front-End & Onboarding (Interaksi Nasabah & Petugas)
| # | Modul | Status | Lokasi Saat Ini / Yang Ditambahkan |
|---|
| 1a | Registrasi & Pengajuan | ✅ Ada | loan-service (origination, state machine) + customer-service (registrasi); UI: menu Pengajuan, Nasabah & KYC |
| 1b | e-KYC & Biometrik | ✅ Lengkap | customer-service POST /{id}/kyc (Dukcapil + biometrik), POST /{id}/biometric (face-match + liveness). Kolom biometric_status, face_match_score, liveness_score. UI: tombol Biometrik + Verifikasi eKYC per nasabah (produksi: Dukcapil + vendor biometrik tersertifikasi) |
| 1c | Manajemen Dokumen (DMS) | ✅ Ada | document-service + MinIO (object storage); UI: menu Dokumen & eSign (checklist, upload, eSign) |
Group 2 — Verifikasi & Pengayaan Data (Validasi Keaslian Data)
| # | Modul | Status | Lokasi / Yang Ditambahkan |
|---|
| 2a | Integrasi Biro Kredit | ✅ Ada | credit-service: adapter SLIK OJK (POJK 18/2017 jo. 11/2024) + Pefindo IdScore; UI: menu Biro Kredit |
| 2b | Alternatif Data (Enrichment) | ✅ Lengkap | risk-intelligence-service /api/v1/data/enrichment + /enrichment/batch. Sumber: telco, e-commerce, sosial, utilitas, fintech, pekerjaan, geolokasi. Wajib consent (UU PDP 27/2022) → NEEDS_CONSENT; output: enrichmentScore (400–899), scoreBand (THIN/FAIR/GOOD/STRONG), creditworthinessUplift, recommendation, signals. UI: menu Enrichment |
| 2c | Deteksi Penipuan (FDS) | ✅ Lengkap | risk-intelligence-service /api/v1/fraud/score + admin /api/v1/fraud/rules. Device fingerprint (root/emulator/VPN), velocity, daftar hitam → caseId, deviceId, decision (PASS/REVIEW/BLOCK), aturan terpicu ber-severity. UI: menu Deteksi Penipuan (FDS) |
Group 3 — Analisis & Penilaian Risiko (Otak Keputusan Kredit)
| # | Modul | Status | Lokasi / Yang Ditambahkan |
|---|
| 3a | Mesin Penilai (Scoring Engine) | ✅ Ada | credit-service DecisionEngine: skor internal 300–850 |
| 3b | Mesin Aturan Bisnis (BRE) | ✅ Lengkap | Policy center (DSR/LTV/skor/SLIK cut-off) + decision table CRUD (tambah/edit/toggle/hapus aturan: fakta, operator, ambang, aksi, severity, prioritas) + rule tester. UI: menu Aturan Bisnis (BRE) (target produksi: DMN/Flowable DMN/Drools) |
| 3c | Analisis Kemampuan Bayar | ✅ Ada | DSR & LTV di DecisionEngine; tampil di Underwriting & detail pengajuan |
Group 4 — Alur Kerja & Operasional (Manajemen Proses Internal)
| # | Modul | Status | Lokasi / Yang Ditambahkan |
|---|
| 4a | Alur Kerja Dinamis | ✅ Ada | Menu Workflow BPMN (BPMN 2.0: user/service task, gateway, versi & deploy) |
| 4b | Distribusi Tugas (Routing) | ✅ Lengkap | loan-service TaskRouter + RoutingController (`/api/v1/routing/analysts |
| 4c | Dasbor Analis (Underwriter) | ✅ Ada | Menu Underwriting (antrean analisis + input penghasilan/kewajiban + eksekusi) |
Group 5 — Finalisasi & Pencairan (Tahap Akhir Kontrak)
| # | Modul | Status | Lokasi / Yang Ditambahkan |
|---|
| 5a | Pembuat Kontrak (Doc Gen) | ✅ Lengkap | document-service /api/v1/documents/generate-contract + /templates (clause library) + /amortization. Jenis dokumen: Perjanjian Kredit, SPK, Addendum, Surat Kuasa; mendukung debitur korporasi (NIB/PIC); jadwal angsuran anuitas otomatis. UI: menu Pembuat Kontrak |
| 5b | Tanda Tangan Digital | ✅ Ada | document-service eSign (simulasi); target produksi TTE tersertifikasi PSrE |
| 5c | Gerbang Integrasi (API Core) | ✅ Ada | api-gateway (routing, JWT, rate-limit) + integration-hub (docs/09); client ke credit-service & core banking |
Group 6 — Administrasi & Analitik (Manajemen & Evaluasi)
| # | Modul | Status | Lokasi / Yang Ditambahkan |
|---|
| 6a | Manajemen Produk | ✅ Lengkap | loan-service ProductController CRUD penuh (GET /{id}, PUT /{id}, PATCH /{id}, DELETE /{id} soft-delete) + field: segmen, tujuan, tenor min, biaya provisi, grace period, wajib agunan, deskripsi. UI: menu Manajemen Produk (list + tambah + edit + aktif/nonaktif + hapus) |
| 6b | Audit Trail & Pelaporan | ✅ Ada | Menu Audit Trail (event log immutable) + Report Studio (designer/viewer) |
2. Status Modul Pintar (AI) — 6 Modul
Keenam modul pintar belum ada dan ditambahkan sekarang: (1) satu microservice baru risk-intelligence-service di backend, dan (2) menu interaktif "Modul Pintar (AI)" di frontend dengan simulasi deterministic yang mencerminkan perilaku produksi.
| # | Modul Pintar | Backend (endpoint) | Frontend (menu) |
|---|
| S1 | AI Credit Scoring & Predictive Modeling | /api/v1/ai/scoring | AI Credit Scoring |
| S2 | Intelligent Document Processing (IDP) + Gen-AI | /api/v1/ai/idp | IDP Dokumen (Gen-AI) |
| S3 | Behavioral Analytics & Digital Footprint | /api/v1/ai/behavioral | Behavioral Analytics |
| S4 | Automated Dynamic Pricing Engine | /api/v1/ai/pricing | Pricing Dinamis |
| S5 | Graph Analytics untuk Anti-Fraud & Sindikat | /api/v1/ai/graph | Graph Anti-Fraud |
| S6 | AI Conversational Assistant (Virtual Underwriter) | /api/v1/ai/assistant | Virtual Underwriter |
3. Spesifikasi Modul Pintar (Cara Kerja Konvensional → Sentuhan Pintar)
S1 — AI Credit Scoring & Predictive Modeling
- Konvensional: skor = rumus tambah-kurang dari data form + SLIK.
- Pintar: model ML (XGBoost / Random Forest) menganalisis ribuan fitur, menghasilkan Probability of Default (PD), mencakup unbanked/underbanked (alternatif data).
- Implementasi:
risk-intelligence-service → POST /api/v1/ai/scoring mengembalikan pd, score (300–850), grade, reason codes bergaya SHAP + kontribusi fitur. - Governance: model registry + versi + evaluasi bias + explainability (wajib transparansi OJK).
S2 — Intelligent Document Processing (IDP) dengan Gen-AI
- Konvensional: OCR biasa — gagal saat dokumen buram/miring.
- Pintar: Computer Vision + LLM memahami konteks: deteksi slip gaji editan Photoshop, deteksi KTP hasil jepretan layar (screen-recapture), dan pencocokan tanda tangan kontrak vs KTP.
- Implementasi:
POST /api/v1/ai/idp → ocrConfidence, photoshopDetected, screenRecapture, signatureMatch, blurDetected, riskFlags.
S3 — Behavioral Analytics & Digital Footprint Profiling
- Konvensional: sistem hanya tahu data yang diketik nasabah.
- Pintar: analisis psikometri & jejak digital (dengan izin via SDK): kecepatan ketik (copy-paste KTP → indikasi bot/fraud), pola GPS, waktu pengajuan (jam 2 pagi berkorelasi risiko), riwayat aplikasi terpasang.
- Implementasi:
POST /api/v1/ai/behavioral → typingSpeed, copyPasteDetected, gpsVariance, submissionHour, anomalyScore, riskLevel, signals.
S4 — Automated Dynamic Pricing Engine (Risk-Based Pricing)
- Konvensional: bunga & limit kaku/seragam.
- Pintar: Risk-Based Pricing personal dalam hitungan detik — low risk → limit lebih besar + bunga lebih murah; high risk → limit dikecilkan + bunga dinaikkan.
- Implementasi:
POST /api/v1/ai/pricing (input PD/profil) → offeredRate, offeredLimit, tier, rationale.
S5 — Graph Analytics untuk Anti-Fraud & Sindikat Kredit
- Konvensional: hanya cek KTP/HP sudah terdaftar atau belum.
- Pintar: Graph Database (Neo4j) melacak hubungan tersembunyi & Fraud Ring: 5 nasabah berbeda mendaftar berdekatan, tempat kerja sama, nomor HP berurutan, device ID sama.
- Implementasi:
POST /api/v1/ai/graph → fraudRingDetected, matchedMembers, sharedSignals, ringConfidence.
S6 — AI Conversational Assistant (Virtual Underwriter)
- Konvensional: analis menelepon manual untuk wawancara / minta dokumen ulang.
- Pintar: AI Voice/Text Bot (in-app / WhatsApp): wawancara awal, verifikasi data lewat percakapan alami, otomatis minta unggah ulang dokumen buram.
- Implementasi:
POST /api/v1/ai/assistant → reply, intent, requestedDocuments.
4. Arsitektur yang Ditambahkan
... (service eksisting) ...
│
└── risk-intelligence-service (baru, port 8087)
• Modul Enrichment (Alternatif Data) /api/v1/data/enrichment
• Modul Enrichment (batch, konsumen NIK) /api/v1/data/enrichment/batch
• Modul FDS (Deteksi Penipuan) /api/v1/fraud/score
• Admin Aturan FDS (list/tambah/toggle) /api/v1/fraud/rules
• Modul AI Scoring (PD/ML) /api/v1/ai/scoring
• Modul IDP (Gen-AI) /api/v1/ai/idp
• Modul Behavioral Analytics /api/v1/ai/behavioral
• Modul Dynamic Pricing /api/v1/ai/pricing
• Modul Graph Anti-Fraud /api/v1/ai/graph
• Modul Virtual Underwriter /api/v1/ai/assistant
document-service (diperluas)
• Pembuat Kontrak (Doc Gen) /api/v1/documents/generate-contract
• Template/Clause Library /api/v1/documents/templates
• Kalkulator Jadwal Angsuran /api/v1/documents/amortization
loan-service (diperluas)
• Manajemen Produk (CRUD penuh) /api/v1/products/** (GET/{id}, PUT, PATCH, DELETE)
• Distribusi Tugas (Routing) /api/v1/routing/** (analysts, queue, workload, distribute, assign)
customer-service (diperluas)
• eKYC (Dukcapil + biometrik) /api/v1/customers/{id}/kyc
• Biometrik (face-match + liveness) /api/v1/customers/{id}/biometric
Semua modul AI & biometrik memakai simulasi deterministic (seed dari NIK) agar bisa dijalankan tanpa kredensial produksi. Di produksi, ganti dengan model & integrasi sungguhan (ML, LLM, Neo4j, Dukcapil, vendor biometrik, dsb.) — lihat docs/09 untuk rekomendasi engine & lisensi.
13 — Alur Kerja & Alur Data Perbankan (Login → Logout)
Panduan ini menjelaskan alur kerja (workflow) pemakai sistem dan alur data (data flow) antarsistem OriginIQ LOS secara menyeluruh — dari proses login hingga logout — termasuk fase origination, verifikasi, penilaian risiko, persetujuan, kontrak, dan pencairan. Pemetaan didasarkan pada implementasi aktual: frontend SPA (menu & state machine) dan microservices backend (service-registry → api-gateway → auth/customer/loan/credit/ document/notification/risk-intelligence).
1. Aktor & Peran (RBAC)
| Peran | Siapa | Tugas utama di sistem | Menu khas |
|---|
ADMIN | Administrator TI/operasional | Kelola user, role, produk, parameter, routing | Manajemen Produk, User & Role, Audit Trail |
LOAN_OFFICER | Petugas/AO kredit | Registrasi nasabah, buat pengajuan, lengkapi data & dokumen | Pengajuan, Nasabah & eKYC, Dokumen |
UNDERWRITER | Analis kredit | Analisis kemampuan bayar, cek biro kredit, skoring | Underwriting, Biro Kredit, Enrichment, FDS |
APPROVER | Komite kredit / pemutus | Putusan berjenjang sesuai LKMK | Persetujuan, Pipeline |
COMPLIANCE | Kepatuhan | Audit, kebijakan (BRE), pelaporan regulator | Aturan Bisnis (BRE), Audit Trail |
CUSTOMER | Nasabah (portal) | Pantau status & unggah dokumen | Portal Nasabah |
Catatan: kontrol akses per-peran saat ini direpresentasikan pada level menu/UI (frontend) dan enforced di gateway (JWT + header X-User-Role) untuk produksi. Detail RBAC ada di docs/11 (Audit Keamanan).
2. Ringkasan Alur Kerja End-to-End
┌─────────┐ ┌──────────────┐ ┌──────────┐ ┌──────────────┐ ┌─────────────┐
│ LOGIN │──▶│ DASBOR │──▶│ ORIGINASI│──▶│ VERIFIKASI │──▶│ PENILAIAN │
│ (auth) │ │ (pipeline) │ │ (pengajuan)│ │ (eKYC+biro) │ │ (skoring) │
└─────────┘ └──────────────┘ └──────────┘ └──────────────┘ └─────────────┘
│ BRE / FDS
▼
┌──────────┐ ┌────────────┐ ┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ LOGOUT │◀──│ ANALITIK │◀──│ PENCAIRAN │◀──│ KONTRAK + │◀──│ PERSETUJUAN│
│ (token) │ │ + LAPORAN │ │(disbursement)│ │ e-SIGN │ │ (berjenjang) │
└──────────┘ └────────────┘ └─────────────┘ └──────────────┘ └─────────────┘
Setiap langkah dicatat ke audit trail (siapa, apa, kapan) dan state pengajuan berpindah mengikuti state machine (lihat §5).
3. Alur Kerja Per Fase (Langkah demi Langkah)
Fase 0 — Login & Otentikasi
| # | Langkah | Aktor | UI / Menu | Backend |
|---|
| 1 | Buka aplikasi, isi username & password | Semua | Layar login | — |
| 2 | Kirim kredensial | — | Tombol "Masuk" | POST /api/v1/auth/login (auth-service) |
| 3 | Verifikasi user + password (bcrypt) + status aktif | — | — | AuthController → AppUserRepository |
| 4 | Cek rate limiter (blokir 15 mnt setelah percobaan gagal beruntun) | — | — | LoginRateLimiter |
| 5 | Terbitkan JWT (HS256, TTL 900 detik) berisi sub, name, role, uid, exp | — | — | JwtService.issueToken |
| 6 | Terima accessToken + profil, simpan di state aplikasi | — | Session (in-memory SPA) | respons login |
| 7 | Redirect ke Dasbor sesuai peran | Aktor | Hash route #/dashboard | — |
Catatan keamanan: password tidak pernah disimpan plaintext (bcrypt); token kedaluwarsa 15 menit; produksi disarankan OIDC/Keycloak + refresh token + revocation list (lihat §7).
Fase 1 — Dasbor & Pipeline
- Aktor melihat KPI (pengajuan hari ini, approval rate, antrean putusan, rata-rata plafon), grafik volume 14 hari, dan distribusi pipeline.
- Menu:
#/dashboard, #/pipeline.
Fase 2 — Origination (Registrasi Nasabah → Pengajuan)
| # | Langkah | Aktor | Menu | Backend |
|---|
| 1 | Buat nasabah (perorangan/SME/korporasi) | LOAN_OFFICER | #/customers → "Nasabah Baru" | POST /api/v1/customers |
| 2 | Validasi form (NIK 16 digit, NPWP/NIB, email, HP) | — | validasi inline | customer-service (bean validation) |
| 3 | Buat pengajuan kredit (pilih nasabah, produk, plafon, tenor, jaminan) | LOAN_OFFICER | #/loans → "Pengajuan Baru" | POST /api/v1/loans |
| 4 | Submit pengajuan → status SUBMITTED | LOAN_OFFICER | tombol "Ajukan" | POST /api/v1/loans/{id}/submit |
Fase 3 — Verifikasi & Pengayaan Data
| # | Langkah | Aktor | Menu | Backend |
|---|
| 1 | eKYC Dukcapil (cocokkan identitas dgn KTP) | LOAN_OFFICER/Sistem | "Verifikasi eKYC" | POST /api/v1/customers/{id}/kyc |
| 2 | Biometrik (face-match + liveness anti-spoof) | Sistem | "Biometrik" | POST /api/v1/customers/{id}/biometric |
| 3 | Status KYC → VERIFIED/REJECTED; aplikasi → KYC_COMPLETED | — | — | customer-service + loan-service |
| 4 | Cek SLIK OJK (riwayat fasilitas & kolektibilitas) | UNDERWRITER | #/bureau | POST /api/v1/credit/bureau/slik |
| 5 | Cek Pefindo IdScore (skor 250–900) | UNDERWRITER | #/bureau | POST /api/v1/credit/bureau/pefindo/score |
| 6 | Enrichment data alternatif (telco/e-commerce/sosial/utilitas/fintech — wajib consent) | UNDERWRITER | #/enrichment | POST /api/v1/data/enrichment |
| 7 | FDS (device fingerprint + velocity → PASS/REVIEW/BLOCK) | UNDERWRITER | #/fds | POST /api/v1/fraud/score |
Fase 4 — Penilaian Risiko (Underwriting & BRE)
| # | Langkah | Aktor | Menu | Backend |
|---|
| 1 | Input penghasilan & kewajiban bulanan | UNDERWRITER | #/underwriting | — |
| 2 | Hitung DSR, LTV, skor internal; ambil SLIK + Pefindo | Sistem | — | DecisionEngine (credit-service) |
| 3 | Evaluasi aturan bisnis (BRE): DSR/LTV/Pefindo/SLIK cut-off | Sistem | #/bre | policy (editable di UI) |
| 4 | Hasil → APPROVED / REJECTED / DECISION_PENDING | — | detail pengajuan | POST /api/v1/loans/{id}/underwrite |
Fase 5 — Persetujuan Berjenjang (LKMK / 4-eyes)
| # | Langkah | Aktor | Menu | Backend |
|---|
| 1 | Distribusi tugas ke analis/pemutus (round-robin/skill/load) | ADMIN/Sistem | #/routing | POST /api/v1/routing/distribute |
| 2 | Review pengajuan + hasil underwriting (read-only) | APPROVER | #/approval | — |
| 3 | Putusan Setujui/Tolak + catatan wajib (4-eyes) | APPROVER | modal keputusan | POST /api/v1/loans/{id}/decision |
| 4 | Tersimpan di approval_task (jejak audit) | — | #/audit | loan-service |
Fase 6 — Kontrak & Tanda Tangan Elektronik
| # | Langkah | Aktor | Menu | Backend |
|---|
| 1 | Siapkan dokumen | LOAN_OFFICER | #/documents | document-service |
| 2 | Generate kontrak (Perjanjian Kredit / SPK / Addendum / Surat Kuasa) + jadwal angsuran | — | #/docgen | POST /api/v1/documents/generate-contract |
| 3 | e-Sign (TTE tersertifikasi PSrE) | Nasabah + Bank | "Tanda Tangani" | POST /api/v1/documents/{id}/sign |
| 4 | Status → DOCUMENT_SIGNED | — | — | loan-service |
Fase 7 — Pencairan (Disbursement)
| # | Langkah | Aktor | Menu | Backend |
|---|
| 1 | Instruksi pencairan (rekening, nominal, metode RTGS/kliring) | LOAN_OFFICER | #/loans | POST /api/v1/loans/{id}/disburse |
| 2 | Status → DISBURSED; notifikasi ke nasabah | — | — | notification-service |
Fase 8 — Analitik, Pelaporan & Audit
- Report Studio (
#/reports): designer + viewer + ekspor CSV. - Audit Trail (
#/audit): semua perubahan & keputusan (immutable log). - Pelaporan regulator (SLIK bulanan, LBU) —
#/bureau "Kirim Laporan".
Fase 9 — Logout
| # | Langkah | Aktor | Backend |
|---|
| 1 | Klik "Keluar" | Semua | — |
| 2 | Hapus token & state user dari sesi | — | state.user = null, hapus token |
| 3 | Kembali ke layar login | — | hash "" |
| 4 | (Produksi) token dimasukkan revocation/blacklist atau dibiarkan kedaluwarsa | — | auth-service / OIDC |
JWT bersifat stateless — "logout" di sisi klien cukup membuang token. Untuk standar perbankan, tambahkan token revocation (refresh-token rotation) atau session di Redis agar logout benar-benar mematikan sesi server.
4. Alur Data (Data Flow) Antar Microservice
4.1 Peta Layanan & Port
| Layanan | Port | Database (PostgreSQL) | Tanggung jawab data |
|---|
service-registry | 8761 | — | Registri Eureka (service discovery) |
api-gateway | 8080 | — | Entry point, JWT verify, routing, CORS |
auth-service | 8081 | authdb | User, role, login, JWT |
customer-service | 8082 | customerdb | Nasabah, eKYC, biometrik, pengurus/pemegang saham |
loan-service | 8083 | loandb | Pengajuan, produk, approval task, routing |
credit-service | 8084 | creditdb | SLIK, Pefindo, decision engine |
document-service | 8085 | documentdb + MinIO | Dokumen, kontrak, template, eSign |
notification-service | 8086 | notificationdb | Email/SMS/push |
risk-intelligence-service | 8087 | — (stateless, model eksternal) | Enrichment, FDS, AI (scoring/IDP/behavioral/pricing/graph/assistant) |
Infrastruktur bersama: Kafka (event antar-layanan), Redis (cache/session/rate-limit), MinIO (object storage dokumen).
4.2 Alur Data Login (Otentikasi)
Browser (SPA) API Gateway auth-service authdb
│ │ │ │
│ POST /auth/login │ │ │
│─────────────────────▶│ (open path) │ │
│ │─────────────────────────▶│ cek rate limiter │
│ │ │ find user + bcrypt │
│ │ │───────────▶ (SELECT) │
│ │ │◀─────────── user │
│ │ │ issue JWT (HS256) │
│ 200 {accessToken, │◀─────────────────────────│ │
│ profile} │ │ │
│◀─────────────────────│ │ │
│ simpan token │ │ │
4.3 Alur Data Setiap Request (Setelah Login)
Browser ──HTTP + Authorization: Bearer <JWT>──▶ api-gateway
│ AuthGlobalFilter:
│ • OPTIONS → lolos (CORS preflight)
│ • open path → lolos
│ • verify signature + exp
│ • inject X-User-Id / X-User-Name / X-User-Role
▼
route ke layanan via Eureka (lb://)
│
┌────────────────┬───────────┼───────────────┬────────────┐
▼ ▼ ▼ ▼ ▼
customer-service loan-service credit-service document-svc risk-intelligence
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
customerdb loandb creditdb documentdb (model/AI)
4.4 Alur Data Origination Kredit (End-to-End)
[1] Registrasi nasabah Browser ──▶ gateway ──▶ customer-service ──▶ customerdb
[2] eKYC Dukcapil customer-service ──▶ Dukcapil (eksternal) + biometrik vendor
[3] Buat pengajuan Browser ──▶ loan-service ──▶ loandb (loan_application)
[4] Underwriting loan-service ──▶ credit-service (DecisionEngine)
credit-service ──▶ SLIK OJK (eksternal, mock di dev)
credit-service ──▶ Pefindo IdScore (eksternal/REST adapter)
risk-intelligence ──▶ enrichment + FDS (feed skor)
[5] Simpan evaluasi credit-service ──▶ creditdb (credit_evaluation)
[6] Putusan loan-service ──▶ loandb (approval_task, status)
[7] Generate kontrak document-service ──▶ contract template (DOCX) ──▶ MinIO
[8] e-Sign document-service ──▶ PSrE (TTE tersertifikasi)
[9] Pencairan loan-service ──▶ status DISBURSED ──▶ notification-service
[10] Audit setiap service ──▶ Kafka (event) ──▶ audit trail / report
4.5 Data di Setiap Tahap (At Rest)
| Tahap | Tabel utama | Isi penting |
|---|
| Otentikasi | authdb.app_user | username, password_hash (bcrypt), role, branch, active |
| Nasabah | customerdb.customer | NIK, NPWP, data individual/korporasi, kyc_status, biometric_status, aml_risk |
| Korporasi | customerdb.company_official, company_shareholder | pengurus & pemegang saham |
| Pengajuan | loandb.loan_application | application_no, customer_id, product_code, plafon, tenor, status |
| Persetujuan | loandb.approval_task | level, assignee, decision, catatan |
| Produk | loandb.product | kode, segmen, plafon, tenor, bunga, provisi, grace period |
| Routing | loandb.routing_task | task, skill, priority, assignee, SLA |
| Evaluasi | creditdb.credit_evaluation | DSR, LTV, skor internal, SLIK, Pefindo, rekomendasi |
| FDS | creditdb.fds_rule | katalog aturan deteksi penipuan |
| Dokumen | documentdb.document_item + contract_template | file key (MinIO), tipe, status sign |
| Notifikasi | notificationdb.notification_log | channel, recipient, status kirim |
4.6 Diagram Urutan (Sequence Diagram) per Fase
Notasi: panah solid ──▶ = request/response sinkron (HTTP); panah putus-putus ···▶ = event asinkron (Kafka) / notifikasi. Aktor luar sistem (Dukcapil, biro kredit, PSrE, core banking) berada paling kanan. Versi interaktif: kedelapan diagram di bawah tersedia sebagai diagram Mermaid.js yang dirender di browser di situs marketing OriginIQ (OriginIQ_web_marketing.html, bagian #diagrams) — Mermaid di-vendor lokal tanpa CDN.
Fase 0 — Login
Petugas Frontend (SPA) api-gateway auth-service authdb
│ │ │ │ │
│ isi user+ │ │ │ │
│ password │ │ │ │
│───────────▶│ POST /auth/login │ │ │
│ │───────────────────▶│ (open path) │ │
│ │ │──────────────────▶│ cek rate limiter │
│ │ │ │─SELECT user────────▶│
│ │ │ │◀─────baris user─────│
│ │ │ │ bcrypt.matches │
│ │ │ │ issue JWT (HS256) │
│ │ │◀──200 {token, profil}────────────────────│
│ │◀───────────────────│ │ │
│◀─ simpan │ │ │ │
│ token │ │ │ │
Fase 1 — Dasbor & Pipeline
Mode demo menghitung KPI di sisi klien dari store.applications; di produksi agregat dihitung di loan-service (SQL aggregate) lalu di-cache Redis — lihat §6.
Semua peran Frontend (SPA) api-gateway loan-service loandb
│ │ │ │ │
│ buka #/dashboard │ │ │
│──────────────▶│ GET /loans/aggregate │ │
│ │──────────────────▶│ (JWT verify) │ │
│ │ │──────────────▶│─SELECT SUM/COUNT▶│
│ │ │ │◀──KPI + volume───│
│ │◀──200 {kpi, distribusi status}────│ (14 hari) │
│◀─render KPI + │ │ │ │
│ grafik 14 hr │ │ │ │
│ buka #/pipeline │ │ │
│──────────────▶│ GET /loans?groupBy=status │ │
│ │──────────────────▶│──────────────▶│─SELECT by status▶│
│ │◀──200 kanban──────│◀──────────────│ │
│◀─kanban per │ │ │ │
│ status │ │ │ │
Fase 2 — Origination (Nasabah → Pengajuan)
LOAN_OFFICER Frontend gateway customer-service customerdb loan-service loandb
│ │ │ │ │ │ │
│ buat nasabah │ │ │ │ │ │
│─────────────▶│ POST /customers│ │ │ │ │
│ │───────────────▶│───────────────▶│ validasi NIK/ │ │ │
│ │ │ │ NPWP/NIB/email │ │ │
│ │ │ │─INSERT─────────▶│ │ │
│ │ │ │◀───nasabah──────│ │ │
│ │◀──200 cust─────│◀───────────────│ │ │ │
│ │ │ │ │ │ │
│ buat pengajuan │ │ │ │ │
│─────────────▶│ POST /loans │ │ │ │ │
│ │───────────────▶│──────────────────────────────────────────────────▶│ │
│ │ │ │ │ │─INSERT──▶│
│ │◀──200 app──────│◀──────────────────────────────────────────────────────────────│
Fase 3 — Verifikasi (eKYC + Biro Kredit)
UNDERWRITER Frontend gateway customer-service Dukcapil Biometrik credit-service SLIK Pefindo
│ │ │ │ │ │ │ │ │
│ eKYC │ │ │ │ │ │ │ │
│───────────▶│ POST /customers/{id}/kyc │ │ │ │ │ │
│ │─────────────▶│─────────────▶│─verify(NIK)──▶│ │ │ │ │
│ │ │ │◀─{match}──────│ │ │ │ │
│ │ │ │─face+liveness──────────────▶│ │ │ │
│ │ │ │◀─{passed}───────────────────│ │ │ │
│ │ │ │ kycStatus = VERIFIED/REJECTED│ │ │ │
│ │ │ │ ···▶ event KYC_COMPLETED → Kafka │ │ │
│ │ │ │ │ │ │ │ │
│ cek SLIK │ POST /credit/bureau/slik │ │ │ │ │ │
│───────────▶│─────────────▶│─────────────────────────────────────────────────────────────▶│ │ │
│ │ │ │ │ │ │──inquiry─▶│ │
│ │ │ │ │ │ │◀─{fasilitas}│ │
│ │ │ │ │ │ │ │ │
│ cek Pefindo│ POST /credit/bureau/pefindo/score │ │ │
│───────────▶│─────────────▶│─────────────────────────────────────────────────────────────▶│──inquiry────────▶│
│ │ │ │ │ │ │◀───{skor 250-900}──│
Fase 4 — Underwriting & Keputusan (BRE)
UNDERWRITER Frontend gateway loan-service credit-service risk-intelligence creditdb
│ │ │ │ │ │ │
│ input penghasilan+ │ │ │ │ │
│ kewajiban │ │ │ │ │ │
│───────────▶│ POST /loans/{id}/underwrite │ │ │ │
│ │─────────────▶│──────────────▶│ │ │ │
│ │ │ │─evaluate()────▶│ │ │
│ │ │ │ │─hitung DSR/LTV + skor│ │
│ │ │ │ │─ambil SLIK + Pefindo │ │
│ │ │ │ │─cek aturan BRE (cut-off)│ │ │
│ │ │ │ │───(opsional) enrichment + FDS──▶│ │
│ │ │ │ │─INSERT credit_evaluation──────────────────────▶│
│ │ │ │◀─{APPROVE/REJECT/REVIEW}─────────────────────────────────────────│
│ │ │ │ set status pengajuan │
│ │◀──200 hasil──│◀──────────────│ │ │ │
Fase 5–7 — Persetujuan → Kontrak → Pencairan
APPROVER Frontend gateway loan-service document-service PSrE core-banking
│ │ │ │ │ │ │
│ putus │ POST /loans/{id}/decision │ │ │ │
│────────▶│────────────▶│────────────▶│─INSERT approval_task │ │ │
│ │ │ │ status APPROVED/REJECTED │ │
│ │ │ │ ···▶ event APPROVED → Kafka │
│ │ │ │ │ │ │
│ gen kontrak│ POST /documents/generate-contract │ │ │ │
│────────▶│────────────▶│────────────────────────▶│─merge template + jadwal angsuran │
│ │ │ │ │─simpan DOCX → MinIO │
│ e-Sign │ POST /documents/{id}/sign │ │ │ │
│────────▶│────────────▶│────────────────────────▶│─TTE (hash + timestamp)─▶│ │
│ │ │ │ │◀─tersertifikasi──│ │
│ │ │ │ status DOCUMENT_SIGNED │ │
│ │ │ │ ···▶ event SIGNED → Kafka │
│ cair │ POST /loans/{id}/disburse │ │ │ │
│────────▶│────────────▶│────────────▶│ status DISBURSED │ │──▶ transfer │
│ │ │ │ ···▶ notifikasi (email/SMS/push) │
Fase 8 — Analitik, Pelaporan & Audit
COMPLIANCE Frontend gateway loan-service loandb credit-service SLIK OJK
│ │ │ │ │ │ │
│ buka #/reports (Report Studio) │ │ │ │
│────────────▶│ GET /reports/aggregate │ │ │ │
│ │─────────────▶│───────────▶│─SELECT agregat/group-by─▶│ │
│ │ │ │◀──rows───────│ │ │
│ │◀──200 tabel/CSV───────────│ │ │ │
│ buka #/audit│ │ │ │ │ │
│────────────▶│ GET /audit/trail │ │ │ │
│ │─────────────▶│───────────▶│◀──event log (immutable, dari Kafka)───────│
│ │◀──200 jejak audit─────────│ │ │ │
│ kirim laporan SLIK bulanan │ │ │ │
│────────────▶│ POST /credit/bureau/slik/report │ │ │
│ │─────────────▶│────────────────────────────────────────▶│ │
│ │ │ │ │ │─kirim LKPB──▶│
│ │ │ │ │ │◀─ack ID──────│
│ │◀──200 {reportId}────────────────────────────────────────│ │
Fase 9 — Logout
Petugas Frontend (SPA) api-gateway auth-service
│ │ │ │
│ klik "Keluar"│ │ │
│─────────────▶│ hapus token + │ │
│ │ state.user = null │ │
│ │ location.hash = "" (layar login) │
│ │ ···▶ (produksi) POST /auth/logout │
│ │ │──────────────────▶│ simpan ke revocation list
│ │ │◀──202─────────────│
│◀─layar login │ │ │
5. State Machine Pengajuan (Referensi)
DRAFT → SUBMITTED → KYC_IN_PROGRESS → KYC_COMPLETED
→ UNDERWRITING → DECISION_PENDING (REVIEW) ──┐
→ APPROVED ──────────────────────────────────┤
→ REJECTED (terminal) │
APPROVED → DOCUMENT_PREPARING → DOCUMENT_SIGNED
→ DISBURSEMENT_PENDING → DISBURSED (terminal)
REVIEW → APPROVED / REJECTED (via approval workflow)
Transisi divalidasi oleh loan-service; setiap transisi dipublish ke Kafka dan dicatat ke audit trail (lihat docs/03 bagian D).
Versi interaktif: diagram state machine ini, plus flowchart keputusan otomatis (BRE) dan flowchart persetujuan berjenjang (LKMK / 4-eyes), dirender interaktif dengan Mermaid.js di situs marketing OriginIQ (OriginIQ_web_marketing.html, bagian #diagrams grup "Pipeline & State Machine").
6. Matriks "Siapa Melakukan Apa" (Menu → Layanan → Data)
| Menu (hash route) | Aktor khas | Layanan yang dipanggil | Data yang disentuh |
|---|
#/dashboard, #/pipeline | Semua | loan-service | loan_application |
#/loans | LOAN_OFFICER | loan-service | loan_application |
#/products | ADMIN | loan-service | product |
#/customers | LOAN_OFFICER | customer-service | customer, biometrik, officials/shareholders |
#/bureau | UNDERWRITER | credit-service | SLIK + Pefindo + evaluasi |
#/enrichment | UNDERWRITER | risk-intelligence | data alternatif (consent) |
#/fds | UNDERWRITER | risk-intelligence | device fingerprint, velocity |
#/underwriting | UNDERWRITER | loan + credit + risk | evaluasi kredit |
#/bre | COMPLIANCE | (policy) + credit | ambang kebijakan & aturan |
#/approval | APPROVER | loan-service | approval_task |
#/routing | ADMIN | loan-service | routing_task, workload |
#/docgen, #/documents | LOAN_OFFICER | document-service | kontrak, template, eSign |
#/workflow | ADMIN | — (BPMN 2.0) | definisi proses |
#/reports | Semua | (query lintas DB) | report designer/viewer |
#/audit | COMPLIANCE | — | log immutable |
#/users | ADMIN | auth-service | app_user |
| Modul Pintar (AI) | UNDERWRITER | risk-intelligence | model AI (PD, IDP, behavioral, pricing, graph, assistant) |
7. Penguatan Keamanan di Setiap Tahap (standar perbankan)
| Tahap | Kontrol saat ini | Rekomendasi produksi |
|---|
| Login | bcrypt + rate limiter (15 mnt) + JWT 15 mnt | OIDC/Keycloak, MFA/2FA (POJK 21/2023), CAPTCHA, audit login |
| Setiap request | JWT verify di gateway + header identitas | JWT asimetris (JWKS), mTLS, WAF, RBAC per endpoint |
| eKYC | Dukcapil + biometrik + consent | vendor biometrik tersertifikasi, AML screening (PEP/sanksi) |
| Biro kredit | consent wajib (UU PDP), masking NIK | pencatatan inquiry (IDEKU), enkripsi transit & at rest |
| Putusan | 4-eyes / LKMK + catatan wajib | limit kewenangan per level, segregation of duties |
| Dokumen/eSign | TTE tersertifikasi (PSrE) | hash + timestamp, kunci HSM |
| Logout | buang token klien | token revocation/blacklist, session di Redis, idle timeout |
| Audit | log immutable | SIEM, retensi sesuai regulasi |
8. Kesimpulan
Alur kerja OriginIQ LOS dari login hingga logout membentuk satu siklus penuh origination kredit: otentikasi → registrasi → verifikasi (eKYC + biro kredit + data alternatif + FDS) → penilaian risiko (scoring + BRE) → persetujuan berjenjang → kontrak & e-sign → pencairan → pelaporan/audit → logout. Sepanjang alur, data mengalir antar-microservice melalui api-gateway (JWT) dan event Kafka, tersimpan di database per-layanan, dan setiap langkah tercatat di audit trail.
14 — Runbook Operasional (Produksi)
Runbook ini melengkapi docs/07 (menjalankan di development). Di sini dibahas operasi harian produksi OriginIQ LOS: urutan start/stop, backup & restore, disaster recovery, monitoring & alerting, penanganan insiden, keamanan operasional, dan runbook per layanan. Target SLA mengikuti docs/04: availability 99,95%, RPO < 15 menit, RTO < 1 jam, p95 latensi read < 300 ms / write < 500 ms. Kepatuhan mengikuti docs/05 (DRC & BCP wajib diuji).
1. Cakupan & Peran Operasional
1.1 Layanan yang dioperasikan
| Layanan | Port | Database | Infrastruktur terkait |
|---|
service-registry (Eureka) | 8761 | — | — |
api-gateway | 8080 | — | JWT, routing, CORS |
auth-service | 8081 | authdb | Redis (rate-limit) |
customer-service | 8082 | customerdb | Dukcapil/biometrik (eksternal) |
loan-service | 8083 | loandb | Kafka (event) |
credit-service | 8084 | creditdb | SLIK OJK + Pefindo (eksternal) |
document-service | 8085 | documentdb + MinIO | PSrE (eksternal) |
notification-service | 8086 | notificationdb | SMTP/SMS/push gateway |
risk-intelligence-service | 8087 | — (stateless) | model AI eksternal |
Infrastruktur bersama: PostgreSQL 16, Redis 7 (AOF), Kafka 3.7 (KRaft), MinIO. Sumber: infra/docker-compose.yml.
1.2 Matriks tanggung jawab (RACI singkat)
| Aktivitas | Platform/DevOps | DBA | Security | Support NOC |
|---|
| Deploy & rollback | R/A | C | I | I |
| Backup & restore | R/A | R | I | I |
| Patch OS/library | R/A | I | C | I |
| Secret rotation | C | — | R/A | I |
| Monitoring & alert | R/A | C | I | R |
| Insiden SEV1/SEV2 | R | C | C | R/A |
R = Responsible, A = Accountable, C = Consulted, I = Informed.
2. Startup & Shutdown (Urutan Wajib)
2.1 Startup (cold start / pemulihan penuh)
Urutan penting: infrastruktur → registry → gateway → services. Jangan start service sebelum registry & database siap.
# 1) Infrastruktur
cd infra && docker compose up -d
docker compose ps # pastikan postgres/redis/kafka/minio "healthy"
# 2) Service registry (Eureka)
mvn -pl service-registry spring-boot:run # tunggu "Started" + /actuator/health UP
# 3) API gateway
mvn -pl api-gateway spring-boot:run
# 4) Services (paralel, setelah registry UP)
mvn -pl auth-service spring-boot:run &
mvn -pl customer-service spring-boot:run &
mvn -pl loan-service spring-boot:run &
mvn -pl credit-service spring-boot:run &
mvn -pl document-service spring-boot:run &
mvn -pl notification-service spring-boot:run &
Verifikasi startup — seluruh health harus UP:
curl -s http://localhost:8080/actuator/health | jq .status # gateway
curl -s -X POST http://localhost:8080/api/v1/auth/login -H 'Content-Type: application/json' \
-d '{"username":"admin","password":"<secret>"}' | jq .accessToken # login end-to-end
| Cek | Perintah | Target |
|---|
| Registry | curl -s http://localhost:8761/eureka/apps | daftar instance terdaftar |
| Gateway route | curl -s http://localhost:8080/actuator/gateway/routes | route terpasang |
| DB | docker exec originiq-postgres pg_isready -U originiq | accepting connections |
| Kafka | docker exec originiq-kafka kafka-topics.sh --bootstrap-server localhost:9092 --list | daftar topik |
| MinIO | curl -s http://localhost:9000/minio/health/ready | 200 OK |
2.2 Shutdown (graceful)
Urutan kebalikan: services → gateway → registry → infrastruktur.
1. Hentikan dulu entry point (gateway) agar tidak ada request baru masuk. 2. Hentikan services (beri grace period agar request in-flight selesai; Spring Boot server.shutdown=graceful + timeout-per-shutdown-phase=30s direkomendasikan). 3. Terakhir hentikan registry & infrastruktur. Jangan matikan PostgreSQL/Kafka/MinIO mendahului services — berisiko transaksi terputus / data loss.
# produksi (K8s): scale down ingress → deployments (graceful) → stateful infra terakhir
kubectl scale deployment api-gateway --replicas=0
kubectl scale deployment auth-service customer-service loan-service \
credit-service document-service notification-service --replicas=0
# infra (postgres/kafka/redis/minio) tetap jalan sampai maintenance window selesai
3. Backup & Restore
3.1 Apa yang wajib di-backup
| Komponen | Metode | Frekuensi | Retensi |
|---|
| PostgreSQL (6 DB: authdb…notificationdb) | pg_dump (logika) + WAL archiving (fisik/PITR) | full harian + WAL kontinu | 30 hari + 12 bulan (arsip) |
| MinIO (dokumen & kontrak) | mc mirror / replikasi site | harian | 30 hari + versi objek |
| Redis | snapshot RDB + AOF | — (AOF kontinu) | hanya untuk cache/rate-limit, boleh reset |
| Kafka | replikasi broker + schema registry | kontinu | sesuai retensi topik |
| Konfigurasi | Git (deklaratif) + secret di Vault | setiap perubahan | selamanya di Git |
3.2 Backup PostgreSQL (contoh)
# dump logika harian per database (database-per-service)
for db in authdb customerdb loandb creditdb documentdb notificationdb; do
docker exec originiq-postgres pg_dump -U originiq -Fc "$db" > "/backup/${db}_$(date +%F).dump"
done
# produksi: aktifkan archive_mode=on + pg_basebackup untuk PITR (point-in-time recovery)
# retensi WAL minimal 2x interval backup penuh
3.3 Backup MinIO (contoh)
mc alias set prod http://minio:9000 <access-key> <secret-key>
mc mirror --watch prod/loan-documents /backup/minio/loan-documents
3.4 Restore (langkah + verifikasi)
# 1) buat DB kosong & restore dump
docker exec originiq-postgres createdb -U originiq authdb_restore
docker exec -i originiq-postgres pg_restore -U originiq -d authdb_restore < /backup/authdb_2026-09-05.dump
# 2) restore MinIO (bucket dokumen)
mc mirror /backup/minio/loan-documents prod/loan-documents
# 3) verifikasi integritas
docker exec originiq-postgres psql -U originiq -d authdb_restore -c "SELECT count(*) FROM app_user;"
docker exec originiq-postgres psql -U originiq -d loandb_restore -c "SELECT count(*) FROM loan_application;"
Aturan emas: backup belum dianggap ada sampai restore-nya teruji. Jadwalkan restore drill bulanan (lihat §7 checklist). Target sesuai docs/04: RPO < 15 menit (WAL kontinu), RTO < 1 jam (prosedur di bawah).
4. Disaster Recovery & BCP (RPO < 15 mnt, RTO < 1 jam)
4.1 Topologi DR (active–passive, dua site)
SITE A (primary) SITE B (DR)
─────────────── ───────────────
api-gateway (multi replica) standby (scaled-down, otomatis naik saat failover)
services (multi replica) services (replica min 1)
PostgreSQL primary ──streaming/WAL──▶ PostgreSQL standby (synchronous/async)
MinIO ──site replication──▶ MinIO (replication bucket)
Kafka (3 broker) ──MirrorMaker 2──▶ Kafka (3 broker)
Redis AOF Redis AOF (replikasi)
4.2 Prosedur failover (ringkas)
| # | Langkah | Aktor | Catatan |
|---|
| 1 | Nyatakan insiden (SEV1) & aktifkan war room | NOC | slack/pager |
| 2 | Cegah transaksi ganda: matikan gateway / aktifkan mode read-only | DevOps | idempotency key pencairan tetap dijaga (docs/04) |
| 3 | Promote standby PostgreSQL → primary baru | DBA | pg_ctl promote / Patroni failover |
| 4 | Arahkan DNS/ingress ke SITE B | DevOps | TTL kecil untuk percepat cut-over |
| 5 | Verifikasi: health UP, login OK, inquiry SLIK/Pefindo OK | NOC + tim | cek docs/13 fase kritis |
| 6 | Replikasi balik: SITE A jadi standby baru | DBA | sebelum re-online |
| 7 | Postmortem & laporan regulator bila wajib | semua | docs/05 |
4.3 Data loss & rollback
- Kehilangan data DB: restore PITR ke titik sebelum insiden (WAL), lalu re-run event dari Kafka (outbox) agar state konsisten.
- Dokumen hilang: restore bucket MinIO dari replika site.
- Konfigurasi salah: rollback deploy (lihat §8.2) + restore secret dari Vault (versioned).
5. Monitoring & Alerting
5.1 Endpoint kesehatan
| Cek | Endpoint | Yang diekspos |
|---|
| Liveness/readiness | GET /actuator/health | UP/DOWN + komponen (DB, Redis, Kafka) |
| Info | GET /actuator/info | versi, git commit |
| Gateway routes | GET /actuator/gateway/routes | daftar route aktif |
| Registry | GET /eureka/apps | instance terdaftar |
Saat ini exposure terbatas (health,info,gateway) dan metrics/prometheus tidak diekspos di port publik (lihat komentar application.yml tiap service). Untuk produksi, scrape metrik lewat port manajemen terpisah — lihat docs/05.
5.2 Metrik kunci & ambang alert (usulan)
| Metrik | Ambang warning | Ambang critical |
|---|
| Health (tiap service) | 1x gagal | 3x gagal / > 1 mnt |
| P95 latensi read / write | > 300 ms / > 500 ms | > 600 ms / > 1 s |
| Error rate 5xx (per service) | > 1% | > 5% |
| Antrean Kafka (lag consumer) | > 5.000 | > 20.000 |
| Utilisasi CPU pod | > 70% (15 mnt) | > 90% |
| Koneksi PostgreSQL | > 70% pool | > 90% pool |
| Gagal inquiry SLIK/Pefindo | > 2% | > 5% / vendor down |
| Disk usage (DB/MinIO) | > 70% | > 85% |
Alert diarahkan ke PagerDuty/Opsgenie dengan on-call rotation dan severity (SEV1…SEV4).
5.3 Stack observability (produksi, dari docs/04)
Prometheus (metrik) + Grafana (dash) + Loki (log) + Tempo (trace) — dedicated, terpisah dari workload, dengan retention log minimal 90 hari (kebutuhan audit perbankan).
6. Penanganan Insiden (Incident Response)
6.1 Severity
| Level | Definisi | Respons awal | Eskalasi |
|---|
| SEV1 | Platform down / data loss / breach | < 15 mnt | War room, seluruh tim |
| SEV2 | Fitur utama terdegradasi (mis. underwriting gagal) | < 30 mnt | Tim terkait |
| SEV3 | Gangguan minor (satu user/flow) | < 4 jam | On-call |
| SEV4 | Kosmetik / non-blocking | backlog | — |
6.2 Alur standar
1. Deteksi (alert / laporan user) → buka tiket & kanal insiden. 2. Triage → tentukan severity & pemilik. 3. Mitigasi (stop bleeding): blokir, rollback, scale-up, failover — sebelum root cause. 4. Root cause analysis (RCA) → perbaiki permanen. 5. Postmortem (blameless) → action items + retensi sesuai regulasi.
6.3 Playbook insiden umum
| Gejala | Cek cepat | Mitigasi awal |
|---|
| Semua API 5xx | health gateway, route, registry | restart gateway / scale up |
| Login lambat/gagal | Redis (rate-limit), authdb pool | scale auth-service, cek Redis |
| Inquiry SLIK/Pefindo gagal | konektor eksternal, kredensial | fallback mock (dev) / buka tiket vendor |
| Disbursement ganda | idempotency key, disbursement.request_id | pause gateway, validasi unique constraint |
| Antrean Kafka menumpuk | consumer lag, DLQ | scale consumer, cek DLQ |
| Disk DB penuh | df, growth tabel | archive + scale volume |
7. Kapasitas & Skala
- HPA (Kubernetes) pada service stateless: scale berdasarkan CPU/memori; baseline sesuai
docs/04 (1 juta transaksi ≈ 12 TPS rata-rata, puncak 35–58 TPS). - Kafka: partisi per topik ≥ 3 (produksi), keyed by
applicationId agar urutan per pengajuan terjaga; consumer group per service. - PostgreSQL: read replica untuk report/query berat + PgBouncer untuk connection pooling; jangan
SELECT * besar di jalur transaksional. - MinIO: 4 node erasure-coding (dari
docs/04). - Lakukan load test (k6/Gatling) sebelum event puncak; catat baseline & threshold HPA.
8. Keamanan & Operasional Harian
8.1 Secret & akses
| Item | Praktik |
|---|
JWT_SECRET | Wajib diganti dari default; service menolak start di profil prod dengan secret default; rotasi berkala (mis. 90 hari) |
| Kredensial DB/SLIK/Pefindo | Simpan di secret manager (Vault), bukan hardcode/env file; rotasi + audit akses |
| Akses produksi | RBAC + MFA; least privilege; audit log akses operator |
| TLS | TLS 1.2+ untuk seluruh jalur; mTLS antar-service (rekomendasi docs/13 §7) |
8.2 Deploy & rollback
- Deploy blue/green atau canary per service; jangan deploy semua service serentak.
- Migrasi DB backward-compatible (expand → migrate → contract).
- Rollback: versi sebelumnya tetap tersedia (image tag/registry) + versi proses BPMN blue/green (lihat
docs/09).
8.3 Patch & maintenance window
- Patch OS/library bulanan; maintenance window diluar jam sibuk (mis. 00:00–04:00 WIB).
- Siapkan prosedur maintenance: pindahkan traffic, drain node, patch, verifikasi, kembalikan.
9. Runbook Per Layanan (Referensi Cepat)
| Layanan | Health | Dependensi | Gagal → dampak | Pulihkan |
|---|
| service-registry | :8761/actuator/health | — | discovery baru gagal | restart, pastikan peer registry |
| api-gateway | :8080/actuator/health | registry, Redis | semua API masuk down | restart / scale up; cek route |
| auth-service | :8081/actuator/health | authdb, Redis | login & verifikasi JWT gagal | restart; cek pool DB |
| customer-service | :8082/actuator/health | customerdb, Dukcapil | registrasi & KYC gagal | restart; cek vendor |
| loan-service | :8083/actuator/health | loandb, Kafka | origination & putusan gagal | restart; cek lag Kafka |
| credit-service | :8084/actuator/health | creditdb, SLIK, Pefindo | underwriting gagal | restart; cek kredensial vendor |
| document-service | :8085/actuator/health | documentdb, MinIO, PSrE | kontrak & eSign gagal | restart; cek MinIO/PSrE |
| notification-service | :8086/actuator/health | notificationdb, SMTP/SMS | notifikasi gagal | restart; cek gateway kirim |
| risk-intelligence | :8087/actuator/health | model AI (stateless) | modul AI gagal | restart; cek model registry |
10. Checklist Periodik
Harian
- [ ] Semua health
UP; review alert semalam; cek lag Kafka & error rate. - [ ] Backup harian PostgreSQL/MinIO sukses (verifikasi ukuran & integritas).
Mingguan
- [ ] Review dashboard kapasitas (CPU/memori/disk) & proyeksi tren.
- [ ] Review log keamanan (login gagal, akses anomali, perubahan konfigurasi).
Bulanan
- [ ] Restore drill: restore backup ke lingkungan uji & verifikasi data.
- [ ] Failover drill: uji cut-over ke SITE B (tanpa memutus produksi bila memungkinkan).
- [ ] Rotasi secret & review akses operator.
Kuartalan
- [ ] Chaos test (matikan DB/Kafka/registry) sesuai checklist
docs/04. - [ ] Review & perbarui BCP/DR dengan hasil drill terakhir.
- [ ] Uji kapasitas kuota SLIK OJK / Pefindo ke vendor.
11. Kesimpulan
Runbook ini menjadikan OriginIQ LOS dapat dioperasikan dengan disiplin standar perbankan: urutan start/stop yang benar, backup yang teruji restore, DR dengan RPO < 15 menit & RTO < 1 jam, monitoring dengan ambang jelas, serta respons insiden ber-severity. Operasikan bersama docs/04 (SLA & skalabilitas), docs/05 (kepatuhan & DRC/BCP), docs/07 (menjalankan di development), dan docs/13 (alur kerja & data) agar produksi aman, cepat, dan diaudit.
15 — Checklist Go-Live & Panduan Deploy (Produksi)
Dokumen ini adalah pintu terakhir sebelum produksi: daftar periksa go/no-go, rencana
cutover, dan cara deploy statis. Melengkapi docs/04 (SLA & skalabilitas), docs/05
(kepatuhan), docs/07 (menjalankan), docs/11 (audit keamanan), dan docs/14 (runbook
operasional). Jangan go-live sebelum semua item wajib (MUST) terpenuhi.
1. Kriteria Go / No-Go
| Kriteria |
Ambang go-live |
| Load test puncak |
5× estimasi puncak lolos (target 1 jt transaksi/hari ≈ 12 TPS rata-rata, puncak 35–58 TPS) |
| Availability (30 hari staging) |
≥ 99,95% |
| RPO / RTO teruji |
RPO < 15 mnt, RTO < 1 jam (restore & failover drill lulus) |
| Defect blocker / critical |
0 terbuka |
| Kepatuhan & persetujuan regulator |
Persetujuan & sertifikasi selesai (lihat §3) |
| Kredensial produksi integrasi |
SLIK OJK, Pefindo, Dukcapil/biometrik, PSrE, core banking aktif (bukan mock) |
Go/No-Go: keputusan diambil rapat komite (bisnis, TI, kepatuhan, risiko) — bukan oleh
tim teknis saja.
2. Kesiapan Regulasi & Hukum (MUST)
| # |
Item |
Ref |
| 2.1 |
Persetujuan & pelaporan SLIK OJK sesuai POJK 18/2017 jo. POJK 11/2024; UAT iDebku & pelaporan bulanan |
docs/05, docs/06 |
| 2.2 |
Perjanjian & kredensial Pefindo IdScore (LPIP diawasi OJK) + UAT inquiry (250–900) |
docs/06 |
| 2.3 |
Layanan digital bank umum: 2FA/MFA, APU-PPT, penanganan pengaduan (POJK 21/2023) |
docs/05 |
| 2.4 |
UU PDP 27/2022: consent inquiry biro kredit & data alternatif, masking NIK, hak subjek data |
docs/05, docs/13 |
| 2.5 |
TTE tersertifikasi PSrE untuk akad elektronik (UU ITE & PP PSTE) |
docs/03, docs/13 |
| 2.6 |
Pelaporan bank umum via SPOJK (POJK 22/2025) — jadwal & format terverifikasi |
docs/05 |
| 2.7 |
Audit eksternal / konsultan kepatuhan menandatangani kesiapan |
— |
3. Kesiapan Keamanan (MUST)
| # |
Item |
Ref |
| 3.1 |
JWT_SECRET produksi (bukan default), rotasi periodik; JWT asimetris/JWKS di gateway |
docs/07, docs/13 |
| 3.2 |
TLS 1.2+ di semua jalur; mTLS antar-service; WAF + proteksi DDoS |
docs/13, docs/14 |
| 3.3 |
Kredensial di secret manager (Vault) — tidak hardcode/env file |
docs/14 |
| 3.4 |
RBAC per endpoint + segregation of duties (4-eyes / LKMK) |
docs/13 |
| 3.5 |
MFA/2FA operator & petugas; audit log login |
docs/05, docs/13 |
| 3.6 |
Penetration test & vulnerability scan selesai, temuan critical ditutup |
docs/11 |
| 3.7 |
Audit trail immutable + SIEM + retensi sesuai regulasi |
docs/13, docs/14 |
4. Kesiapan Performa & Kapasitas (MUST)
| # |
Item |
Ref |
| 4.1 |
Load test (k6/Gatling) skenario puncak 5×; p95 read < 300 ms, write < 500 ms |
docs/04 |
| 4.2 |
Autoscaling (K8s HPA) teruji; Kafka partisi ≥ 3 keyed by applicationId |
docs/04, docs/14 |
| 4.3 |
PostgreSQL: PgBouncer + read replica + indeks; kuota koneksi terpantau |
docs/04 |
| 4.4 |
Observability: Prometheus + Grafana + Loki + Tempo; alert threshold aktif |
docs/14 |
| 4.5 |
Chaos test: matikan DB/Kafka/registry → failover & DLQ berjalan |
docs/04 |
5. Kesiapan Data & Integrasi (MUST)
| # |
Item |
Ref |
| 5.1 |
Backup PostgreSQL (WAL + PITR) & MinIO teruji restore-nya; RPO/RTO terpenuhi |
docs/14 |
| 5.2 |
SLIK OJK & Pefindo: endpoint/sertifikat produksi, kuota inquiry terkonfirmasi, SLA vendor ditandatangani |
docs/06 |
| 5.3 |
Dukcapil + vendor biometrik tersertifikasi (POJK 21/2023) aktif |
docs/10, docs/13 |
| 5.4 |
Integrasi core banking (disbursement, rekonsiliasi) diuji end-to-end |
docs/13 |
| 5.5 |
Migrasi data (produk, user, master) tervalidasi; data lama diaudit |
— |
6. Kesiapan Operasional (MUST)
| # |
Item |
Ref |
| 6.1 |
Runbook operasional (startup/backup/DR/insiden) disetujui & diuji |
docs/14 |
| 6.2 |
On-call rotation + eskalasi (SEV1…SEV4) + war room aktif |
docs/14 |
| 6.3 |
DR site aktif (active–passive) & failover drill lulus |
docs/14 |
| 6.4 |
Monitoring/alert produksi dikonfigurasi dengan ambang yang disepakati |
docs/14 |
| 6.5 |
Restore drill & failover drill bulanan terjadwal |
docs/14 |
7. Rencana Cutover & Rollback
- Pra-cutover: freeze perubahan fitur; snapshot baseline DB + konfigurasi + versi aplikasi.
- Cutover: alihkan traffic bertahap (DNS/ingress), mulai dari pilot (1 cabang/segmen).
- Verifikasi pasca-cutover: health UP, login OK, inquiry SLIK/Pefindo OK, disbursement
end-to-end OK, laporan regulator terkirim.
- Rollback: titik kembali = versi sebelumnya (image tag) + restore DB PITR + rollback
konfigurasi; prosedur harus diuji sebelum go-live (bukan saat insiden).
Idempotency pencairan (disbursement.request_id + unique constraint) tetap dijaga selama
cutover agar tidak ada pencairan ganda (lihat docs/04 §6).
8. Rencana Peluncuran (Soft → Full)
| Tahap |
Cakupan |
Exit criteria |
| 1. Soft launch / pilot |
1 cabang / segmen kecil |
2 minggu tanpa insiden SEV1/SEV2 |
| 2. Canary / perluasan |
10–25% volume |
p95 latensi & error rate dalam SLA |
| 3. Full launch |
100% |
komite go-live menyetujui; hypercare 2–4 minggu |
9. Post-Launch (Hypercare)
- Hypercare 2–4 minggu: tim inti siaga, review harian metrik & insiden.
- Pelaporan regulator: pastikan SLIK bulanan & laporan SPOJK terkirim tepat waktu sejak
bulan pertama.
- Review pasca 30 hari: evaluasi kapasitas, keamanan, dan checklist ulang go-live.
10. Deploy Statis (Situs Marketing + SPA)
Situs marketing & SPA bersifat statis — dikemas sebagai image nginx:
# Build & jalankan (menyajikan situs marketing di /, SPA di /app/, proxy /api/ ke gateway)
docker build -f deploy/Dockerfile -t originiq-frontend .
docker run -p 80:80 originiq-frontend
| Rute |
Konten |
/ |
Situs marketing OriginIQ_web_marketing.html |
/app/ |
SPA LOS (frontend/, hash routing) |
/frontend/ |
Aset statis (img, css, js, vendor mermaid) |
/api/ |
Proxy ke api-gateway:8080 |
/healthz |
Probe kesehatan load balancer |
Konfigurasi: frontend/nginx/nginx.conf (header keamanan, gzip, cache aset, proxy API).
CI otomatis: .github/workflows/ci.yml (syntax check JS + validasi struktur HTML).
10.1 Deploy Backend (Microservices Spring Boot)
Satu Dockerfile multi-stage melayani semua modul backend (build arg SERVICE):
# Build image per service (contoh auth-service)
docker build -f deploy/Dockerfile.backend \
--build-arg SERVICE=auth-service -t originiq-auth-service .
Stack penuh (infra + 9 service + frontend) lewat Compose:
cp deploy/.env.example .env # isi semua secret ("change-me")
docker compose -f deploy/docker-compose.prod.yml build
docker compose -f deploy/docker-compose.prod.yml up -d
docker compose -f deploy/docker-compose.prod.yml ps
- Health probe: Actuator
/actuator/health (service) & /eureka/apps (registry);
depends_on: condition: service_healthy menjaga urutan startup.
- Backend images:
eclipse-temurin:21-jre-alpine (non-root, MaxRAMPercentage).
- Panduan lengkap:
deploy/README.md; TLS/keamanan diakhiri di load balancer/ingress.
10.2 Deploy ke Kubernetes (target 1 jt transaksi/hari & SLA 99,95%)
Manifest produksi lengkap di folder k8s/: namespace, ConfigMap + Secret, infra
(PostgreSQL/Redis/Kafka/MinIO), 9 service Spring Boot dengan liveness/readiness probe,
frontend + Ingress TLS, dan HPA untuk autoscaling (gateway, loan, credit, customer).
kubectl apply -f k8s/ # lihat k8s/README.md untuk build image & secret
kubectl -n originiq-prod get pods,svc,hpa
- Layanan kritis di-
replicas: 2 minimal + HPA (target puncak 35–58 TPS — docs/04).
- Database/queue/storage produksi pakai layanan terkelola (RDS, MSK, ElastiCache, S3);
manifest
k8s/02-infra.yaml adalah referensi single-node.
- Verifikasi pasca-deploy:
scripts/smoke-test-prod.sh.
11. Matriks Ringkas Go / No-Go
| Area |
MUST terpenuhi? |
| Regulasi & persetujuan (SLIK, Pefindo, POJK 21/2023, UU PDP, PSrE) |
☐ |
| Keamanan (secret, TLS, WAF, pentest, RBAC, MFA) |
☐ |
| Performa (load test 5×, SLA 99,95%, autoscaling) |
☐ |
| Data (backup/PITR teruji, migrasi valid) |
☐ |
| Integrasi produksi (SLIK/Pefindo/Dukcapil/core) aktif |
☐ |
| Operasional (runbook, on-call, DR drill) |
☐ |
| Cutover & rollback teruji |
☐ |
| Defect blocker/critical = 0 |
☐ |
Keputusan go-live hanya setelah seluruh baris di atas tercentang dan disetujui komite.
Lihat docs/14 untuk detail operasional dan docs/04/docs/05 untuk SLA & kepatuhan.