Batasan Extraction Core & Pengembangan Modul
Panduan ini mendefinisikan batas-batas arsitektur (extraction boundary), komponen yang dipertahankan (retained capabilities), serta aturan isolasi modul saat mengekstrak atau mengembangkan modul baru pada Codeverta ERP Core.
Retained Capabilities (Fitur Inti yang Dipertahankan)
Platform Core ERP menyediakan utilitas dan fondasi sistem berikut:
- Authentication & Identity: JWT/Refresh Token, WebAuthn Passkeys, Google OAuth, Password Reset, Captcha, dan Throttle Throttling.
- Multi-Tenancy: Resolver tenant otomatis, isolasi database per-tenant, serta manajemen profil tenant.
- User Management & RBAC: Pengguna, peran (roles), profil izin (permission profiles), serta user impersonation.
- Order Primitives: Skema pesanan generik (
orders) dengan atribut referensi terkoordinasi. - Subscriptions & Payments: Paket langganan, checkout, pembayaran gateway Xendit, dan manajemen kode promo.
- Finance & Wallet: Manajemen saldo, dompet tenant, pengajuan penarikan (withdrawals), dan konfigurasi komisi platform.
- Infrastructure & Utilities: Audit trail logging, WebSocket realtime activity, pengiriman email bulk via Tencent SES, manajemen storage file, dan middleware rate limiting.
Not Registered (Komponen Non-ERP yang Dikeluarkan)
Layanan yang spesifik untuk domain eksternal seperti LMS (Learning Management System) tidak diaktifkan dalam skema migrasi otomatis ERP:
- Course, Lesson, Quiz, Certificate, Readiness Assessment.
- Parent/Student Workflow, Course Purchase, Community, RAG/AI Learning Chat.
Model database layanan di atas tidak terdaftar dalam fungsi AutoMigrate inti backend ERP.
Aturan Pengisolasian Modul ERP (Module Rule)
Saat membuat atau mengintegrasikan modul domain ERP baru (seperti Selling, Buying, Stock, atau CRM):
- Independensi Router & Logic: Modul memiliki Gin Router, Controller, Service Layer, Model GORM, dan file Migrasi sendiri.
- Relasi dengan Core Orders: Rekam data komersial atau transaksi bisnis harus mereferensikan tabel generik
ordersmelalui pasangan field:reference_type(contoh:"SALES_INVOICE","PURCHASE_ORDER","POS_SESSION")reference_id(ID dokumen referensi)
- Decoupled Imports: Core Backend tidak boleh mengimpor model dari modul spesifik secara langsung. Komunikasi antar modul dilakukan via core API contracts atau service interfaces.
Catatan Migrasi Database
[!WARNING] Jangan mengarahkan aplikasi ERP ke database produksi LMS. Sediakan database dan konfigurasi tenant terpisah khusus untuk peruntukan ERP guna mencegah konflik skema migrasi.