Segmentler
Dinamik ve statik segmentler, koşul AST'si (all/any/none), alan ve operatör listesi, davranış ve konum koşulları, önizleme/tahmin uçları ve kampanya kullanımı.
Segment, kullanıcıları (ve aboneliklerini) seçen kayıtlı bir koşul ağacıdır. Dinamik segmentler her gönderimde yeniden hesaplanır; statik segmentler POST …/segments/{id}/refresh ile ya da içe aktarmayla sabitlenir. Aynı koşul dili POST /v1/notifications içindeki target.filters, POST …/users/search ve in-app/journey kitlelerinde kullanılır.
Koşul dili
{
"all": [
{ "field": "tag", "name": "plan", "op": "eq", "value": "pro" },
{ "field": "last_active_at", "op": "within_days", "days": 30 },
{ "any": [
{ "field": "event", "name": "purchase", "op": "count_gte", "value": 3, "days": 90 },
{ "field": "property", "name": "ltv", "op": "gt", "value": 500 }
] },
{ "none": [ { "field": "message", "event": "opened", "op": "has", "within_days": 7 } ] }
]
}Gruplar: all (VE), any (VEYA), none (DEĞİL); iç içe geçebilir (en fazla 50 koşul/grup, derleyici derinliği sınırlar). Her koşul field, op ve gerekiyorsa name/value/days taşır.
Alanlar
field | Açıklama | Ek anahtarlar |
|---|---|---|
tag | Kullanıcı tag'i | name |
property | Tiplenmiş özellik (sayısal karşılaştırma) | name |
language, country, timezone | Abonelik/kullanıcı meta verisi | — |
device_type, device_os, app_version | Cihaz; app_version semver karşılaştırır | — |
channel, subscription_status | Abonelik kanalı/durumu | — |
first_session_at, last_active_at, created_at | Zaman alanları | days |
session_count, usage_duration | Oturum sayısı / toplam süre | — |
event | Olay sayısı (user_event_counts) | name, days, where ({ key, value } özellik filtresi) |
message | Mesaj davranışı: sent, delivered, failed, bounced, opened, clicked | event, within_days, message_id, campaign_id, journey_id, channel |
in_app | In-app davranışı: impression, clicked, dismissed | event, within_days, in_app_message_id |
segment | Başka segmentin üyeliği | value (segment id) |
location | Yarıçap içinde (konum) | lat, lng, radius_km, days |
Operatörler
| Grup | Operatörler |
|---|---|
| Karşılaştırma | eq, neq, exists, not_exists, contains, starts_with, gt, lt, gte, lte, in, not_in, between |
| Zaman | within_days (son N gün içinde), before_days (N günden eski) |
| Sürüm | semver_gte, semver_lt (app_version) |
| Olay sayısı | count_gte, count_lte, not_performed (event) |
| Davranış | has, has_not (message, in_app) |
| Konum | within_radius (location) |
Alan × operatör geçerliliği derleyicide denetlenir; uyumsuz birleşim 400 HS_VALIDATION_ERROR döner. Şema: API → şemalar.
API
| İşlem | Uç | Kapsam |
|---|---|---|
| Liste | GET /v1/apps/{app_id}/segments?q=&cursor= | segments:read |
| Oluştur / güncelle / sil | POST, PATCH …/{id}, DELETE …/{id} (kullanımda olan segment 409) | admin |
| Önizleme (kaydetmeden) | POST …/segments/preview { definition } → sayım + örnek kullanıcılar | segments:read |
| Tahmin | POST …/segments/{id}/estimate → önbellekli sayı (kanal kırılımı) | segments:read |
| Statik yenileme | POST …/segments/{id}/refresh | admin |
| Kullanıldığı kampanyalar | GET …/segments/{id}/campaigns | segments:read |
Örnekler: API → Segmentler. Kampanya ve bildirimde included_segments / excluded_segments; segment sayımı e-posta/SMS kanalları için kanal bazında gösterilir.
Performans ve davranış
- Koşullar parametrik SQL'e derlenir; olay sayıları
user_event_counts(kullanıcı × olay × gün) tablosundan okunur, ham olay taraması yapılmaz. - Tahminler kısa süre önbelleklenir (dashboard sayacı); kesin kitle gönderim anında hesaplanır ve
recipients_estimateolarak döner. - Segment koşulu abonelik durumuna bakmaz; gönderimde yalnızca
activeabonelikler ve kanal/tercih/suppression filtreleri uygulanır. - Dashboard Kitle → Segmentler görsel builder, canlı sayım ve kampanya kullanımını gösterir; Kullanıcılar sayfasında aynı builder ile ad-hoc filtre uygulanır.
Kullanıcılar, alias'lar ve abonelikler
Pushizo kimlik modeli — end user, external_id ve özel alias'lar, abonelikler (cihaz, e-posta, telefon), tag/özellik/deltas, anonim → kimlikli birleştirme, olaylar ve public API uçları.
Kategoriler, kullanıcı tercihleri ve tercih merkezi (Faz 12)
Kullanıcıların hangi mesaj kategorilerini hangi kanaldan almak istediğini yönetir; kategoriye kapalı kullanıcıya o kategorideki kampanya/mesaj gönderilmez. Tasarım kararları: ADR-0019 §4, §13. Ortak kod:…