Init
This commit is contained in:
@@ -0,0 +1,218 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user