FinSight adalah purwarupa Asisten Keuangan Pintar terintegrasi untuk ekosistem Bank DBS. Sistem ini bekerja secara end-to-end melalui tiga pilar: Zero-Click Tracking (pelabelan otomatis) , Smart Profiling (pemetaan persona nasabah melalui clustering) , dan Proactive AI Coach. Inovasi utama sistem ini terletak pada penggunaan arsitektur Deep Learning sebagai pendeteksi anomali (anomaly detection) aliran kas. Ketika jaringan saraf tiruan mendeteksi pembelanjaan yang tidak wajar, data anomali tersebut langsung menjadi trigger terotomasi yang memanggil Generative AI untuk meracik teguran, pujian, atau saran dengan gaya komunikasi spesifik sesuai persona finansial nasabah.
Repository ini berisi Backend dari [FinSight]. Backend FinSight dibuat menggunakan Node.js, NestJS Framework, TypeScript, dan PostgreSQL (melalui TypeORM), backend ini menerapkan arsitektur modular yang dirancang untuk menerjemahkan logika ledger yang rumit menjadi API yang andal dan ramah bagi aplikasi client.
Backend [FinSight] bertindak sebagai satu-satunya sumber kebenaran (single source of truth) untuk seluruh catatan dana nasabah dan riwayat profil perilaku keuangan. Sistem ini memproses transaksi secara real-time, menghitung rasio Needs vs. Wants secara langsung, menerjemahkan deskripsi transaksi menjadi label kategori pengeluaran, serta menganalisis tingkat risiko anomali transaksi.
Sistem mengoordinasikan transaksi dan analitik melalui alur kerja tertutup antara NestJS Core Engine, PostgreSQL Database, dan FastAPI Machine Learning Service.
[Aplikasi Seluler Client]
│
▼ 1. Eksekusi Transaksi (POST /transactions)
┌────────────────────────────────────────────────────────┐
│ [NestJS API Gateway] │
│ │
│ 2. Simpan Transaksi & Mutasi Saldo Buku Besar │
│ (Tulis ke PostgreSQL db: tabel transaksi & rekening)───► [PostgreSQL]
│ │
│ 3. Klasifikasi Kategori & Analisis Fraud │
│ (HTTP Post ke FastAPI ML Endpoint) │
└───────────────────┬────────────────────────────────────┘
│
▼ 4. Klasifikasi & Analisis Risiko
┌────────────────────────────────────────────────────────┐
│ [FastAPI Machine Learning] │
│ │
│ * Kategorisasi otomatis teks mutasi (Wants/Needs) │
│ * Skor risiko anomali untuk pendeteksian fraud │
└───────────────────┬────────────────────────────────────┘
│
▼ 5. Label Kategori & Status Anomali
┌────────────────────────────────────────────────────────┐
│ [NestJS API Gateway] │
│ │
│ 6. Kalkulasi Ulang Rasio Pengeluaran Nasabah │
│ 7. Simpan statistik terbaru ke db (tabel nasabah) ───► [PostgreSQL]
│ 8. (Opsional) Kirim notifikasi alarm anomali ───► [Perangkat Client]
└────────────────────────────────────────────────────────┘
Untuk mendukung kelancaran operasional keuangan, pengiriman notifikasi, dan pengelolaan dokumen, core engine ini terintegrasi dengan layanan eksternal berikut:
| Penyedia Layanan | Cakupan Fungsi | Tujuan Bisnis |
|---|---|---|
| Payment Gateway (misal: Stripe / Xendit) |
Rekonsiliasi Dana | Menangani pengisian saldo (deposit), penarikan dana (payout), dan pencatatan mutasi penyelesaian transaksi secara real-time. |
| Notification Gateway (misal: Twilio / FCM) |
Keamanan Identitas | Mengirimkan kode OTP SMS secara instan, verifikasi keamanan login, dan siaran darurat notifikasi anomali transaksi. |
| Secure Object Storage (misal: AWS S3) |
Arsip Dokumen | Menyimpan file laporan kesehatan keuangan mingguan dan bulanan nasabah (dalam format PDF/JSON) secara aman dan terenkripsi. |
| Transactional Email (misal: SendGrid) |
Hubungan Nasabah | Mengirimkan bukti transfer, tagihan bulanan, serta ringkasan dokumen analitik keuangan langsung ke surel nasabah. |
Menangani sektor keuangan pribadi menuntut standar keamanan data yang tinggi. Sistem backend ini mengimplementasikan prinsip kepatuhan berikut:
- Enkripsi Data Sensitif (PII Protection):
- Password pengguna dienkripsi menggunakan algoritma BCrypt sebelum disimpan di database.
- Verifikasi keamanan sekunder diterapkan pada field sensitif seperti nama_ibu_kandung untuk menghindari pencurian identitas.
- Rotasi Sesi JWT & Refresh Token:
- Menerapkan rotasi token sesi ganda (Access & Refresh token) yang aman.
- Masa berlaku token dibatasi (contoh:
7d) untuk meminimalkan risiko pembajakan akun.
- Immutable Ledger Design:
- Data mutasi pada tabel
transaksibersifat hanya bisa ditambah (append-only). Data transaksi yang sudah tercatat tidak dapat diubah (update) atau dihapus (delete). - Perubahan saldo rekening selalu disandingkan dengan log mutasi debet/kredit yang jelas untuk menjamin auditabilitas ledger keuangan.
- Data mutasi pada tabel
Setiap modul API dikelompokkan berdasarkan kapabilitas bisnis yang disediakannya untuk pengguna:
- Endpoint:
/auth/register,/auth/login,/auth/refresh,/users/me - Nilai Bisnis: Menangani pendaftaran nasabah baru, otentikasi login, hashing password, dan pelacakan segmen demografis serta gaji bulanan (
gaji_bulanan).
- Endpoint:
/accounts - Nilai Bisnis: Mengelola detail akun tabungan nasabah (
rekening), mencatat saldo saat ini (saldo), dan status operasional akun (Aktif, Tangguh).
- Endpoint:
/transactions,/transactions/transfer - Nilai Bisnis: Memproses transfer dana antar rekening nasabah. Melakukan pemetaan Merchant Category Code (MCC) secara otomatis dan mengarahkan teks transaksi ke ML NLP FastAPI jika data kode merchant tidak tersedia.
- Endpoint:
/reports/insights - Nilai Bisnis: Mengelola pemicu otomatis (cron jobs) yang berjalan berkala:
- Tugas 7 Harian (Mingguan): Mengumpulkan data transaksi 7 hari terakhir, meminta skor anomali ke FastAPI, membuat file PDF laporan mingguan, dan mengirim notifikasi ringkasan.
- Tugas 30 Harian (Bulanan): Menjalankan algoritma pengelompokan perilaku nasabah (clustering), memperbarui persona demografis, dan menyusun laporan bulanan berbasis LLM.
- Monthly Reset Job: Mengosongkan akumulator pengeluaran Needs/Wants menjadi nol setiap tanggal 1 pukul 00:00.
Untuk menjaga target waktu aktif (uptime) sistem sebesar 99.9%:
- Observability Stack: Integrasi dengan Sentry dan Datadog untuk pelacakan error serta analisis latensi query database TypeORM secara real-time.
- Scheduler Health Monitor: Stakeholder produk dapat mengakses endpoint
/scheduler/statusuntuk memantau status eksekusi terakhir, jadwal eksekusi berikutnya, dan kesehatan cron jobs mingguan/bulanan. - HTTP Resilience & Fallback: Integrasi API eksternal menuju FastAPI dibungkus dengan konfigurasi retry otomatis, batas waktu tunggu (timeout) 3 detik, dan sistem fallback nilai default guna mencegah backend hang saat layanan AI mengalami kendala.
Panduan ini memudahkan tim non-teknis dalam menjalankan backend secara lokal untuk melakukan pengujian fungsionalitas atau melihat dokumentasi API interaktif.
-
Klon Repositori dan Pasang Dependensi:
git clone [BACKEND_REPO_URL] cd NEST-JS npm install -
Konfigurasi Variabel Lingkungan Lokal: Salin file konfigurasi awal:
cp .env.example .env
Buka file
.envdan masukkan konfigurasi database PostgreSQL lokal Anda:DB_HOST=localhost DB_PORT=5432 DB_USERNAME=postgres DB_PASSWORD=[PASSWORD_POSTGRES_ANDA] DB_DATABASE=finsight_db JWT_SECRET=[KODE_RAHASIA_JWT_ANDA]
-
Inisialisasi Skema & Data Uji: Jalankan migrasi skema tabel dan masukkan data nasabah buatan untuk pengujian:
# Buat skema tabel di PostgreSQL npm run migration:run # Suntikkan data awal (nasabah, rekening, riwayat transaksi dummy) npm run seed
-
Jalankan Server Lokal:
npm run start:dev
-
Akses Dashboard API Swagger (OpenAPI UI): Buka browser Anda dan akses alamat:
http://localhost:3000/api/docsMelalui halaman ini, Product Manager dan QA Engineer dapat mencoba memicu panggilan API secara langsung (seperti login nasabah, melihat saldo, atau mencoba alur transfer dana).