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

219 lines
3.9 KiB
Markdown

# 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
``` text
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
``` text
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