Communications MVP

Summary

Communications, Ergene servisi icinde calisan ve sadece kullanicilara giden urun mesajlarini yoneten moduldur. Bu modulun amaci:
  • dogru kullaniciya
  • dogru zamanda
  • dogru urun mesajini
  • kontrollu bir gonderim politikasi ile
ulastirmaktir. Dashboard bu modulu yonetir. Ergene ise calistirir.

Scope

In Scope

  • announcement mesajlari
  • recommendation mesajlari
  • activation mesajlari
  • follow-up mesajlari
  • email kanali
  • audience bazli hedefleme
  • signal bazli tetikleme
  • gonderim loglari
  • basic frequency control

Out of Scope

  • internal ops bildirimleri
  • support/contact ekip raporlari
  • genel amacli workflow builder
  • serbest query builder
  • cok adimli automation editor
  • multi-channel orchestration
  • SMS, push, Slack

Product Definition

Communications su soruya cevap verir: “Bu kullaniciya su anda bir mesaj gitmeli mi? Gitmeli ise hangi mesaj gitmeli?” Merkezde su alanlar vardir:
  • kullanici kitlesi
  • kullanici sinyali
  • mesaj icerigi
  • gonderim politikasi
  • teslimat kaydi

Message Categories

Announcement

Yeni ozellik, yeni entegrasyon, yeni urun imkani gibi genel ama hedefli urun duyurulari. Ornek:
  • WordPress entegrasyonu yayinda
  • yeni rapor ozelligi acildi

Recommendation

Kullanicinin mevcut durumuna gore onerilen aksiyonlar. Ornek:
  • siteniz WordPress, plugin kurarak kurulumu hizlandirabilirsiniz
  • kurulum eksik, entegrasyonu tamamlayabilirsiniz

Activation

Kullanicinin basladigi ama tamamlamadigi bir urun adimini tamamlama odakli mesajlar. Ornek:
  • hesap olusturuldu ama site eklenmedi
  • site eklendi ama baglanti tamamlanmadi

Follow-up

Daha once gonderilen bir mesaj veya sunulan firsat sonrasi tekrar temas. Ornek:
  • oneriyi gordunuz ama aksiyon almadiniz
  • kurulumu baslatmadiniz

Core Model

Ilk surum icin onerilen temel entity’ler:

CommunicationMessage

Bir kullaniciya gidebilecek mesajin tanimi. Alan onerisi:
  • key
  • name
  • category
  • channel
  • subjectTemplate
  • bodyTemplate
  • ctaLabel
  • ctaUrlTemplate
  • status

CommunicationAudience

Mesajin hedeflenecegi kullanici grubu. Alan onerisi:
  • key
  • name
  • description
  • filters
  • status
Not: V1’de filters serbest query dili olmamali. Sinirli ve urun odakli alanlarla calismali.

CommunicationRule

Hangi mesajin hangi kitleye, hangi sinyal veya durumda gidecegini tanimlar. Alan onerisi:
  • key
  • name
  • messageId
  • audienceId
  • triggerType
  • triggerConfig
  • policy
  • status

CommunicationDelivery

Gerceklesen veya atlanan gonderim kaydi. Alan onerisi:
  • userId
  • messageId
  • ruleId
  • status
  • reason
  • sentAt
  • providerMessageId

Trigger Types

V1 icin yalnizca 3 tetik tipi olsun:

Manual

Dashboard uzerinden elle baslatilan gonderimler.

Signal

Sistem tarafinda uretilen belirli bir kullanici sinyali ile calisir. Ornek:
  • wordpress_detected
  • setup_incomplete
  • recommendation_available

State

Kullanicinin belirli bir urun asamasinda kalmis olmasina gore calisir. Ornek:
  • site yok
  • entegrasyon yok
  • son 7 gun pasif

Delivery Policy

V1’de politika mantigi sade olmali. Alan onerisi:
  • sendOnce
  • cooldownHours
  • maxSendCount
Temel kurallar:
  • ayni mesaj ayni kullaniciya kisa aralikta tekrar gitmemeli
  • ayni kullanici ayni anda benzer akislara dusmemeli
  • delivery kaydi karar motorunun parcasi olmali

Ergene Responsibilities

Ergene bu modulde su isleri yapar:
  • hedef kullanicilari bulur
  • signal veya state kosulunu degerlendirir
  • policy uygular
  • uygun mesaji render eder
  • email gonderimini tetikler
  • delivery log kaydi olusturur
Ergene su isleri yapmaz:
  • dashboard UI mantigi
  • serbest workflow tasarimi
  • ic operasyon bildirimi

Dashboard Surface

Dashboard yalnizca yonetim yuzeyi olmalidir. V1 ekran onerisi:

Messages

  • mesaj listesi
  • mesaj olusturma / duzenleme
  • kategori ve durum gorunumu

Audiences

  • hedef kitle listesi
  • sade filtre kurallari
  • tahmini kullanici sayisi

Rules

  • hangi mesaj hangi kitleye hangi mantikla gidiyor
  • aktif / pasif durumu

Deliveries

  • gonderim gecmisi
  • basarili / atlandi / basarisiz gorunumu

MVP Constraints

Bu ilk surumde bilincli olarak sadelik korunmali:
  • tek kanal: email
  • tek servis: Ergene
  • tek domain: user communications
  • sinirli trigger tipi
  • sinirli policy modeli

Example Flows

Flow 1: WordPress Recommendation

  • audience: WordPress kullanicilari
  • signal: wordpress_detected
  • message: WordPress plugin recommendation
  • policy: 1 kez gonder, 14 gun tekrar etme

Flow 2: Setup Activation

  • audience: yeni kullanicilar
  • state: setup_incomplete
  • message: setup completion email
  • policy: en fazla 2 kez gonder

Flow 3: Feature Announcement

  • audience: ilgili ozelligi kullanabilecek kullanicilar
  • trigger: manual
  • message: feature announcement
  • policy: 1 kez gonder

Next Decisions

Bu dokumandan sonra alinacak kararlar:
  1. entity adlari kesinlesecek mi?
  2. hangi kullanici sinyalleri V1’e girecek?
  3. audience filtreleri hangi alanlarla sinirlanacak?
  4. dashboard bilgi mimarisi hangi sirayla cikarilacak?
  5. veritabani modelleri Ergene icinde nasil adlandirilacak?