Files
RayLab-Core/Docs/Phase-02-Domain-Model.md
T
2026-07-30 09:41:42 +07:00

3.9 KiB

RayLab Core Phase 2 --- Domain Model

Tujuan

Fase 2 mendefinisikan domain bisnis yang dimiliki RayLab Core beserta hubungan antar domain. Domain model menjadi dasar implementasi entity, service, API, dan database.


Prinsip Domain

  • Domain mewakili konsep bisnis, bukan tabel database.
  • Setiap domain memiliki tanggung jawab yang jelas.
  • Domain saling berinteraksi melalui service, bukan akses langsung ke data domain lain.
  • Seluruh aturan bisnis berada pada domain terkait.

Domain Utama

Identity

Mengelola identitas pengguna.

Entity

  • User
  • Profile
  • Session

Tanggung Jawab

  • Identitas pengguna
  • Informasi profil
  • Status sesi

Authorization

Mengelola hak akses sistem.

Entity

  • Group
  • Role
  • Permission
  • Domain Access
  • Resource Access
  • Special Access

Model IAM

User
    ↓
Group
    ↓
Role
    ↓
Permission
    ↓
Domain Access
    ↓
Resource Access
    ↓
Special Access

Penjelasan

Group adalah identitas organisasi utama.

Role merupakan kumpulan tanggung jawab.

Permission mendefinisikan aksi yang diizinkan.

Domain Access menentukan aplikasi atau domain yang dapat diakses.

Resource Access menentukan objek di dalam aplikasi yang boleh digunakan.

Special Access merupakan override khusus untuk user tertentu tanpa mengubah group atau role.


Registry

Entity:

  • Application
  • Service
  • Domain
  • Adapter

Berfungsi sebagai katalog seluruh layanan RayLab.


Configuration

Entity:

  • Setting
  • Setting Category

Digunakan untuk konfigurasi yang dapat diubah saat runtime.


Storage

Entity:

  • Storage
  • Volume
  • Quota

Mengelola penyimpanan logis dan alokasi kapasitas.


Media

Entity:

  • Library
  • Folder Template
  • Folder Mapping
  • Folder Permission

Media Manager mengendalikan struktur media, sedangkan Jellyfin hanya membaca media yang telah disiapkan.


Audit

Entity:

  • Audit Log
  • Audit Category
  • Audit Target

Mencatat seluruh aktivitas penting sistem.


Health

Entity:

  • Health Check
  • Service Status

Digunakan untuk memantau kesehatan layanan internal.


System

Entity:

  • Job
  • Notification

Digunakan untuk proses internal seperti background job dan notifikasi.


Relasi Antar Domain

Identity
    │
    └── Authorization

Authorization
    │
    ├── Registry
    ├── Media
    ├── Storage
    └── Dashboard

Registry
    │
    └── Adapter

Semua Domain
    │
    └── Audit

Aturan Domain

  • Domain hanya memiliki satu tanggung jawab utama.
  • Tidak ada duplikasi data antar domain.
  • Setiap domain memiliki service sendiri.
  • Entity hanya mewakili data dan aturan dasar domain.
  • Komunikasi lintas domain dilakukan melalui service.

Hasil Akhir Fase 2

Pada akhir fase ini RayLab Core memiliki model domain yang menjadi acuan untuk:

  • Desain database
  • Layered Architecture
  • API
  • Implementasi modul
  • Pengembangan fitur di masa depan