Proje: OkulUp API · Hub: OkulUp API — Domain

OkulUp API — Feature Flag Sistemi

Nasıl Çalışır

school_settings tablosundaki features JSON kolonu, her okul için hangi modüllerin aktif olduğunu saklar. Middleware route bazında kontrol eder.

// routes/api.php
Route::middleware('feature:assignments')->group(function () {
    Route::get('/assignments', ...);
    ...
});
 
// Middleware: CheckSchoolFeature
// feature:xxx → SchoolSetting::isFeatureEnabled('xxx')

Varsayılan Feature Durumları

Feature KeyDefaultAçıklama
messagingtrueMesajlaşma
broadcast_messagingtrueToplu mesaj
attendance_reportstrueDevam raporu ve export
payment_summarytrueÖdeme özeti
academic_reportstrueAkademik özet
gallerytrueGaleri
appointmentstrueRandevular
trackingtrueGünlük takip (bebek/erken çocukluk)
assignmentsfalseÖdev yönetimi (varsayılan KAPALI)
meal_menutrueYemek menüsü
document_requeststrueBelge talepleri

Not: assignments feature flag’i varsayılan olarak KAPALI. Yeni okullar için açılması gerekiyor.

SchoolSetting Model Mantığı

// DEFAULT_FEATURES ile DB'deki overrides merge edilir
getResolvedFeatures(): array   // merge(DEFAULT, db_features)
getResolvedPolicies(): array   // merge(DEFAULT, db_policies)
getResolvedBranding(): array   // school_display_name = null ise school.name kullanılır
getResolvedSupport(): array    // support_contact_source = 'platform' → config('kampus.support')

School::getOrCreateSettings() — settings yoksa DEFAULT’ları ile otomatik oluşturur.

Policies (Davranış Ayarları)

PolicyDefaultAçıklama
message_reply_defaultteacher_onlyMesajlara kim cevap verebilir
allow_parent_direct_messagetrueVeli direkt mesaj gönderebilir mi
show_teacher_read_receipts_to_parentfalseOkundu bildirimi veliye görünür mü
allow_teacher_payment_visibilityfalseÖğretmen ödemeleri görebilir mi
support_contact_sourceschoolDestek iletişim kaynağı: school

Branding

KeyDefault
primary_color#FF5F1F
secondary_color#1F2937
logo_urlnull
school_display_namenull (→ school.name)