Mazmun katalogynyň hereketlendirijisi
Katalogyň hereketlendirijisi, öňdäki oýunlaryň we mahabat saýlamalarynyň özenidir: üpjün edijilerden (RGS) meta maglumatlary ýygnaýar we kadalaşdyrýar, gözleg/süzgüç/reýtingi üpjün edýär, ýurisdiksiýalara we markalara elýeterlilik düzgünlerini ulanýar, şahsylaşdyrma we mahabat oýunlaryny garyşdyrýar we soňra API arkaly çalt jogap berýär öňünden aýdyp boljak SLO.
1) Maksatlar we ýörelgeler
Çalt okamak: katalog/gözleg soralanda p95 ≤ 100-150 ms.
Hakykat we täzelik: esasy atributlaryň kepillendirilen aktuallygy (elýeterlilik, jekpotlar, provaýder statuslary).
Çeýeligi: Redaktor kolleksiýalary we mahabat slotlary.
Laýyklyk: geo/ýaş/mazmun düzgünleri, ygtyýarnama, jogapkär oýny çäklendirmek.
Multi-tenant/region: markalaryň izolýasiýasy we data residency.
Syn edilişi: berlen hiliň metrikleri, A/B, oýna/stawka öwrülişik.
2) Domen modeli (iň az)
Mazmuny:- Game - üpjün edijiniň oýny/önümi.
- Provider - RGS/studiýa.
- Variant - bir oýnuň warianty (üýtgewsizlik, çyzyklar, çäkler, serwer).
- Collection - redaksiýa/awtomatiki saýlama (mysal üçin, "Täze zatlar", "Jekpotlar").
- Placement - sahypada/slotda berkidilen pozisiýa/banner/taýl.
- Capability/Feature - oýnuň atributlary (free spins, buy feature, jackpot).
- JurisdictionRule - elýeterlilik/çäklendirmeler düzgünleri.
- Signals - özüni alyp baryş/operasiýa signallary (meşhurlyk, CTR, revenue).
- Asset - enjamlar/dykyzlyklar üçin wariantlary bolan media (nyşanlar, afişalar, demo wideolar).
Açarlar: 'game _ id' (içerki durnukly, deň däl provider_game_id), 'tenant _ id', 'region', 'locale'.
3) Ingest we kadalaşmak
Konweýer:1. Source Adapters (puller): RGS/studiýalar bilen integrasiýa (kataloglar, çyzgylar, RTP, bellikler).
2. Sanitize & Map: daşarky meýdanlary ýekeje sözlüge (ACL) ibermek, tassyklamak we aýyrmak.
3. Enrich: lokalizasiýalar, kategoriýalar, semantik bellikler, ýaş çäklendirmeleriniň reýtingleri.
4. Moderate: bazarlar boýunça mazmun baýdaklary (NSFW/dini nyşanlar/duýgur temalar).
5. Publish: 'GameUpserted/ProviderStatusChanged' → katalog proýeksiýalary.
Idempotentlik: ähli habarlar 'source _ id' + 'version _ ts'; gaýtalamak zyýanly täsirsiz işlenilýär.
Ewolýusiýa shemasy: 'schema _ version' adapterlerde + mapper migrasiýasynda.
4) Kadalaşdyrylan shema (ýönekeýleşdirilen)
json
{
"game_id": "g_3f92",
"tenant_id": "brand_eu",
"provider": { "id": "pr_evolution", "name": "Evolution" },
"title": { "en": "Lightning Roulette", "de": "Lightning Roulette" },
"capabilities": ["live","roulette","multiplier","bonus"],
"rtp": 97.3,
"volatility": "high",
"limits": { "min": 0.1, "max": 1000.0, "currency": "EUR" },
"jurisdiction": {
"allowed": ["MT","EE","DE"],
"blocked": ["NL","BE"],
"age_rating": 21
},
"assets": {
"tile": { "1x":"...", "2x":"..." },
"poster": { "web":"...", "mobile":"..." }
},
"tags": ["new","jackpot"],
"release_date": "2025-09-12",
"status": "active",
"variants": [{ "id":"v1","server":"eu-central-1","rtp":97.3 }]
}
5) Gözlemek, süzgüçler, fasetler
Indeksler: ady/sinonimleri boýunça doly tekst, 'provider', 'capabilities', 'volatility', 'rtp _ bucket', 'tags' fasetleri.
Süzgüçler: ýurisdiksiýa/sebit/dil/enjam/ýaş, diňe işjeň/kepillendirilen.
Sinonimler/stemming: ulanyjy terminleriniň kartasy ("kitaplar", "miweler", "toplar").
Ýalňyşlyklar: tolerant search (edit distance ≤ 1-2) uzynlygy çäklendirilen.
6) Reýting: signallar we formula
Signallar (mysal):- Freshness (goýberilen wagt).
- Meşhurlyk (başlangyç/sagat, özboluşly oýunçylar).
- Quality (katalogdan oýna CTR, 1/7 gün saklamak).
- Business (marketing güýçlendirijileri, geleşikler, mahabat slotlary).
- Compliance (zerur bolsa duýgur mazmun üçin ýumşak peseltmeler).
- Player-fit.
score = w1freshness + w2popularity + w3ctr + w4player_fit + w5boost
Agramlar konfigurasiýa/synaglar arkaly dolandyrylýar; ähli signallar [0; 1].
7) Şahsylaşdyrmak
Gysga ýat: iň soňky başlangyçlar we resanrlar, RYW - ulanyjy täze hereketleri derrew görýär.
Uzak ýat: oýunlaryň we oýunçynyň profiliniň embeddingleri (oýun reanrlary/üýtgewsizlik/sessiýalar).
Howpsuzlyk: şahsylaşdyrmak hiç haçan ýurisdiksiýa/ýaş kadalaryny bozmaýar.
Fallback: signallar az bolsa - bitarap reýting + redaktor kolleksiýalary.
8) Kolleksiýalar we mahabat-pleýsmentler
Kolleksiýalar:- Awto: düzgün/haýyş (mysal üçin, 'capabilities contains' jackpot 'AND release_date> = NOW () -30d').
- Redaktorlar: tertibi we möhletleri bilen el sanawy.
- Pleýsmentler: sahypalarda berkidilen pozisiýalar (hero, row-1-slot-3), A/B, segmentler/ýurisdiksiýalar boýunça nyşana almak.
- Möhletler we ileri tutulýan ugurlar: 'starts _ at/ends _ at', gapma-garşylyklaryň ileri tutulýan ugry, çap etmezden öň öňe gidişlik.
9) Laýyklyk we elýeterlilik syýasaty
Geo/ýurisdiksiýa: ýurtlaryň/sebitleriň ak/gara sanawlary, ygtyýarnamalaryň/şahadatnamalaryň barlagy.
Ýaş reýtingi: iň pes ýaş, duýduryş, gabat gelmeýän bazarlar üçin gizlenmek.
Mowzuk/nyşan: ýurt boýunça duýgur mazmunyň baýdaklary (din, alkogol we ş.m.).
Jogapkär oýun: çäkli/wagt-aut oýunçylary üçin gizlenmek/peseltmek.
Audit: sebäpler bilen elýeterliligiň üýtgemeýän üýtgemegi.
10) Köp tenant we köp sebit
Ähli maglumatlar 'tenant _ id' we 'region' bilen bellendi.
Izolýasiýa: sebitler boýunça kworumlar/ammar; kross-sebit proýeksiýalary - diňe agregatlar.
Fairness: "şowhunly" marka galanlary gijikdirmezligi üçin ingest/per tenant neşirleri üçin kwotalar.
11) Binagärlik kontury
Katalogyň Write-özeni (CP): kadalaşma + amallar outbox.
Proýeksiýalar/Read Models (EC): gözleg indeksleri, materiallaşdyrylan kolleksiýalar, meşhurlyk hasaplaýjylary.
- "Sowuk" sahypalar/şekiller üçin Edge/CDN.
- Gyzgyn soraglar üçin In-memory keşleri (key = süzgüçler + sahypa + tenant + region).
- Fiçeflaglar: reýting/kolleksiýalary goýbermezden kärendesine almak.
12) API (REST/GraphQL, mysallar)
REST
GET /v1/catalog?tenant=brand_eu®ion=EE&locale=ru
&filter=jackpot,true&sort=score_desc&page=1&size=24
→ 200 { items:[...], facets:{...}, as_of:"2025-10-31T12:10:02Z" }
GraphQL (bölek)
graphql query Catalog($tenant:String!,$region:String!,$q:String,$filters:Filters){
catalog(tenant:$tenant, region:$region, q:$q, filters:$filters){
items { gameId title provider { name } score badges assets { tile } }
facets { providers { key,count } capabilities { key,count } }
freshnessMs
}
}
Şertnamalar:
- Elmydama 'as _ of/freshnessMs', page, faset beriň.
- Şahsylaşdyrmak üçin - PII-siz sessiýanyň (RYW) markeri.
13) Signallar we maglumatlaryň akymy
Meşhurlyk: oýunlar başlananda inkrementler → minutlyk baketler → proýeksiýadaky agregatlar.
CTR/öwrülişik: pleýsmentlerde/kolleksiýalarda basmak/başlamak hasaplaýjylary.
Amal ýagdaýlary: üpjün edijileriň saglygy (RGS), jekpotlar/çäkler (wakalaryň akymy).
Marketing-güýçlendirijiler: oýunlar/kategoriýalar/üpjün edijiler üçin wagtlaýyn koeffisiýentler.
14) Synlamak we SLO
Katalogyň ölçegleri:- `catalog_p95_ms`, `catalog_p99_ms`, `error_rate`.
- 'index _ freshness _ ms' (taslamanyň gijikdirilmegi), 'ingest _ lag _ ms'.
- 'ctr', 'click-to-launch', 'collection _ coverage' (% ýygnamak).
- `lift_ctr`, `lift_conversion`, «explore vs exploit» доля.
- Dogry ulanylan geo/ýaş düzgünleri%, bloklaryň sany/sagat.
Alertler: 'ingest _ lag _ ms' ösüşi, esasy kolleksiýalarda CTR-iň düşmegi, üpjün edijiniň pese gaçmagy (berlen bellikler).
15) Öndürijilik we kesmek
Strategiýa: gyzgyn soraglar - süzgüç açary bilen 30-120 keş; şahsy bloklar - gysga TTL (10-30 s) ýa-da keshsiz.
Maýyplyk: 'GameUpserted/AvailabilityChanged/PlacementUpdated' wakalary boýunça.
Paginasiýa: signallar täzelenende kartoçkalaryň "bökmezligi" üçin durnukly kursorlar.
16) Metbugat bilen işlemek
Render profilleri: web/mobile/TV üçin ölçegler/dykyzlyklar.
Optimizasiýa: WebP/AVIF, lazy-load, plitkalar üçin sprite/atlas.
Mazmun howpsuzlygy: skaner, suw bellikleri, inline-PII gadaganlygy.
17) Synag
Adapterler we API üçin Contract/Schema tests.
Relevancy tests: altyn soraglar toplumy → garaşylýan netijeler/tertip.
Şahsylaşdyrma: offline AUC/NDCG + online A/B guardrail-metrikler bilen (oýunda wagt, goýumlar, RG-signallar).
Chaos: üpjün edijileriň zaýalanmagy, ingest partlamalary, indeksirlemegiň gijikdirilmegi.
18) Oýun kitaplary (runbooks)
1. Indeks lag> SLO: ikinji derejeli kolleksiýalary duruzmak, ingest-iň ileri tutulmagyny ýokarlandyrmak, reýtingi wagtlaýyn ýönekeýleşdirmek.
2. "Gyzyl" üpjün ediji: onuň oýunlaryny peseltmek/gizlemek, alternatiw kolleksiýalary ýokarlandyrmak.
3. API ýalňyşlyklarynyň bökmegi: keş/arka tarapy barlamak, gorag wagtlaryny açmak, sahypalaryň ululygyny azaltmak.
4. Nädogry elýeterlilik: soňky düzgüni yzyna almak, möhüm bazarlaryň "ak sanawyny" goşmak, üýtgeşmeleriň auditini geçirmek.
5. Reýtingiň çykmagy: kanar rollout (5% → 25% → 50% → 100%), CTR/konwersiýa boýunça yza gaýdyp gelmek.
19) Adaty ýalňyşlyklar
Signallary we A/B. bozmazdan ýeke-täk "jadyly" reýting formulasy
Üpjün edijileriň daşarky shemalaryny içerki model bilen garyşdyrmak (ACL ýok).
'as _ of/freshness' → "köne" katalog barada jedelleriň ýoklugy.
Ýurisdiksiýa düzgünlerini bozýan şahsylaşdyrma.
Uly sahypalar kesişmezden we kursorsyz → p99 "atylýar".
Wakalaryň ýerine indeksde we OLTP-da dual-write.
20) Azyk önüminden öň çek-sanawy
- Ähli üpjün edijiler üçin adaty meýdan we ACL sözlügi.
- Idempotent ingest, outbox/inbox, DLQ we redrave.
- Täzelik SLO bilen katalog proýeksiýalary we gözleg indeksleri.
- Dolandyrylýan agramlar bilen reýting, signallaryň çüýremegi we A/B.
- Ylalaşyk düzgünleri (geo/ýaş/tema) we üýtgeşmeleriň barlagy.
- Köp tenant/sebit: maglumatlaryň izolýasiýasy, fairness, residency.
- API 'as _ of', faset, kursor; keş we wakalar boýunça maýyplyk.
- Metrikler p95/p99, ingest/indeksasiýa, CTR/öwrülişik; alertler.
- Wakalaryň oýun kitaplary; kanareýa relizleri we fiçeflaglar.
- Degişlilik, şertnamalar, bulam-bujarlyk we şahsylaşdyrma synaglary.
Netije
Katalogyň hereketlendirijisi - oýun mazmunynyň üstünde "gözleg motory + düzgün ulgamy + vitrin". Güýçli ACL, kadalaşdyrylan maglumatlar, çalt okamak üçin proýeksiýalar, aç-açan reýting signallary, guardrail-metrler bilen şahsylaşdyrmak we berk laýyklyk katalogy önümçilikde garaşylmadyk we düzgünleşdirijiler bilen eglişiksiz durnukly we ölçelip boljak önüm ösüş güýjüne öwürýär.