General — Pengaturan & Layanan Platform
Ringkasan
Sub-modul General mencakup semua layanan lintas-platform yang mengelola konfigurasi, jejak audit, persetujuan, aset, kontak, dan data master. Ini adalah layanan fundamental yang menjadi dasar ketergantungan setiap modul domain.
Yang Dicakup
| Layanan | Deskripsi |
|---|---|
| Manajemen Pengaturan | Konfigurasi key-value dengan caching Redis dan type casting |
| Pencatatan Aktivitas | Jejak audit otomatis melalui trait HasLog |
| Alur Kerja Persetujuan | Sistem persetujuan polimorfik untuk model apa pun |
| Manajemen Aset | Penyimpanan file/media dengan disk lokal dan cloud ImageKit |
| Penyimpanan Kontak | Informasi kontak terenkripsi dengan dukungan sensor |
| Data Master | Jenis Kelamin, Suku, Agama, Lokalisasi |
Manajemen Pengaturan
Konsep
Model Setting menyediakan penyimpanan key-value terpusat dengan cache. Setiap pengaturan diidentifikasi oleh tiga serangkai (module, group, key). Nilai secara otomatis di-cast tipe saat dibaca dan di-cache di Redis selama 60 menit.
Method utama:
Setting::get('module', 'group', 'key', $default)— Baca dengan cachingSetting::updateOrCreate(...)— Tulis dengan invalidasi cache otomatis
Diagram Alir — Alur Baca/Tulis Setting
Diagram alir berikut mengilustrasikan bagaimana pengaturan dibaca, di-cache, dan ditulis:
Penjelasan:
- Saat membaca, sistem pertama-tama memeriksa cache Redis. Jika ditemukan, nilai cache (dengan type casting yang tepat) dikembalikan segera.
- Jika cache tidak ditemukan, tabel
settingsakan di-query. Nilai mentah di-cast sesuai dengan kolomtype. - Nilai yang sudah di-cast disimpan di Redis selama 60 menit, lalu dikembalikan.
- Saat menulis, semua key setting yang di-cache akan dihapus untuk memastikan konsistensi.
Pencatatan Aktivitas
Trait HasLog secara otomatis mencatat semua pembuatan, pembaruan, dan penghapusan untuk model apa pun. Trait ini menggunakan listener event Eloquent dan menyimpan entri di tabel activity_logs melalui relasi polimorfik.
Penjelasan:
- Trait mendaftarkan listener event Eloquent untuk
created,updated, dandeleted. - Saat pembaruan, field timestamp (
updated_at) dikecualikan. Hanya perubahan berarti yang dicatat. - Log mencakup pengguna yang bertindak, tipe tindakan, deskripsi, nilai lama/baru, alamat IP, dan user agent.
Alur Kerja Persetujuan
Model Approval menyediakan sistem persetujuan polimorfik. Model apa pun dapat memiliki approver yang ditentukan berdasarkan nama peran atau pengguna tertentu. Sistem mendukung jumlah persetujuan minimum yang dapat dikonfigurasi.
Resolusi approver:
- Berbasis peran: Menyelesaikan semua pengguna dengan nama Peran Spatie tertentu
- Berbasis pengguna: Ditugaskan langsung ke pengguna tertentu
Diagram Alir Data — Level 0 Konteks Sistem
Diagram Aktivitas — Siklus Hidup Manajemen Setting
Database
Tabel Kunci
| Tabel | Tujuan | Unique Constraint |
|---|---|---|
settings | Penyimpanan konfigurasi key-value | (module, group, key) |
activity_logs | Jejak audit | — (polimorfik) |
approvals | Persetujuan alur kerja | — (polimorfik) |
assets | Penyimpanan file/media | — |
contacts | Kontak terenkripsi | (type, censored) |
File Kunci
app/Models/Platform/
├── Setting/Setting.php # Penyimpanan key-value dengan cache
├── ActivityLog/ActivityLog.php # Jejak audit polimorfik
├── Approval/Approval.php # Sistem persetujuan alur kerja
├── Asset/Asset.php # Abstraksi file/media
├── Contact/Contact.php # Kontak terenkripsi
├── Gender/Gender.php # Data master jenis kelamin
├── Ethnicity/Ethnicity.php # Data master suku
├── Religion/Religion.php # Data master agama
└── Localization/Localization.php # Data master lokalisasi
app/Traits/Common/
├── HasLog.php # Pencatatan otomatis pada event
├── HasAsset.php # Relasi aset
└── HasContact.php # Relasi kontak
app/Filament/Clusters/SystemSettings/
└── Pages/
├── ManageGeneralSettings.php # Pengaturan sistem umum
└── ManageMailSettings.php # Konfigurasi email
database/migrations/v1_0_0/
└── 001_migrate_platform.php # Semua tabel platform