Skip to main content

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:

  1. Authentication & Identity: JWT/Refresh Token, WebAuthn Passkeys, Google OAuth, Password Reset, Captcha, dan Throttle Throttling.
  2. Multi-Tenancy: Resolver tenant otomatis, isolasi database per-tenant, serta manajemen profil tenant.
  3. User Management & RBAC: Pengguna, peran (roles), profil izin (permission profiles), serta user impersonation.
  4. Order Primitives: Skema pesanan generik (orders) dengan atribut referensi terkoordinasi.
  5. Subscriptions & Payments: Paket langganan, checkout, pembayaran gateway Xendit, dan manajemen kode promo.
  6. Finance & Wallet: Manajemen saldo, dompet tenant, pengajuan penarikan (withdrawals), dan konfigurasi komisi platform.
  7. 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):

  1. Independensi Router & Logic: Modul memiliki Gin Router, Controller, Service Layer, Model GORM, dan file Migrasi sendiri.
  2. Relasi dengan Core Orders: Rekam data komersial atau transaksi bisnis harus mereferensikan tabel generik orders melalui pasangan field:
    • reference_type (contoh: "SALES_INVOICE", "PURCHASE_ORDER", "POS_SESSION")
    • reference_id (ID dokumen referensi)
  3. 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.