Etkinlikleri ve Ödülleri Otomatikleştirme - Kurallar ve Webhooks
Oyunlaştırma iki "motora" dayanır: olaylar (kullanıcının yaptığı şey) ve kurallar (bunun için ne olması gerektiği). Bunun büyük ölçekte ve hatasız çalışması için güvenilir bir olay yoluna, bir kural motoruna, bir teslimat/ödül mekanizmasına ve dolandırıcılığa karşı sıkı korumaya ihtiyacınız vardır. Aşağıda pratik mimari, şablonlar ve kontrol listeleri bulunmaktadır.
1) Olay> Kural> Ödül akışı mimarisi
1. Ingest (event input): SDK/web, ödeme/oyun sağlayıcısından sunucu webhook'ları, API Ağ Geçidi, kuyruk/veri yolu (Kafka/Rabbit/Cloud Pub/Sub).
2. Normalizer: doğrulama, zenginleştirme (geo, cihaz, payer_flag), şema versiyonu.
3. Kural Motoru: puanlama/XP, görevleri/görevleri kontrol etme, ödül/bildirim tetikleyicileri.
4. Ödül Orkestratörü: ödülleri hesaplama, bütçe kontrolü, RG/KYC kapıları, bir "yayınlama görevi" oluşturma, günlüğe kaydetme.
5. Ödeme/Bonus Hizmeti: önbellek/bonus önbellek/freespins/kuponlar, harici webhook'lar (cüzdan, sağlayıcılar).
6. Notifier: Frekans sınırları olan push/in-app/email/instant messenger.
7. Depolama/Analiz: ham olaylar, vitrinler, A/B, uyarılar.
8. Anti-Dolandırıcılık/RG: ağız koruyucuları, sezgisel/ML, tutun ve büyük ödülleri gözden geçirin.
2) Olay modeli (minimum set)
Json
{
"event_id": "d9e8-... -5c2", "event_name": "bet", "version": "1. 2. 0", "ts": "2025-10-24T11:37:21Z," "kullanıcı": {
"id": "u_123," "geo": "TR", "platform": "android", "payer_flag": true ", risk_flags": ["vp _ nightly"]
}, "bağlam": {
"session_id": "s_789," "device_fp": "fp_...," "ip": "203. 0. 113. 24"
}, "payload": {
"game_id": "slot_wolf," "bahis": 0. 5, "kazanmak": 1. 25, "para birimi": "EUR", "sağlayıcı": "GameCo"
}
}
Базовые типы: 'login', 'session _ start/end', 'bet/spin', 'win', 'deposit', 'withdraw _ request', 'kyc _ status _ changed', 'mission _ view/join/progress/complete', 'tournament _ join/score/update/reward', 'reward _ ised','rg _ event '.
3) Kural motoru: mantık nasıl tanımlanır
Kavramlar: kurallar (if/then), bölümler, zaman pencereleri, ağızlıklar, öncelikler, sürüm oluşturma.
Bir bildirimsel kural örneği (YAML stili):yaml rule_id: r_points_winmult_v2 ne zaman:
event_name: bahis filtreleri:
- yük. bet> = 0. 2
- kullanıcı. geo in ["TR ", "BR"," PE"]
- şimdi "2025-11-01'ile" 2025-11-30 "arasında
Skor:
formül: "zemin ((yük). Kazan/yükle. Bahis) 3) "
büyük harfler:
per_bet: 50 per_minute: 200 per_day: 1500 reward_trigger:
on_progress:
eşik: [100, 300, 800]
ödül: [{type: "fs", value: 10}, {type: "bonus_cash," value: 2}, {type: "loot", rarity: "rare"}]
korkuluklar:
kyc_min_level: 2 rg_limits_ok: gerçek budget_pool: "nov_season"
budget_soft_cap: 80000 meta:
versiyon: "2. 0"
deney: "scoring_ab_2025w45"
4) Webhooks: sunucu-sunucu entegrasyonu
4. 1. Giden webhook'lar (sizden sağlayıcılara/cüzdana)
Yöntem: 'POST https ://partner. örnek/ödemeler '
Подпись: 'X-Signature: HMAC-SHA256 (secret, body)' + 'X-Request-Id' (idempotency).
Retrai: üstel geri alma, 'max _ retries = 8', jitter, DLQ.
Idempotency: aynı 'X-Request-Id' tekrarlayın - ortak aynı 'payout _ id/status'ile cevap vermelidir.
Yük örneği:Json
{
"request_id": "rid_7f5...," "user_id": "u_123," "ödül": {"tip ": "nakit"," miktar": 10. 00, "para birimi":" EUR"}, "sebep": "milestone_300_points," "kyc_level": 2 ", kısıtlamalar": {"bahis": 0 ", expiry_at": "2025-12-01T00: 00: 00Z"}
}
4. 2. Gelen webhook'lar (size)
Yalnızca IP/MTLS listelerine izin verin, HMAC ve imza ömrünü kontrol edin ('X-Timestamp', ± 5 dakika).
"Ham" gövde + başlıklarını Denetim Mağazasında (WORM) saklayın.
Herhangi bir çift/tekrar - günlüğe karşı idempotency anahtarını kontrol edin.
5) Güvenilirlik: Çift ödeme olmadan "eşit" akış
En az bir kez yutmak + idempotent işleyicileri - altın standart.
Idempotency tuşu: Puanlama için 'hash (event_id + user_id + rule_id)'; Ödül vermek için ayrı anahtar 'reward _ task _ id'.
Tam olarak bir kez anlambilim sadece mantıksal olarak gerçekçidir (idempotence yoluyla), taşıma değildir.
Olayların sırası: mağaza 'event _ ts've' ingest _ ts '; Yeniden sıralama penceresini kullanın (örneğin, 60 saniye) ve 'user _ id' tuşuyla kuyruktan tekrar oynatın.
Ölü Harf Kuyruğu (DLQ):- Oraya kalıcı bir hata içeren mesajlar yazıyoruz (geçici şema geçmedi, imza geçersiz, bütçe kapalı).
- Yeniden işleme/bırakma/düzeltme şema düğmeleri ile DLQ inceleme hizmeti.
6) Bütçeler ve marj koruması
Bütçe havuzları: 'Nov _ season', 'daily _ sprint', 'vip _ weekend'.
Kotalar: Yumuşak/sert kapak, "devre kesici" - bütçenin %90'ına ulaştığında, büyük ödülleri devlete aktarır.
Tek maliyet: 'Aktif/Payor Başına Ödül ve Bonus Maliyeti', Net Yükseltme.
Öncelikler: RG ve uyumluluk promosyondan daha önemlidir - çatışma durumunda ödül ertelenir.
Bütçe denetimi örneği (SQL taslağı):sql
SELECT pool_id, SUM (amount) AS spent, budget AS limit, SUM (amount )/budget AS fill
reward_ledger'dan
WHERE pool_id =: pool AND date (ts) = current_date
pool_id GÖRE GRUP, bütçe;
7) RG/KYC/Geo kapıları (oyuncu güvenliği ve uyumu)
KYC: Önbellek/büyük ödüller için minimum L2; Freespins L1 ile geçerlidir.
RG: Depozito limitlerini kontrol etme, kendini dışlama, soğuma - ödüller kısıtlamalar kaldırılana kadar dondurulur.
Geo: Her ödül kuralı/havuzu için izin verilen ülkelerin listesi.
Eşik uyarıları: Bireysel hesaplarda "neredeyse ulaşılan" keskin büyüme = tutmak ve gözden geçirmek için bir neden.
8) Dolandırıcılıkla mücadele kuralları ve telemetri
Bir oran/dak/saat/gün, bahislerin minimum varyansı, "ideal" kalıpların yasaklanması.
Teknik sinyaller: başsız, tekrarlanan device_fp, proxy alt ağları.
Anomaliler: "Puanlar/bahisler've" puanlar/dak "- 99-persentil üzerinde uzun" kuyruklar ".
En iyi kazananlar için bekletme ve inceleme: otomatik KYC kontrolü + manuel inceleme.
9) İzleme, metrikler ve uyarılar
SLO/SLA:- Ingest p95 ≤ 250 ms; Kural işleme p95 ≤ 150 ms; Liderlik kurulu güncellemesi ≤ 2 s; Ödül sayısı ≤ 60 s.
- Hata bütçesi <0. %1 etkinlik/gün.
- Deneylerde SRM (trafik eğriliği), DLQ büyümesi, HMAC doğrulama imzası düşüşü, bütçe aşımı, idempotent yinelenen dalgalanma.
- Olaylar/s, gecikme, hata toleransı;
- Huni: olay> kural> reward_task> reward_issued;
- Maliyet: Aktif Başına Ödül/Bonus, Net Uplift;
- Kalite: dolandırıcılık bayrakları, KYC blokları, RG tetikleyicileri.
10) Sürüm ve göçler
Her kural sürüm ('kurallarıdır. versiyon ').
Yeni bir sürüm olmadan etkin kuralı düzenleyemezsiniz; Ficheflag ve "pürüzsüz ısıtma" kullanın (%10 - %50 - %100).
Şema kaydı yoluyla olayların şeması; uyumsuz değişiklikler - yalnızca ana sürüm.
11) A/B otomasyon testleri (kısa)
Ünite - kullanıcı; Yapışkan-atama; tabakalaşma (payer/geo/platform).
Girişimi ortadan kaldırmak için ayrı afişler veya noktaların normalleştirilmesi.
Birincil: participation_net, tamamlama, Net ARPPU; Korkuluklar: şikayetler/1k, dolandırıcılık bayrakları, RG tetikleyicileri.
CUPED ve varyans azaltma için eşdeğişlidir.
12) Örnekler: kuraldan konuya
12. 1. Mikro ödül ilerleme tetikleyicisi
Json
{
"type": "reward_task. Created", "reward_task_id": "rt_456," user_id" ": "u_123," "origin": {"rule _ id ":'r _ points _ winmult _ v2 "," threshold": 300}," reward ": {" type ":" bonus_cash, "" amount ": 2," currency ":" EUR"," betting ": 15}," pool_id": "nov_season, "" status ":" pending "," "created_at": "2025-10-24T11:38:30Z"
}
12. 2. Cüzdan için giden webhook
POST/cüzdan/kredi
X-Request-Id: rid_7f5...
X-Zaman Damgası: 1730061700
X-İmza: sha256 = 7b9a...
{"user_id":"u_123," "miktar": 2. 00, "currency":" EUR", "reason ": "rule: r _ points _ winmult _ v2"}
Success - 'reward _ task' = 'succeed've' reward _ ledger'a yazma.
Başarısızlık (5xx/timeout) - aynı 'X-Request-Id'ile yeniden ödeme.
Dip (4xx) - DLQ + manuel ayrıştırma.
13) Kasalar ve masalar (eskiz)
sql
-- ödül dergisi
TABLO OLUŞTUR reward_ledger (
ID BIGSERIAL PRIMARY KEY, TEXT UNIQUE, TEXT, TEXT, type TEXT, value NUMERIC (18,2), currency TEXT, cost NUMERIC (18,2) DEFAULT 0, -- P&L status TEXT, -- succceed/failed/held TIMESTAMPTZ, TIMESTESTAMPP TZ
);
-- duygusuzluk
uniq_reward_task üzerinde benzersiz indeks reward_ledger oluşturma (reward_task_id);
-- bütçe
TABLO OLUŞTUR reward_budget (
pool_id TEXT PRIMARY KEY, budget NUMERIC (18,2), spent NUMERIC (18,2), period DATE
);
14) Güvenlik ve gizlilik
HMAC imzaları, MTLS, izin listesi IP'si.
Aktarım/dinlenmede şifreleme, anahtar döndürme, kasada sırlar.
Yükteki verileri en aza indirme (PII ayrı olarak, belirteç bağlantısı ile, TTL).
Denetim günlükleri değişmez (WORM).
Saklama ve elden çıkarma politikası (unutulma hakkı, veri tekilleştirme güvenliği).
15) Kontrol listesini başlat
- Olay şemaları ve kayıt defteri, webhook sözleşmeleri (imzalar, TTL).
- Kuyruklar, retrays, DLQ, idempotent işleyicileri.
- Kurallar Caps/korkuluklar, KYC/RG kapıları.
- Bütçe havuzları, devre kesiciler, taşma uyarıları.
- SLO panoları + ödül hunisi.
- A/B filtreleri ve SRM izleme.
- Olayların Runbook (tekrar, donma, manuel sorunu).
16) Mini Kasa (Sentetik)
Oyun sağlayıcılarından ve cüzdandan bağlı olaylar; Ağız koruyucuları ile "kazan/bahis" puanlama dahil.
Webhooks HMAC imzaladı, her 2 saatte bir gözden geçirme ile 8 deneme, DLQ kadar retrays.
4 hafta boyunca: işlem gecikmesi p95 180 ms; DLQ <%0,06; Mükerrer ödemeler 0; Dolandırıcılık bayrakları − 0. 4 s; ΔParticipation_net + 6,3 п. п.; Δ ARPPU (net) + 2,1 € при Ödülü ve Bonus/Aktif + 0,7 €.
Sonuç: Yerel bütçe havuzları ile yeni jeoya ölçeklendirme kuralları.
Ödülleri otomatikleştirmek "freespins ile itme göndermek" değildir. "Bu bir mühendislik sistemi: olayların güvenilir bir şekilde iletilmesi, kuralların sıkı bir şekilde uyarlanması, idempotency ve imzalar, bütçe uzmanları, KYC/RG kapıları, dolandırıcılıkla mücadele ve izleme. Bu çerçeveyi bir gün inşa edin - ve herhangi bir görev, turnuva ve "yağma anı" tahmin edilebilir, zamanında ve olumlu bir net etkiyle çalışacaktır.