GH GambleHub

Мазмұн каталогының қозғалтқышы

Каталог қозғалтқышы - бұл ойын витриналары мен промо-іріктеулердің өзегі: ол провайдерлерден (RGS) метадеректерді жинайды және қалыпқа келтіреді, іздеуді/сүзгілерді/ранжирлеуді қамтамасыз етеді, юрисдикциялар мен брендтер бойынша қолжетімділік ережелерін қолданады, дербестендіруді және промо-плейсменттерді араластырады, содан кейін API арқылы жылдам жауаптар береді болжамды SLO.


1) Мақсаттар мен қағидаттар

Жылдам оқу: каталог/іздеу сұрауына p95 ≤ 100-150 мс.
Шындық пен жаңалық: негізгі атрибуттардың кепілдік берілген өзектілігі (қолжетімділік, джекпоттар, провайдерлік мәртебелер).
Икемділік: редакторлық коллекциялар мен жарнамалық слоттар.
Сәйкестік: гео/жас/контент ережелері, лицензиялар, жауапты ойын шектеулері.
Мульти-тенант/өңір: брендтерді оқшаулау және data residency.
Бақылануы: беру сапасының метрикасы, A/B, ойынға/мөлшерлемеге конверсия.


2) Домендік модель (минимум)

Мәні:
  • Game - провайдердің ойыны/өнімі.
  • Provider - RGS/студия.
  • Variant - бір ойынның нұсқалары (құбылмалылық, желілер, лимиттер, сервер).
  • Collection - редакторлық/автоматты іріктеу (мысалы, «Новинки», «Джекпоты»).
  • Placement - бетке/слотқа бекітілген позиция/баннер/тайл.
  • Capability/Feature - ойын атрибуттары (free spins, buy feature, джекпот).
  • JurisdictionRule - қол жетімділік/шектеулер ережелері.
  • Сигналдар - мінез-құлық/операциялық сигналдар (танымалдылық, CTR, revenue).
  • Asset - құрылғыларға/тығыздықтарға арналған нұсқалары бар медиа (иконкалар, постерлер, демо-видео).

Кілттер: 'game _ id' (ішкі тұрақты, тең емес provider_game_id), 'tenant _ id', 'region', 'locale'.


3) Ingest және қалыпқа келтіру

Конвейер:

1. Source Adapters (пуллерлер): RGS/студиялармен интеграциялау (каталогтар, фичтер, RTP, тегтер).

2. Sanitize & Map: сыртқы өрістердің бірыңғай сөздікке (ACL) маппингі, валидация және дедупликация.

3. Enrich: оқшаулау, санаттар, семантикалық тегтер, жас шектеулерінің рейтингтері.

4. Moderate: нарықтар бойынша контент-жалаулар (NSFW/діни символдар/сезімтал тақырыптар).

5. Publish: 'GameUpserted/ProviderStatusChanged' → оқиғалары.

Сәйкестік: барлық хабарлар 'source _ id' + 'version _ ts'; қайталау жанама әсерсіз өңделеді.
Эволюция схемасы: 'schema _ version' адаптерлерінде + мапперлер көші-қоны.


4) Қалыпқа келтірілген схема (оңайлатылған)

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) Іздеу, сүзгілер, фасеттер

Индекстер: атауы/синонимдері бойынша толық мәтін, 'provider', 'capabilities', 'volatility', 'rtp _ bucket', 'tags' бойынша фасеттер.
Сүзгілер: юрисдикция/өңір/тіл/құрылғы/жас, тек белсенді/сертификатталған.
Синонимдер/стемминг: пайдаланушы терминдерінің картасы («кітапшалар», «жемістер», «шарлар»).
Қателер: ұзындығы шектелген tolerant search (edit distance ≤ 1-2).


6) Ранжирлеу: сигналдар мен формула

Сигналдар (мысал):
  • Freshness (шығарылым уақыты).
  • Popularity (іске қосу/сағат, бірегей ойыншылар).
  • Quality (CTR каталогтан ойынға, ұстап тұру 1/7 күн).
  • Business (маркетингтік бустар, мәмілелер, промо-слоттар).
  • Compliance (қажет болса, сезімтал мазмұн үшін жұмсақ төмендетулер).
  • Player-fit (профайлдың/артықшылықтардың үйлесімділігі).
Комбинация (тұжырымдама):

score = w1freshness + w2popularity + w3ctr + w4player_fit + w5boost

Салмақтар конфигурациямен/эксперименттермен басқарылады; барлық сигналдар қалыпқа келтірілген [0; 1].


7) Дербестендіру

Қысқа жады: соңғы іске қосулар мен жанрлар, RYW - пайдаланушы бірден жаңа әрекеттерді көреді.
Ұзақ есте сақтау: ойын эмбеддингі және ойыншы бейіні (ойын жанрлары/құбылмалылық/сессиялар).
Қауіпсіздік: дербестендіру юрисдикциялық/жас ережелерін ешқашан бұзбайды.
Fallback: сигналдар аз болса - бейтарап сұрыптау + редакторлық коллекциялар.


8) Коллекциялар және промо-плейсменттер

Жиындар:
  • Авто: ереже/сұрау (мысалы, 'capabilities contains' jackpot 'AND release_date> = NOW () -30d').
  • Редакторлық: ретімен және мерзімімен қол тізімі.
  • Плейсменттер: беттердегі бекітілген позициялар (hero, row-1-slot-3), A/B, сегменттер/юрисдикциялар бойынша таргетинг.
  • Мерзімдері мен басымдықтары: 'starts _ at/ends _ at', коллизиялардың басымдығы, жариялау алдындағы басымдығы.

9) Комплаенс және қолжетімділік саясаты

Гео/юрисдикция: елдердің/өңірлердің ақ/қара тізімдері, лицензияларды/сертификаттарды тексеру.
Жас рейтингі: ең төменгі жас, ескертулер, үйлеспейтін нарықтар үшін жасыру.
Тақырыбы/рәміздері: елдер бойынша сезімтал контенттің жалаулары (дін, алкоголь және т.б.).
Жауапты ойын: лимиттері/тайм-ауты бар ойыншылар үшін жасыру/төмендету.
Аудит: себептермен қол жетімділіктің өзгеруінің өзгермейтін журналы.


10) Мульти-тенант және мульти-өңір

Барлық деректер 'tenant _ id' және 'region' деп белгіленген.
Оқшаулау: өңірлер бойынша кворумдар/қоймалар; кросс-өңірлік проекциялар - тек агрегаттар.
Fairness: «шулы» бренд басқаларды кідіртпеуі үшін ingest/per tenant жарияланымдарының квоталары.


11) Сәулет сұлбасы

Write каталогының өзегі (CP): қалыпты + транзакциялық оқиғалар outbox.
Проекциялар/Read Models (EC): іздеу индекстері, материалданған коллекциялар, танымал есептеуіштер.

Кэш қабаттары:
  • «Суық» беттер/суреттер үшін Edge/CDN.
  • In-memory кэштері (key = сүзгілер + бет + tenant + region).
  • Фичефлагтар: ретке келтіру ережелерін/коллекцияларды релизсіз прокаттау.

12) API (REST/GraphQL, мысалдар)

REST


GET /v1/catalog?tenant=brand_eu&region=EE&locale=ru
&filter=jackpot,true&sort=score_desc&page=1&size=24
→ 200 { items:[...], facets:{...}, as_of:"2025-10-31T12:10:02Z" }

GraphQL (үзік)

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
}
}
Келісімшарттар:
  • Әрқашан 'as _ of/freshnessMs', пэйджинг, фасеттерді қайтарыңыз.
  • Дербестендіру үшін - PII-сыз сессияның маркерлері (RYW).

13) Сигналдар және деректер ағыны

Танымалдылық: ойындарды бастаудағы инкременттер → минуттық бакеттер → проекциядағы агрегаттар.
CTR/конверсия: плейсмент/коллекциялардағы басу/жегу есептегіштері.
Операциялық мәртебелері: провайдерлердің health (RGS), джекпоттар/лимиттер (оқиғалар ағымы).
Маркетинг-бустар: ойындарға/санаттарға/жеткізушілерге арналған уақытша коэффициенттер.


14) Бақылау және SLO

Каталог өлшемдері:
  • `catalog_p95_ms`, `catalog_p99_ms`, `error_rate`.
  • 'index _ freshness _ ms' (жобалық кідіріс), 'ingest _ lag _ ms'.
  • 'ctr', 'click-to-launch', 'collection _ coverage' (коллекциядан шығару%).
Дербестендіру:
  • `lift_ctr`, `lift_conversion`, «explore vs exploit» доля.
Комплаенс:
  • % дұрыс қолданылған гео/жас ережелері, блоктар саны/сағ.

Алерттар: 'ingest _ lag _ ms' өсуі, негізгі коллекцияларда CTR құлдырауы, провайдердің құлдырауы (беру белгілері).


15) Өнімділік және кэштеу

Стратегия: ыстық сұраулар - сүзгі кілті бар 30-120 кэш; дербес блоктар - қысқа TTL (10-30 с) немесе кэшсіз.
Мүгедектігі: оқиғалар бойынша 'GameUpserted/AvailabilityChanged/PlacementUpdated'.
Пагинация: сигналдарды жаңарту кезінде карточкалар «секіріп» кетпеуі үшін тұрақты курсорлар.


16) Медиамен жұмыс істеу

Рендер-профильдер: web/mobile/TV үшін өлшемдер/тығыздықтар.
Оңтайландыру: WebP/AVIF, lazy-load, плиткалар үшін sprite/atlas.
Мазмұн қауіпсіздігі: сканерлеу, су белгілері, inline-PII тыйым салу.


17) Тестілеу

Адаптер және API үшін Contract/Schema tests.
Relevancy tests: алтын сұраулар жиынтығы → күтілетін нәтижелер/тәртібі.
Дербестендіру: offline AUC/NDCG + online A/B guardrail-метриктерімен (ойындағы уақыт, депозиттер, RG-сигналдар).
Chaos: провайдерлердің құлдырауы, ingest жарылыстары, индекстеудің кідіруі.


18) Плейбуктар (runbooks)

1. Индекс артықшылығы> SLO: екінші топтамаларды тоқтату, ingest басымдығын арттыру, саралауды уақытша жеңілдету.
2. Провайдер «қызыл»: оның ойындарын төмендету/жасыру, баламалы коллекцияларды көтеру.
3. API қатесі: кэшті/бэкендті тексеру, қорғаныс таймауттарын қосу, беттердің өлшемін кішірейту.
4. Қате қолжетімділік: соңғы ережені алып тастау, сындарлы нарықтардың «ақ тізімін» қосу, өзгерістер аудитін жүргізу.
5. Ранжирлеу релизі: канареялық rollout (5% → 25% → 50% → 100%), CTR/конверсия бойынша кері қайту.


19) Типтік қателер

Сигналдарды ыдыраусыз және A/B ранжирлеудің жалғыз «сиқырлы» формуласы

Провайдерлердің сыртқы схемаларын ішкі модельмен араластыру (ACL болмауы).
Жоқ 'as _ of/freshness' → «ескірген» каталог туралы даулар.
Юрисдикциялық ережелерді бұзатын дербестендіру.
Кэшсіз және меңзерсіз үлкен беттер → p99 «атылады».
Оқиғалар + проекциялардың орнына индекске және OLTP-ке Dual-write.


20) Азық-түлік алдындағы чек-парағы

  • Барлық провайдерлер үшін өрістер мен ACL қалыпқа келтірілген сөздігі.
  • Idempotent ingest, outbox/inbox, DLQ және редрайв.
  • Жаңалық SLO каталогының проекциялары мен іздеу индекстері.
  • Басқарылатын таразылармен ранжирлеу, сигналдардың ыдырауы және A/B
  • Комплаенс-ережелер (гео/жасы/тақырыбы) және өзгерістер аудиті.
  • Мультитенант/өңір: деректерді оқшаулау, fairness, residency.
  • API 'as _ of', фасеттер, курсорлар; кэш және оқиғалар бойынша мүгедектік.
  • p95/p99, ingest/индекстеу, CTR/конверсия; алерта.
  • Инциденттердің ойнатқыштары; канареялық релиздер мен фичефлагтар.
  • Релеванттылық, келісімшарттар, хаос және дербестендіру тестілері.

Қорытынды

Каталог қозғалтқышы - бұл ойын контентінің үстіндегі «іздеу жүйесі + ереже жүйесі + витрина». Күшті ACL, қалыпқа келтірілген деректер, жылдам оқуға арналған проекциялар, ранжирлеудің мөлдір сигналдары, guardrail-метриктермен дербестендіру және қатаң комплаенс каталогты тұрақты және өлшенетін азық-түлік өсу тетігіне айналдырады - өнімде тосын саты жоқ және реттеуіштермен ымыраға келмейді.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.