Proje: Okul Platform · Hub: Okul Platform — Domain

SchoolFilter Nedir?

Her okul için denormalize edilmiş arama ve filtreleme verisi. Arama motoruna (Typesense) beslenecek veri bu modelde tutulur.

SchoolFilterJob ayrı bir queue job’ı olarak çalışır — okul güncellendiğinde filter yenilenir.

SchoolFilter Alanları

  • school_id, campus_id, customer_id, college_id
  • school_type_id, sector_id, high_school_type_id
  • location_level_1/2/3 — İl/ilçe/mahalle ID
  • location_level_1/2/3_name/slug — İl/ilçe/mahalle adı ve slug
  • url, thumb_url — Okul sayfası URL ve thumbnail
  • is_customer — Ücretli müşteri mi
  • listing_priority — Listeleme önceliği (düşük = üstte, 9999 = sonlarda)
  • map_latitude/longitude — Harita koordinatları
  • gallery, comment, offer_form, page_view, phone_view, phone_call, fee_view — İstatistikler
  • deal_open, deal_won, deal_lost, deal_total — CRM deal sayıları
  • amount_yearly, amount_range_min/max — Yıllık ücret bilgileri
  • scholarship_count, early_registration_count — Burs/erken kayıt sayısı
  • py_user_id — Portföy yöneticisi kullanıcı ID
  • py_profile_point, py_about_quality, py_gallery_quality — Profil puan metrikleri
  • school_churn_risk_date — Churn riski tarihi
  • hidden_lead_form/phone — Form/telefon gizleme
  • discount_id, discount_rate — Aktif kampanya bilgisi

Typesense’e Gönderilen Veri (toSearchableArray)

id, name, name_no_diacritics, about, mission, vision, history, created_at,
is_customer, listing_priority,
school_type_name, url, thumb_url,
location_1/2/3_name, location_1/2/3_id, location_1/2/3_slug,
college_id, college_name

Arama Endpoint’i

GET /api/search/schoolsoptional.auth:sanctum middleware Controller: General\Search\SearchController (single action)

Churn Risky Liste

GET /api/admin/schools/churn-risky — Churn riski olan okullar