Turnir və missiyalar modulu: hadisələr, reytinqlər, mükafatlar
1) Biznes məqsədləri və fəaliyyət növləri
Məqsədlər: saxlama artımı (D1/D7), ARPPU, sessiyaların dərinliyini artırmaq, yeni oyunların və bazarların təşviqi.
Formatlar:- Turnirlər: xal/uduşlar/multiplikatorlara görə, sprintlər (30-60 dəq), gündüz, mövsümi.
- Missiyalar/axtarışlar: mərhələlərdə irəliləyişlə və mükafatlarla (N spin oynayın, X qazanın, Y provayderini sınayın).
- Aparıcı bordlar: qlobal, bazarlar/oyunlar/bahislər, özəl (dostlar/VIP).
- Jackpotlar/studiyaların reytinqləri: «həftənin ən yaxşı provayderləri», «çoxluq ovu».
KPI: iştirak ≥ 12-25% aktiv auditoriya, 10-20% promo gəlir payı, şikayətlər <0. İştirakçıların 5% -i mükafat fondu planı ≤.
2) Memarlıq və məlumat axını
Komponentlər
1. Events Gateway → game-gateway/provayderlərdən oyun hadisələrinin (spin, bet, win, round_end) qəbulu.
2. Rules Engine → turnirlərin/missiyaların qaydalarına uyğun gəlir, xal (idempotent) alır.
3. Leaderboard Service → eynək yığır, üst/kəsik saxlayır, çeşidləmə və tay-breykləri dəstəkləyir.
4. Progress Service (missiyalar) → vəzifələrin/mərhələlərin vəziyyəti, aralıq mükafatların verilməsi.
5. Rewards Service → hesablama və təhlükəsiz ödəniş (cüzdan vasitəsilə: cash/bonus/fs/points).
6. Admin/Studio UI → yaradılması, planlaşdırılması, qabaqcıl iqtisadiyyat, simulyasiya.
7. Realtime/WS → Liderbord yeniləmələrinin, tərəqqinin, bildirişlərin yayımlanması.
8. Anti-Abuse → limitləri, risk siqnalları, antifrod/bot meneceri ilə inteqrasiya.
9. Storage/Cache → KV/Redis üçün qaynar top, ALTP üçün faktlar, DWH üçün analitik.
Axın (e2e)
`game_event → gateway → rules_match → points → leaderboard_update → (progress_update) → notify → rewards_at_close → wallet_postings`
3) Hadisə modeli (minimum sahə)
json
{
"event_id": "e_9f2",  "ts": "2025-10-23T17:41:26Z",  "user_id": "u_123",  "market": "DE",  "brand": "X",  "game": {"id":"g_77", "provider":"PragmaticPlay", "type":"slot"},  "bet": {"amount_minor": 100, "currency":"EUR"},  "win": {"amount_minor": 250, "multiplier":2. 5},  "round": {"id":"r_abc","status":"ended"},  "device": {"platform":"mobile","asn":"mno"},  "trace_id": "t_…"
}Nəqliyyat - Kafka/HTTP, idempotent emalı (dedupe by 'event _ id'), provayder/oyun şlüzünün imzası (HMAC).
4) Turnir qaydaları və tapşırıqların konstruktoru
Deklarativ sxem (YAML nümunəsi):yaml id: t_october_sprint window: {start: 2025-10-25T18:00Z, end: 2025-10-25T19:00Z, tz: Europe/Kyiv}
scope:
markets: [DE, SE]
providers: [PragmaticPlay, Hacksaw]
scoring:
formula: "points = min(win. amount/bet. amount, 50) 100" # çoxluqda min_bet_minor: 50 eligible_games: ["g _"]
leaderboard:
type: «best_n_rounds» # ən yaxşı N turlarını toplayın n: 20 tiebreaker: [«highest _ single _ multiplier»», earliest _ finish _ ts»]
rewards:
pool: {currency: EUR, total_minor: 1000000}
distribution: «ladder» # pilləkən, top 100 anti_abuse:
min_round_duration_ms: 800 max_rps_per_user: 0. 5 exclude_asn_categories: ["hosting", "proxy"]yaml mission_id: m_halloween steps:
- id: s1 goal: {type: "spin_count", game_type: "slot", count: 50}
reward: {type: "freespins", value: 10, game: "g_66"}
- id: s2 goal: {type: "win_multiplier", min: 10}
reward: {type:"bonus", amount_minor: 500}
completion_reward: {type: "points", amount: 1000}5) Reytinqlər və hesablama alqoritmləri
Əsas modellər
Xal miqdarı: xətti/loqarifmik/hər raund üçün kapla.
Ən yaxşı N raundları: «pay-to-grind» azaldır, «sprint» dinamikasını saxlayır.
Maksimum çarpan (xWin): valyutaları və dərəcələri normallaşdırır.
MMR/reytinq sistemi: PvP/dostluq rəqabət cədvəlləri üçün ELO-oxşar.
Tay-breyklər
1. 'highest _ single _ multiplier' → 2) 'fewest _ rounds' → 3) 'earliest _ finish _ ts' → 4) 'user _ id' leksikoqrafik (qaydalarda qeyd olunur).
Performans
Redis Sorted Set 'ZADD key score member' -də top K (məsələn, 10k) saxlayın.
«Ən yaxşı N raundları» üçün: istifadəçi və məbləğ başına ən son N min-heap saxlayın, «uçuşda» yeniləyin.
Periodik olaraq snapshot (hər 30-60 s) ALTP/obyekt.
6) Mükafatlar və ödənişlər
Mükafat növləri: cash/bonus/free spins/points/əşyalar/biletlər.
Qaydalar:- Yalnız finaldan sonra verilir (5-10 dəqiqə şikayət pəncərəsi).
- Bütün ödənişlər Rewards Service → Wallet (ledger) vasitəsilə: double-entry, idempotentlik 'reward _ id'.
- Missiyaların aralıq mərhələləri üçün - «yumşaq» mükafatların verilməsi (FS/points), cash - zəncirin sonunda.
- KUS/məsuliyyətli oyun: hesabı bloklayarkən - yoxlanmadan əvvəl mükafatın tutulması/dondurulması.
- Fixed ladder: əvvəlcədən təyin edilmiş mərhələlər (1-ci yer 30%, 2-ci 20%,...).
- Proportional: puanlar üzrə hovuzdan pay, lakin yerində cap.
- Ticket-based: missiyalar «bilet», bilet (şəffaf RNG) püşkatma verir.
7) Anti-sui-istifadə, dürüstlük və uyğunluq
Eligibility filtrləri: min dərəcə/raund müddəti, «0-bet» istisna, təkrar yenidən çatlayan, konveyerdə «mikro dərəcələr».
Bot siqnalları: headless-UA, anormal periodiklik, anormal stabil RPS, proxy-ASN → gizli çağırışlar/dondurma eynək.
Dedup/idempotentlik: 'event _ id' üzrə hadisələr, 'score _ id' üzrə hesablamalar.
Audit trail: Liderbord, seed RNG (ticket-püşkatma üçün), qaydalar versiyası, hash hesablamalar.
Hüquqi: bazar qaydaları/məhdudiyyətləri, yaş, özünü istisna.
8) Turnirin iqtisadiyyatı
Budget guardrails: hovuzun yuxarı sərhədi + dinamik «safety valve» (həddindən artıq istiləşmə zamanı aralıq bonusların azaldılması).
Elastiklik: marjanı saxlamaq üçün cash əvəzinə points/FS-də mükafatların yerdəyişməsi.
Geri ödəmə əmsalları: mükafat fondu/turnir oyunları seqmentindən daxilolmalar; hədəf 8-15%.
Administrasiyada simulyator: tarixi hadisələrin qaçışı → ödəniş/iştirak proqnozu.
9) API-müqavilələr (sadələşdirilmiş)
Aktiv turnirlər/missiyalar alın
http
GET /v1/contests? market=DE&brand=X
→ 200 [{"id":"t_october_sprint","start":"…","end":"…","type":"xwin","status":"live"}]Oyun hadisəsi (ingest)
http
POST /v1/events
{"event_id":"e_9f2", "...": "..."}
→ 202 {"accepted":true}Liderbord (Top-K və istifadəçi mövqeyi)
http
GET /v1/leaderboards/t_october_sprint? top=100&me=u_123
→ 200 {"top":[{"pos":1,"user":"u_9","score":18400},...],    "me":{"pos":342,"score":5600,"delta":+200}}Missiya Tərəqqi və Mükafat
http
GET /v1/missions/m_halloween/progress? user=u_123
→ 200 {"steps":[{"id":"s1","done":true},{"id":"s2","done":false}],"reward_ready":true}
POST /v1/rewards/claim
{"context":"mission","id":"m_halloween","step":"s1"}
→ 201 {"status":"granted","reward_id":"rw_77"}10) Saxlama və miqyaslandırma
Hot Way: üst və tərəqqi üçün Redis (Sorted Sets/Hash); «Səs-küylü» açarlara TTL, 'contest _ id' üzrə şarding.
Həqiqət: OLTP (Postgres/MySQL) - xal/tərəqqi/ödəniş faktları (WORM-şəkillər).
Növbələr: Kafka - hadisələr axını; Regionlar/brendlər üzrə Consumer qrupları.
Cashes: qısa TTL 1-5 s; ictimai top üçün stale-while-revalidate (CDN vasitəsilə).
WebSocket: realtime altında ayrı bir klaster/hovuz, batch-poçt və rate-limit mesajları.
11) Müşahidə və keyfiyyətə nəzarət
SLI/SLO:- `leaderboard_update_latency_p95 ≤ 250мс`
- `events_ingest_success ≥ 99. 9%`
- `rewards_grant_success ≥ 99. 9%`
- `ws_push_rtt_p95 ≤ 120мс`
- ədalətsizlik şikayətləri <0. 5% iştirakçılar.
- rate hadisələr/iştirakçılar, unikal oyunçular, bahis/oyun paylanması, orta çarpan; 'grant _ errors', 'dedupe _ hits'.
- Tracks: ingest → rules → score → LB update → reward; tags 'contest _ id', 'rule _ id'.
- Log: JSON 'trace _ id', PII qadağası; Audit üçün WORM.
12) Hadisələr və runbook 'i (qısaca)
A. Liderbord gecikməsi (lag> 2s)
Tədbirlər: Kafka istehlakçılarını artırmaq, partiyanın «qaynar açarını» (repartition) azaltmaq, batching update-i işə salmaq.
Müvəqqəti: realtime animasiyalarını dondurmaq, «~ 1-2s gecikmə» göstərmək.
B. Mükafatların verilməsində səhvlər
Fəaliyyət: yeni 'grant' dayandırmaq, snapshot yoxlamaq, idempotent 'grant' yenmək; Lobbidə status-yeniləmə.
C. Sui-qəsd (proxy ASN)
Fəaliyyət: eligibility gücləndirmək, görünməz çağırış daxil, müvəqqəti şübhəli seanslar, post-yoxlama hesab deyil.
13) UX və lokalizasiya
Real vaxt: «canlı» göstəricisi, hamar delta eynəkləri, mövqe və növbəti yerə olan məsafə.
Şəffaf qaydalar: formula/tay-break/məhdudiyyətlərə çıxış.
Notifikasiyalar: «5 dəqiqə qalıb», «sən ilk 50-liydəsən», «mükafat mövcuddur».
Lokalizasiya/hüquqi mətnlər: bazarlar, saat zonaları (Avropa/Kyiv və yerli iştirakçılar).
14) Təhlükəsizlik və məxfilik
Açıq top oyunçularının təxəllüsləri; default PII gizlətmək.
Vebhuk/hadisə imzaları, mTLS; edge üzərində «cash-poison» qorunması.
Rate-limit API, cash-basting qorunması, nəzarət 'idempotency _ key'.
GDPR: hadisələrin saxlanma müddəti, yoxlamaya zərər vermədən silinmə (anonimləşdirmə) hüququ.
15) Test və simulyasiya
Qaydaların və iqtisadiyyatın validasiyası üçün tarixi hadisələrin təkrarlanması.
Yük: başlamazdan əvvəl 30-120 ilə bursts; soak 2-4 saat.
Property-based: invariantlar («verilən mükafatların məbləği ≤ büdcə», «tay-breyk determinated»).
A/B: müxtəlif nöqtə formulları, pilləkən dərinliyi, missiya formatı.
16) Prodakşn-hazırlıq yoxlama siyahısı
- Deklarativ qaydalar (versiyalar, imzalar), iqtisadiyyat simulyatoru.
- İdempotentlik: 'event _ id', 'score _ id', 'reward _ id'; Inbox/Outbox.
- Tai-break qaydaları, çeşidləmə determinizmi ilə sabitdir.
- Liderbord: Redis Top K + Snapshot; anti-fırtına (jitter, coalescing).
- Anti-abuse: eligibility, botları/ASN, velocity-limitləri.
- Double-entry vasitəsilə Rewards → Wallet; cash əvvəl KYC-çek.
- Müşahidə: SLI/SLO, daşbordlar, alertlər; WORM auditi.
- DR/Failover: multi-AZ, backaps/restore, «freeze & finalize» ssenari.
- Lokalizasiya, lisenziyalar, ictimai qaydalar və consent.
- Runbook 'və lag/qrant səhvləri/pop-up botlar, rabitə şablonları.
Xülasə
Turnirlərin və missiyaların uğurlu modulu hadisə şinidir + müəyyən edilmiş qaydalar + sürətli lider bordlar + təhlükəsiz ödənişlərdir. Ciddi tay-breyklər, anti-sui-istifadə, iqtisadi simulyator və SLO müşahidə əlavə edin, bütün əməliyyatları idempotent və auditoriya ilə saxlayın - və oyunçular, tənzimləyicilər və dəstək komandası ilə mübahisəsiz iştirak və gəlir artıran bir vasitə əldə edəcəksiniz.
