Proje: Okul Platform · Hub: Okul Platform — Domain

Lead Maskeleme Nedir?

B2B portalda ücretsiz okullar için eski lead’lerin veli bilgileri (ad, telefon) gizlenir (maskString()). Ücretli okul veya belirli gün limiti içindeyse bilgiler görünür.

isMaskedLead() Mantığı

isMaskedLead(lead):
  1. lead.lead_access_day_limit (preloaded) var mı?
     → Varsa: isMaskedLeadByLimitDays(lead, preloaded_limit)
  2. Yoksa: SchoolProductLimitService.getLimitForSchool(school_id).leadAccessDay
     → isMaskedLeadByLimitDays(lead, product_limit)
isMaskedLeadByLimitDays(lead, limitDays):
  - isPaidSchool → false (gizleme yok, ücretli okul her şeyi görür)
  - limitDays null → false (sınırsız erişim)
  - lead.created_at < now - limitDays → TRUE (maskele!)

preloadLeadAccessDays()

Performance optimizasyonu — Lead listesinde her lead için ayrı query yerine:

  1. Tüm school_id’leri topla
  2. Toplu SchoolProductLimitService.getLimitsForSchools(schoolIds) çağrısı
  3. Her lead’e lead_access_day_limit attribute’u set et

SchoolProductLimitDTO::leadAccessDay

null → Sınırsız erişim
int → X günlük erişim (ücretsiz okul)

İlgili Mesaj

"Kısıtlı panel kullandığınız için :days günden önceki bilgi taleplerine erişim sağlayamazsınız."

touchViewedAt()

Lead görüntülendiğinde:

  1. LeadRepository::touchViewedAt()customer_viewed_at güncelle
  2. B2BEventService::handleLeadSeen() → CIO’ya bildir