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:
- Tüm school_id’leri topla
- Toplu
SchoolProductLimitService.getLimitsForSchools(schoolIds)çağrısı - Her lead’e
lead_access_day_limitattribute’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:
LeadRepository::touchViewedAt()—customer_viewed_atgüncelleB2BEventService::handleLeadSeen()→ CIO’ya bildir
Related
- api-lead-model-detail — masked_parent_name, masked_student_name
- api-product-usage-limits — leadAccessDay limit
- api-customer-lead-access — Lead erişim kısıtları