# 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