GH GambleHub

შინაარსის კატალოგის ძრავა

კატალოგის ძრავა არის თამაშების ფანჯრის ბირთვი და პრომო შერჩევა ფრონტზე: ის აგროვებს და ნორმალიზებს მეტამონაცემებს პროვაიდერებისგან (RGS), უზრუნველყოფს ძებნას/ფილტრებს/რანჟირებას, იყენებს იურისდიქციებსა და ბრენდებზე წვდომის წესებს, აფერხებს პერსონალიზაციას და სარეკლამო პლაკატებს, შემდეგ კი პროგნოზირებადი SLI- ით აძლევს სწრაფ - ს ო.


1) მიზნები და პრინციპები

სწრაფი კითხვა: p95-100-150 ms კატალოგის/ძიების მოთხოვნით.
სიმართლე და სიახლე: ძირითადი ატრიბუტების გარანტირებული აქტუალობა (წვდომა, ჯეკპოტები, პროვაიდერის სტატუსი).
მოქნილობა: სარედაქციო კოლექციები და სარეკლამო სლოტები გამოშვების გარეშე.
შესაბამისობა: გეო/ასაკის/შინაარსის წესები, ლიცენზია, პასუხისმგებლობის თამაშის შეზღუდვები.
მრავალ ჩრდილში/რეგიონში: ბრენდების იზოლაცია და მონაცემთა დათმობის დაცვა.
დაკვირვება: გაცემის ხარისხის მეტრიკა, A/B, კონვერტაცია თამაშში/ფსონში.


2) დომენის მოდელი (მინიმალური)

არსება:
  • თამაში არის თამაში/პროვაიდერის პროდუქტი.
  • Provider - RGS/სტუდია.
  • Variant - ერთი თამაშის ვარიანტები (ცვალებადობა, ხაზები, ლიმიტები, სერვერი).
  • კოლექცია არის სარედაქციო/ავტომატური შერჩევა (მაგ., „სიახლეები“, „ჯეკპოტები“).
  • Placement - ფიქსირებული პოზიცია/ბანერი/ტაილი გვერდზე/სლოტში.
  • Capability/Feature - თამაშის ატრიბუტები (უფასო spins, buy feature, ჯეკპოტი).
  • Jurisdicute Rule - ხელმისაწვდომობის/შეზღუდვების წესები.
  • Signals - ქცევითი/ოპერაციული სიგნალები (პოპულარობა, CTR, revenue).
  • Asset - მედია (ხატები, პლაკატები, დემო ვიდეო) მოწყობილობების/სიმკვრივის ვარიანტებით.

გასაღებები: 'game _ id' (სტაბილური შიდა, არ ტოლია provider _ game _ id), 'tenant _ id', 'region', 'locale'.


3) ინჯესტი და ნორმალიზაცია

კონვეიერი:

1. წყაროს მიმდევრები (ტყვია): ინტეგრაცია RGS/სტუდიებთან (კატალოგები, ფიჩები, RTP, ჭდეები).

2. Sanitize & Map: გარე ველების მაპინგი ერთ ლექსიკონში (ACL), ვალიდაცია და დედუპლიკაცია.

3. Enrich: ლოკალიზაცია, კატეგორიები, სემანტიკური ჭდეები, ასაკობრივი შეზღუდვების რეიტინგი.

4. თანამედროვე: შინაარსის დროშები (NSFW/რელიგიური სიმბოლოები/მგრძნობიარე თემები) ბაზრებზე.

5. Publish: მოვლენები 'GameUpserted/ProviderStatusChanged' კატალოგის პროექციები.

Idempotence: ყველა შეტყობინება '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', 'volatily', 'rtp _ bucket', 'tags'.
ფილტრები: იურისდიქცია/რეგიონი/ენა/მოწყობილობა/ასაკი, მხოლოდ აქტიური/სერთიფიცირებული.
სინონიმები/სტემინგი: მომხმარებლის ტერმინების რუკა („წიგნები“, „ხილი“, „ბურთები“).
ტიპაჟები: tolerant search (edit distance 1-2) სიგრძის შეზღუდვით.


6) რანჟირება: სიგნალები და ფორმულა

სიგნალები (მაგალითი):
  • Freshness (გამოსვლის დრო).
  • Popularity (გაშვება/საათი, უნიკალური მოთამაშეები).
  • Quality (CTR კატალოგიდან თამაშში, გამართვა 1/7 დღე).
  • ბიზნესი (მარკეტინგული ბუჩქები, გარიგებები, სარეკლამო სლოტები).
  • კომპლექტი (რბილი ვარდნა მგრძნობიარე შინაარსისთვის, საჭიროების შემთხვევაში).
  • Player-fit (პროფილის/პრეფერენციების თავსებადობა).
კომბინაცია (კონცეფცია):

score = w1freshness + w2popularity + w3ctr + w4player_fit + w5boost

წონებს აკონტროლებენ კონფიგურაცია/ექსპერიმენტები; ყველა სიგნალი ნორმალიზებულია [0; 1].


7) პერსონალიზაცია

მოკლე მეხსიერება: უახლესი გაშვება და ჟანრები, RYW - მომხმარებელი დაუყოვნებლივ ხედავს ახალ მოქმედებებს.
გრძელი მეხსიერება: მოთამაშის თამაშების და პროფილის ემბედინგი (თამაშის ჟანრები/ცვალებადობა/სესიები).
უსაფრთხოება: პერსონალიზაცია არასოდეს არღვევს იურისდიქციულ/ასაკობრივ წესებს.
Fallback: თუ სიგნალები ცოტაა - ნეიტრალური რანგი + სარედაქციო კოლექციები.


8) კოლექციები და სარეკლამო პლაკატები

კოლექციები:
  • ავტო: წესი/მოთხოვნა (მაგ., 'capilities contains' jackpot 'and release _ date> NOW () -30d').
  • რედაქტორი: სახელმძღვანელო სია შეკვეთით და ვადებით.
  • Placements: დაფიქსირებული პოზიციები გვერდებზე (hero, row-1-slot-3), A/B, მიზნობრივი სეგმენტები/იურისდიქციები.
  • ვადები და პრიორიტეტები: 'starts _ at/ends _ at', შეჯახების პრიორიტეტი, გამოქვეყნებამდე გადახედვა.

9) შესაბამისობა და ხელმისაწვდომობის პოლიტიკა

გეო/იურისდიქცია: ქვეყნების/რეგიონების თეთრი/შავი სიები, ლიცენზიის/სერთიფიკატების შემოწმება.
ასაკობრივი რეიტინგი: მინიმალური ასაკი, გაფრთხილება, დამალვა შეუთავსებელი ბაზრებისთვის.
თემა/სიმბოლიზმი: მგრძნობიარე შინაარსის დროშები ქვეყნებში (რელიგია, ალკოჰოლი და ა.შ.).
საპასუხისმგებლო თამაში: დამალვა/ვარდნა მოთამაშეებისთვის, რომელთაც აქვთ შეზღუდვები/დრო.
აუდიტი: მიზეზებთან წვდომის ცვლილების უცვლელი ლოგი.


10) მულტფილმები და მულტფილმის რეგიონი

ყველა მონაცემი აღინიშნება 'tenant _ id' და 'region'.
იზოლაცია: კვორუმი/საცავი რეგიონებში; ჯვარედინი რეგიონალური პროგნოზები - მხოლოდ აგრეგატები.
Fairness: კვოტები ingest/პუბლიკაციებისთვის per tenant ისე, რომ „ხმაურიანი“ ბრენდი არ დააკავოს დანარჩენებს.


11) არქიტექტურული წრე

Write დირექტორიის ბირთვი (CP): + გარიგების გარე მოვლენების ნორმალიზაცია.
პროგნოზები/Read Models (EC): ძიების ინდექსები, მატერიალიზებული კოლექციები, პოპულარობის მრიცხველები.

ქეშის ფენები:
  • Edge/CDN „ცივი“ გვერდებისთვის/სურათებისთვის.
  • ცხელი მოთხოვნის სამახსოვრო ქეში (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', paging, ფასეტები.
  • პერსონალიზაციისთვის - სესიის მარკერი (RYW) PII- ს გარეშე.

13) სიგნალები და მონაცემთა ნაკადი

პოპულარობა: თამაშების დაწყების დროს ინკრეტები - წუთიანი სატანკოები და პროექციების დანაყოფები.
CTR/კონვერტაცია: დაწკაპუნების/გაშვების მრიცხველები პლეიზმენტებზე/კოლექციებზე.
ოპერაციული სტატუსები: ჯანმრთელობის პროვაიდერები (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/PlaceUntrated'.
პაგინაცია: სტაბილური კურსორები ისე, რომ ბარათის „გადახტომა“ სიგნალების განახლებისას.


16) მედიასთან მუშაობა

Render პროფილები: ზომები/სიმკვრივე ვებ/მობილური/TV.
ოპტიმიზაცია: WebP/AVIF, lazy-load, sprite/atlas ფილებისთვის.
შინაარსის უსაფრთხოება: სკანირება, წყლის ნიშნები, აკრძალვა inline-PII.


17) ტესტირება

Contract/Schema tests გადამყვანებისა და API- სთვის.
Relevancy tests: მოთხოვნის ოქროს ნაკრები, მოსალოდნელი შედეგები/რიგი.
პერსონალიზაცია: ოფლაინ AUC/NDCG + ონლაინ A/B guardrail მეტრებით (თამაშის დრო, ანაბრები, RG სიგნალები).
ქაოსი: პროვაიდერების დეგრადაცია, ინვესტიციის ზრდა, ინდექსაციის შეფერხება.


18) Playbooks (runbooks)

1. ინდექსის ლაგი> SLO: შეაჩერეთ მეორადი კოლექციები, გაზარდეთ ingest პრიორიტეტი, დროებით გაამარტივეთ რანჟირება.
2. პროვაიდერი „წითელი“: მისი თამაშების შემცირება/დამალვა, ალტერნატიული კოლექციების ამაღლება.
3. API შეცდომების გადახტომა: ქეშის/ზურგჩანთების შემოწმება, დამცავი ტაიმაუტის ჩართვა, გვერდების ზომის შემცირება.
4. არასწორი ხელმისაწვდომობა: ბოლო წესის შეცვლა, კრიტიკული ბაზრების „თეთრი ჩამონათვალის“ ჩართვა, ცვლილებების აუდიტის ჩატარება.
5. რანჟირების გამოშვება: კანარის rollout (5% - 25%, 50% - 100%), CTR/კონვერტაციის გამოტოვება.


19) ტიპიური შეცდომები

ერთადერთი „ჯადოსნური“ რანგის ფორმულა სიგნალის დაშლის გარეშე და A/B

გარე პროვაიდერების სქემების შერევა შიდა მოდელთან (ACL- ის არარსებობა).
'as _ of/freshness' - ის არარსებობა არის დავა „მოძველებული“ კატალოგის შესახებ.
პერსონალიზაცია, რომელიც არღვევს იურისდიქციულ წესებს.
დიდი გვერდები ქეშისა და კურსორების გარეშე p99 „გადაღებულია“.
ორმაგი write ინდექსი და OLTP + პროექციის მოვლენების ნაცვლად.


20) ჩეკის სია გაყიდვამდე

  • ნორმალიზებული ველების ლექსიკონი და ACL ყველა პროვაიდერისთვის.
  • Idempotent ingest, outbox/inbox, DLQ და redriv.
  • კატალოგის პროგნოზები და ძიების ინდექსები ახალი SLO.
  • რანჟირება კონტროლირებადი წონით, სიგნალების დაშლა და A/B.
  • შესაბამისობის წესები (გეო/ასაკი/თემა) და ცვლილებების აუდიტი.
  • მულტფილმი-ტენანტი/რეგიონი: მონაცემთა იზოლაცია, fairness, residence.
  • API ერთად 'as _ of', ფასეტები, კურსორები; ქეში და შეზღუდული შესაძლებლობის მქონე პირები.
  • მეტრიკა p95/p99, ingest/ინდექსაცია, CTR/კონვერტაცია; ალერტა.
  • ინციდენტების ფლეიბუკი; კანარის გამოშვებები და ფიჩფლაგები.
  • შესაბამისობის, კონტრაქტების, ქაოსისა და პერსონალიზაციის ტესტები.

დასკვნა

კატალოგის ძრავა არის „საძიებო სისტემა + იურიდიული სისტემა + ვიტრინა“ თამაშის შინაარსზე. ძლიერი ACL, ნორმალიზებული მონაცემები, სწრაფი კითხვის პროგნოზები, გამჭვირვალე რანგის სიგნალები, პერსონალიზაცია guardrail მეტრებით და მკაცრი შესაბამისობა კატალოგს გადააქცევს სტაბილურ და გაზომილ ზრდის ბერკეტად - წარმოების გარეშე სიურპრიზების გარეშე და რეგულატორებთან კომპრომისის გარეშე.

Contact

დაგვიკავშირდით

დაგვიკავშირდით ნებისმიერი კითხვის ან მხარდაჭერისთვის.ჩვენ ყოველთვის მზად ვართ დაგეხმაროთ!

ინტეგრაციის დაწყება

Email — სავალდებულოა. Telegram ან WhatsApp — სურვილისამებრ.

თქვენი სახელი არასავალდებულო
Email არასავალდებულო
თემა არასავალდებულო
შეტყობინება არასავალდებულო
Telegram არასავალდებულო
@
თუ მიუთითებთ Telegram-ს — ვუპასუხებთ იქაც, დამატებით Email-ზე.
WhatsApp არასავალდებულო
ფორმატი: ქვეყნის კოდი და ნომერი (მაგალითად, +995XXXXXXXXX).

ღილაკზე დაჭერით თქვენ ეთანხმებით თქვენი მონაცემების დამუშავებას.