Kontent katalogi
Katalog dvigateli - bu oldingi o’yinlar va promo-tanlovlarning yadrosi: u provayderlardan meta ma’lumotlarni to’playdi va normallashtiradi (RGS), qidirish/filtrlash/reytinglashni ta’minlaydi, yurisdiksiya va brendlar bo’yicha foydalanish qoidalarini qo’llaydi, shaxsiylashtirish va promo-pleysmentlarni aralashtiradi, so’ngra API orqali tezkor javoblarni beradi bashorat qilinadigan SLO.
1) Maqsad va prinsiplar
Tez o’qish: p95 ≤ 100-150 ms katalog/qidiruv so’roviga.
Haqiqat va yangilik: asosiy atributlarning kafolatlangan dolzarbligi (qulaylik, jekpotlar, provayder maqomlari).
Moslashuvchanlik: tahririyat kolleksiyalari va reklama slotlari.
Muvofiqlik: geo/yosh/kontent qoidalari, litsenziya, mas’uliyatli o’yinni cheklash.
Ko’p tenant/mintaqa: brendlarni izolyatsiya qilish va data residency-ga rioya qilish.
Kuzatish: berish sifati metrikasi, A/B, o’yinga/stavkaga konversiya.
2) Domen modeli (minimal)
Mohiyati:- Game - provayder o’yini/mahsuloti.
- Provider - RGS/studiya.
- Variant - bitta o’yinning variantlari (o’zgaruvchanlik, chiziqlar, limitlar, server).
- Collection - tahririyat/avtomatik tanlov (masalan, «Yangiliklar», «Jekpotlar»).
- Placement - sahifadagi/slotdagi biriktirilgan pozitsiya/banner/tayl.
- Capability/Feature - o’yin atributlari (free spins, buy feature, jekpot).
- JurisdictionRule - foydalanish/cheklash qoidalari.
- Signals - xulq-atvor/operatsion signallar (mashhurlik, CTR, revenue).
- Asset - media (piktogramma, poster, demo-video).
Kalitlar:’game _ id’(ichki barqaror, teng emas provider_game_id),’tenant _ id’,’region’,’locale’.
3) Ingest va normallashtirish
Konveyer:1. Source Adapters (pullerlar): RGS/studiyalar bilan integratsiya (kataloglar, fichlar, RTP, teglar).
2. Sanitize & Map: tashqi maydonlarning yagona lug’atga (ACL) mapping, validatsiya va de-duplikatsiya.
3. Enrich: mahalliylashtirish, toifalar, semantik teglar, yosh chegaralari reytinglari.
4. Moderate: bozorlar bo’yicha kontent bayroqlari (NSFW/diniy ramzlar/sezgir mavzular).
5. Publish:’GameUpserted/ProviderStatusChanged’voqealari → katalog proyeksiyalari.
Idempotentlik:’source _ id’+’version _ ts’bilan barcha xabarlar; takrorlash nojo’ya ta’sirlarsiz qayta ishlanadi.
Evolyutsiya sxemasi:’schema _ version’adapterlarda + mapper migratsiyasida.
4) Normallashtirilgan sxema (soddalashtirilgan)
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) Qidiruv, filtrlar, fasetlar
Indekslar: nomi/sinonimlari bo’yicha to’liq matn,’provider’,’capabilities’,’volatility’,’rtp _ bucket’,’tags’bo’yicha fasetlar.
Filterlar: yurisdiksiya/mintaqa/til/qurilma/yosh, faqat aktiv/sertifikatlangan.
Sinonimlar/stemming: foydalanuvchi atamalari xaritasi («kitoblar», «mevalar», «sharlar»).
Xatolar: tolerant search (edit distance ≤ 1-2) uzunligi cheklangan.
6) Ranjirlash: signallar va formula
Signallar (misol):- Freshness (chiqish vaqti).
- Popularity (ishga tushirish/soat, noyob o’yinchilar).
- Quality (CTR katalogdan o’yinga, ushlab turish 1/7 kun).
- Business (marketing bustlari, bitimlar, promo-slotlar).
- Compliance (agar talab qilinsa, sezgir kontent uchun yumshoq pasayishlar).
- Player-fit (profil/afzalliklar mosligi).
score = w1freshness + w2popularity + w3ctr + w4player_fit + w5boost
Vaznlar konfiguratsiya/eksperimentlar bilan boshqariladi; barcha signallar [0; 1].
7) Personallashtirish
Qisqa xotira: so’nggi ishga tushirishlar va janrlar, RYW - foydalanuvchi darhol yangi harakatlarni ko’radi.
Uzoq xotira: o’yinlar va o’yinchi profilining embeddinglari (o’yin janrlari/o’zgaruvchanlik/sessiyalar).
Xavfsizlik: shaxsiylashtirish hech qachon yurisdiksiya/yosh qoidalarini buzmaydi.
Fallback: agar signal kam boʻlsa - neytral reyting + muharrir toʻplamlari.
8) Kolleksiyalar va promo-pleysmentlar
Toʻplamlar:- Avto: qoida/so’rov (masalan,’capabilities contains’jackpot’AND release_date> = NOW () -30d’).
- Tahririyat: tartib va muddatlar bilan qo’lda ro’yxat.
- Pleysmentlar: sahifalarda mustahkamlangan pozitsiyalar (hero, row-1-slot-3), A/B, segmentlar/yurisdiksiyalar bo’yicha targeting.
- Muddatlari va ustuvorliklari:’starts _ at/ends _ at’, konfliktlarning ustuvorligi, e’lon qilishdan oldin prevyu.
9) Komplayens va foydalanish siyosati
Geo/yurisdiksiya: mamlakatlar/mintaqalarning oq/qora ro’yxatlari, litsenziyalar/sertifikatlarni tekshirish.
Yosh reytingi: minimal yosh, ogohlantirish, nomuvofiq bozorlar uchun yashirish.
Mavzular/ramzlar: mamlakatlar bo’yicha sezgir kontent bayroqlari (din, alkogol va boshqalar).
Mas’uliyatli o’yin: limitli/taym-autli o’yinchilar uchun yashirish/kamaytirish.
Audit: sabablar bilan foydalanish imkoniyatini o’zgartirishning o’zgarmas log.
10) Ko’p tenant va ko’p mintaqa
Barcha maʼlumotlar «tenant _ id» va «region» bilan belgilangan.
Izolyatsiya: mintaqalar bo’yicha kvorumlar/omborlar; kross-mintaqaviy proyeksiyalar - faqat agregatlar.
Fairness: «shovqinli» brend boshqalarni kechiktirmasligi uchun ingest/per tenant nashrlariga kvotalar.
11) Arxitektura konturi
Write - katalog yadrosi (CP): normallashtirish + tranzaksion outbox hodisalari.
Proyeksiyalar/Read Models (EC): qidiruv indekslari, materiallashtirilgan kolleksiyalar, mashhurlik hisoblagichlari.
- «Sovuq» sahifalar/rasmlar uchun Edge/CDN.
- Issiq soʻrovlar uchun In-memory keshlari (key = filtrlar + sahifa + tenant + region).
- Ficheflaglar: rang/kolleksiyalarni relizsiz prokatga berish.
12) API (REST/GraphQL, misollar)
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 (parcha)
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
}
}
Kontraktlar:
- Har doim’as _ of/freshnessMs’, peyjing, fasetlarni qaytaring.
- Personallashtirish uchun - PIIsiz sessiya markeri (RYW).
13) Signallar va ma’lumotlar oqimi
Mashhurlik: o’yinlarni boshlashda inkrementlar → daqiqali baketalar → proyeksiyadagi agregatlar.
CTR/konvertatsiya: pleysmentlarda/kolleksiyalarda klik/ishga tushirish hisoblagichlari.
Operatsion maqomlar: provayderlarning health (RGS), jekpotlar/limitlar (voqealar oqimi).
Marketing-bustlar: o’yinlar/toifalar/yetkazib beruvchilar uchun vaqtinchalik koeffitsiyentlar.
14) Kuzatuv va SLO
Katalog metrikasi:- `catalog_p95_ms`, `catalog_p99_ms`, `error_rate`.
- ’index _ freshness _ ms’ (loyiha kechikishi),’ingest _ lag _ ms’.
- ’ctr’,’click-to-launch’,’collection _ coverage’(kolleksiyalardan berilgan%).
- `lift_ctr`, `lift_conversion`, «explore vs exploit» доля.
- Geo/yosh qoidalarining to’g "ri qo’llanilganligi, bloklar soni/soat.
Alertlar:’ingest _ lag _ ms’ning o’sishi, asosiy kolleksiyalarda CTRning pasayishi, provayderning degradatsiyasi (berishdagi belgilar).
15) Unumdorlik va keshlash
Strategiya: issiq so’rovlar - filtrlar bo’yicha kalitli 30-120 kash; shaxsiy bloklar - qisqa TTL (10-30 s) yoki keshsiz.
Nogironlik:’GameUpserted/AvailabilityChanged/PlacementUpdated’voqealari bo’yicha.
Paginatsiya: signallarni yangilashda kartochkalar «sakrab» ketmasligi uchun barqaror kursorlar.
16) Media bilan ishlash
Render profillari: web/mobile/TV uchun oʻlchamlar/zichliklar.
Optimallashtirish: WebP/AVIF, lazy-load, sprite/atlas.
Kontent xavfsizligi: skanerlash, suv belgilari, inline-PII taqiqlanadi.
17) Test sinovlari
Adapterlar va API uchun Contract/Schema tests.
Relevancy tests: oltin soʻrovlar toʻplami → kutilayotgan natijalar/tartib.
Personallashtirish: offline AUC/NDCG + online A/B guardrail-metriklar bilan (o’yindagi vaqt, depozitlar, RG-signallar).
Chaos: provayderlarning tanazzullari, ingest portlashlari, indeksatsiya kechikishlari.
18) Pleybuklar (runbooks)
1. Lag indeks> SLO: ikkilamchi kolleksiyalarni toʻxtatish, ingest ustuvorligini oshirish, reytingni vaqtincha soddalashtirish.
2. «Qizil» provayder: uning o’yinlarini kamaytirish/yashirish, muqobil kolleksiyalarni ko’tarish.
3. API xatosi: kesh/orqa tomonni tekshirish, himoya taymautlarini yoqish, sahifalar hajmini kamaytirish.
4. Noto’g "ri foydalanish imkoniyati: oxirgi qoidani bekor qilish, tanqidiy bozorlarning" oq ro’yxati "ni kiritish, o’zgarishlar auditini o’tkazish.
5. Rang chiqarish: kanar rollout (5% → 25% → 50% → 100%), CTR/konversiya bo’yicha orqaga qaytish.
19) Tipik xatolar
Signallar parchalanmagan holda yagona «sehrli» reyting formulasi va A/B
Provayderlarning tashqi sxemalarini ichki model bilan aralashtirish (ACL mavjud emas).
’as _ of/freshness’ → «eskirgan» katalog haqida bahslar mavjud emas.
Yurisdiksiya qoidalarini buzadigan shaxslashtirish.
Kesh va kursorsiz katta sahifalar → p99 «otadi».
Hodisa + proyeksiya oʻrniga OLTP va indeksga dual-write.
20) Sotishdan oldingi chek-varaq
- Barcha provayderlar uchun normal dala va ACL lugʻati.
- Idempotent ingest, outbox/inbox, DLQ va redrayv.
- Yangilik SLO bilan katalog proyeksiyalari va qidiruv indekslari.
- Boshqariladigan tarozilar bilan reytinglash, signallarning parchalanishi va A/B.
- Komplayens qoidalari (geo/yosh/mavzu) va o’zgarishlar auditi.
- Ko’p tenant/mintaqa: ma’lumotlarni izolyatsiya qilish, fairness, residency.
- API s’as _ of’, fasetlar, kursorlar; voqealar bo’yicha kesh va nogironlik.
- Metrika p95/p99, ingest/indeksatsiya, CTR/konvertatsiya; alertlar.
- Voqealar pleybuklari; kanar relizlari va ficheflaglar.
- Tegishli, kontrakt, xaos va shaxsiylashtirish testlari.
Xulosa
Katalog dvigateli - bu oʻyin kontenti ustidagi «qidiruv tizimi + qoidalar tizimi + vitrin». Kuchli ACL, me’yorlashtirilgan ma’lumotlar, tez o’qish uchun proyeksiyalar, shaffof reyting signallari, guardrail-metrik personalizatsiya va qat’iy komplayens katalogni oziq-ovqat mahsulotlarida kutilmagan hodisalarsiz va regulyatorlar bilan murosasiz barqaror va o’lchanadigan o’sish dastagiga aylantiradi.