Skip to content

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

LayananDeskripsi
Manajemen PengaturanKonfigurasi key-value dengan caching Redis dan type casting
Pencatatan AktivitasJejak audit otomatis melalui trait HasLog
Alur Kerja PersetujuanSistem persetujuan polimorfik untuk model apa pun
Manajemen AsetPenyimpanan file/media dengan disk lokal dan cloud ImageKit
Penyimpanan KontakInformasi kontak terenkripsi dengan dukungan sensor
Data MasterJenis 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 caching
  • Setting::updateOrCreate(...) — Tulis dengan invalidasi cache otomatis

Diagram Alir — Alur Baca/Tulis Setting

Diagram alir berikut mengilustrasikan bagaimana pengaturan dibaca, di-cache, dan ditulis:

Penjelasan:

  1. Saat membaca, sistem pertama-tama memeriksa cache Redis. Jika ditemukan, nilai cache (dengan type casting yang tepat) dikembalikan segera.
  2. Jika cache tidak ditemukan, tabel settings akan di-query. Nilai mentah di-cast sesuai dengan kolom type.
  3. Nilai yang sudah di-cast disimpan di Redis selama 60 menit, lalu dikembalikan.
  4. 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:

  1. Trait mendaftarkan listener event Eloquent untuk created, updated, dan deleted.
  2. Saat pembaruan, field timestamp (updated_at) dikecualikan. Hanya perubahan berarti yang dicatat.
  3. 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

TabelTujuanUnique Constraint
settingsPenyimpanan konfigurasi key-value(module, group, key)
activity_logsJejak audit— (polimorfik)
approvalsPersetujuan alur kerja— (polimorfik)
assetsPenyimpanan file/media
contactsKontak 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