Proje: Okul B2B App · Hub: Okul B2B App — Decisions

Okul Yorumları — MVP Kararı

B2B kurumsal kullanıcılar, okullarına bırakılan yorumları görüp cevaplayabilecek. Sub-screen olarak profil menüsü üzerinden erişilir.

Karar

  • Yerleşim: app/school-comments/index.tsx — profil sayfasına eklenen “Yorumlar” menü öğesi (router.push('/school-comments')).
  • MVP scope: Liste + cevap yazma/güncelleme/silme. Statistics endpoint’i (per-okul toplam + bekleyen sayıları) şimdilik kullanılmıyor — ileride dashboard’a eklenebilir.
  • Default filtre: “Bekleyen” — cevap bekleyen yorumlar otomatik görünür. Üstte segmented filtre (Bekleyen / Tümü / Cevaplandı) + “Bekleyen” yanında badge.
  • Filtre stratejisi: Client-side filter (c.reply == null). Backend’te “has_reply” filtresi yok; bu MVP için kabul edilebilir sınırlama.

Gerekçe

  • API zaten hazır (Customer\SchoolCommentController). Backend değişikliği istemedik.
  • Statistics endpoint MVP dışı — ekran başına 1 endpoint (liste) yeterli.
  • Client-side filter dezavantajı: bir sayfada çoğu yorum cevaplanmışsa “Bekleyen” sekmesi seyrek görünebilir. Pratikte yorum hacmi düşük olduğu için sorun değil. Yüksek hacimde filter[has_reply]=0 eklenmesi gerekir.

Alternatifler

  1. Ana tab olarak eklemek: Tab bar 4 sekmeye çıkardı — Gallery/Leads/Content/Profile düzeni bozulurdu. Reddedildi.
  2. Stats’la birlikte MVP: Fazla iş, her okul için ayrı kart gerekir. İkinci sürüme ertelendi.
  3. Yeni yoruma push notification: Backend webhook/trigger gerekiyor. Gelecek sürüm.

Teknik Notlar

  • Endpoint: GET /customer/school-comments?include[]=school&include[]=reply&include[]=user&include[]=userType
  • Reply: POST /customer/school-comments/{id}/reply{comment: string|null}. Boş body mevcut cevabı siler.
  • Liste sadece parent: Backend repo whereNull('replied_id') hardcoded — cevap olan SchoolComment kayıtları listede görünmez, sadece parent yorumlar döner. Parent’ın reply ilişkisi yüklendiğinde nested olarak geliyor.
  • Approved only: Liste sadece status=1 (onaylı) yorumları döner. Rejected/pending admin yorumları customer’a görünmez.