GH GambleHub

İçerik kataloğu motoru

Katalog motoru, ön taraftaki oyun vitrinlerinin ve promosyon koleksiyonlarının çekirdeğidir: Sağlayıcılardan (RGS) meta verileri toplar ve normalleştirir, arama/filtreler/sıralama sağlar, yargı ve markaya göre erişilebilirlik kurallarını uygular, kişiselleştirme ve promosyon yerleşimlerini karıştırır ve daha sonra API aracılığıyla öngörülebilir SLO ile hızlı yanıtlar sunar.


1) Hedefler ve ilkeler

Hızlı okuma: p95 ≤ dizin/arama isteği başına 100-150 ms.
Gerçek ve tazelik: Temel özelliklerin (kullanılabilirlik, ikramiyeler, sağlayıcı durumları) garantili alaka düzeyi.
Esneklik: editoryal koleksiyonlar ve sürümleri olmayan promosyon yuvaları.
Uyumluluk: Coğrafi/yaş/içerik kuralları, lisanslar, sorumlu oyun kısıtlamaları.
Çok kiracılı/bölge: marka izolasyonu ve veri ikameti uyumluluğu.
Gözlemlenebilirlik: Outing Kalite Metrikleri, A/B, Oyun Dönüştürme/Bahis.


2) Etki alanı modeli (minimum)

Varlıklar:
  • Oyun, sağlayıcının bir oyunu/ürünüdür.
  • Sağlayıcı - RGS/stüdyo.
  • Değişken - bir oyunun varyantları (volatilite, çizgiler, limitler, sunucu).
  • Koleksiyon - editoryal/otomatik seçim (örn. "Yeni Öğeler", "Jackpotlar").
  • Yerleştirme - sayfada/yuvada sabit konum/afiş/fayans.
  • Yetenek/Özellik - oyun özellikleri (ücretsiz dönüşler, satın alma özelliği, jackpot).
  • JurisdictionRule - erişilebilirlik/kısıtlama kuralları.
  • Sinyaller - davranışsal/operasyonel sinyaller (popülerlik, TO, gelir).
  • Varlık - cihazlar/yoğunluklar için seçeneklerle medya (simgeler, posterler, demo videolar).

Anahtarlar: 'game _ id' (sabit dahili, eşit değil provider_game_id), 'tenant _ id', 'bölge', 'yerel'.


3) En yüksek ve normalleştirme

Konveyör:

1. Kaynak Adaptörleri (çekiciler): RGS/stüdyolarla entegrasyonlar (dizinler, özellikler, RTP, etiketler).

2. Sanitize ve Harita - Harici alanları tek bir sözlükte (ACL) eşleyin, doğrulayın ve tekilleştirin.

3. Enrich: yerelleştirmeler, kategoriler, anlamsal etiketler, yaş sınırı derecelendirmeleri.

4. Orta: pazara göre içerik bayrakları (NSFW/dini semboller/hassas konular).

5. Yayınlama: 'GameUpserted/ProviderStatusChanged' olayları - katalog projeksiyonu.

Idempotence: 'source _ id' + 'version _ ts' içeren tüm mesajlar; Tekrarlanan yan etkiler olmadan işlenir.
Evrim şeması: adaptörlerde 'schema _ version' + mapper geçişleri.


4) Normalleştirilmiş şema (basitleştirilmiş)

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) Arama, filtreler, fasetler

Dizinler: tam metin isme/eşanlamlılara göre, fasetler 'sağlayıcı', 'yetenekler', 'volatilite', 'rtp _ bucket', 'etiketler'.
Filtreler: yargı/bölge/dil/cihaz/yaş, yalnızca aktif/sertifikalı.
Eşanlamlılar/stemming: kullanıcı terimlerinin haritası ("kitaplar", "meyveler", "toplar").
Yazım hataları: uzunluk kısıtlaması olan toleranslı arama (düzenleme mesafesi ≤1 -2).


6) Sıralama: sinyaller ve formül

İşaretler (örnek):
  • Tazelik (serbest bırakılmasından bu yana geçen süre).
  • Nüfus (başlar/saat, benzersiz oyuncular).
  • Kalite (katalogdan oyuna TO, 1/7 gün tutun).
  • İş (pazarlama artırır, fırsatlar, promosyon yuvaları).
  • Uyumluluk (gerekirse hassas içerik için yumuşak düşürmeler).
  • Oyuncu uyumu (profil/tercih uyumluluğu).
Kombinasyon (konsept):

score = w1freshness + w2popularity + w3ctr + w4player_fit + w5boost

Ağırlıklar yapılandırma/deneyler tarafından kontrol edilir; Tüm sinyaller normalize edildi [0; 1].


7) Kişiselleştirme

Kısa bellek: son lansmanlar ve türler, RYW - kullanıcı hemen yeni eylem görür.
Uzun bellek: Oyun ve oyuncu profili gömmeleri (oyun türleri/volatilite/oturumlar).
Güvenlik: Kişiselleştirme asla yargı/yaş kurallarını ihlal etmez.
Fallback: birkaç sinyal varsa - nötr sıralama + editoryal koleksiyonlar.


8) Koleksiyonlar ve promosyon yerleşimleri

Koleksiyonlar:
  • Otomatik: kural/sorgu (örn. 'capabilities contains' jackpot 'AND release_date> = NOW () -30d') içerir.
  • Editoryal: Sipariş ve zamanlama ile manuel liste.
  • Yerleşimler: Sayfalardaki sabit konumlar (kahraman, satır-1-yuva-3), A/B, segmente/yargı alanına göre hedefleme.
  • Tarihler ve öncelikler: 'Starts _ at/ends _ at', çakışma önceliği, yayınlanmadan önce önizleme.

9) Uyum ve Erişilebilirlik Politikası

Coğrafi/yargı: Ülkelerin/bölgelerin beyaz/siyah listeleri, lisansların/sertifikaların doğrulanması.
Yaş derecesi: asgari yaş, uyarılar, uyumsuz pazarlar için saklanma.
Konu/sembolizm: Ülkeye göre hassas içerik bayrakları (din, alkol, vb.).
Sorumlu oyun: Limit/timeout oyuncuları için gizle/indir.
Denetim: Sebeplerle kullanılabilirlikteki değişikliklerin değişmez günlüğü.


10) Çok kiracı ve çok bölgeli

Tüm veriler 'tenant _ id've' region'olarak işaretlenmiştir.
İzolasyon: Bölgelere göre kuorumlar/tonozlar; Bölgeler arası projeksiyonlar - yalnızca kümeler.
Adalet: Kiracı başına alım/yayın kotaları, böylece "gürültülü" marka gerisini geciktirmez.


11) Mimari taslak

Yazma çekirdeği dizini (CP): normalleştirme + işlem giden kutusu olayları.
Projeksiyonlar/Okuma Modelleri (EC): arama endeksleri, materyalize koleksiyonlar, popülerlik sayaçları.

Önbellek katmanları:
  • Soğuk sayfalar/görüntüler için Edge/CDN.
  • Bellek içi sıcak sorgular için önbellek (key = filters + page + tenant + region).
  • Ficheflags: serbest bırakılmadan yuvarlanan sıralama/toplama kuralları.

12) API (REST/GraphQL, örnekler)

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 (parça)

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
}
}
Sözleşmeler:
  • Her zaman'as _ of/tazelikMs ', çağrı, fasetleri döndürün.
  • Kişiselleştirme için - PII olmadan oturum işaretleyici (RYW).

13) Sinyaller ve veri akışı

Popülerlik: oyunları başlatırken artışlar - dakika kovaları - projeksiyondaki birimler.
TO/dönüşüm: Yerleşimler/koleksiyonlar üzerindeki sayaçları tıklayın/başlatın.
Çalışma durumları: sağlık sağlayıcıları (RGS), ikramiyeler/limitler (olay akışı).
Pazarlama artırır: oyunlar/kategoriler/tedarikçiler için zaman faktörleri.


14) Gözlemlenebilirlik ve SLO

Dizin metrikleri:
  • 'catalog _ p95 _ ms', 'catalog _ p99 _ ms', 'error _ rate'.
  • 'index _ freshness _ ms' (proje gecikmesi), 'ingest _ lag _ ms'.
  • 'ctr', 'click-to-launch', 'collection _ coverage' (koleksiyonlardan % check out).
Kişiselleştirme:
  • 'lift _ ctr', 'lift _ conversion', "exploit vs exploit" доля.
Uyumluluk:
  • % doğru uygulanan coğrafi/yaş kuralları, blok sayısı/saat.

Uyarılar: 'ingest _ lag _ ms' büyümesi, anahtar koleksiyonlarda TO'da düşüş, sağlayıcının bozulması (sorundaki etiketler).


15) Performans ve önbelleğe alma

Strateji: sıcak sorgular - filtreler tarafından bir anahtar ile 30-120 s önbellek; Kişisel bloklar - kısa TTL (10-30 s) veya önbellek yok.
Engellilik: 'GameUpserted/AvailabilityChanged/PlacementUpdated' etkinliklerine göre.
Pagination: sinyalleri güncellerken kartları "atlamamak" için kararlı imleçler.


16) Medya ile çalışma

Oluşturma profilleri: Web/mobil/TV için boyutlar/yoğunluklar.
Optimizasyon: WebP/AVIF, lazy-load, fayanslar için sprite/atlas.
İçerik güvenliği: tarama, filigran, satır içi PII yasağı.


17) Test etme

Adaptörler ve API'ler için Sözleşme/Şema testleri.
Alaka düzeyi testleri: altın sorgu setleri - beklenen sonuçlar/sipariş.
Kişiselleştirme: Korkuluk metrikleri ile çevrimdışı AUC/NDCG + çevrimiçi A/B (oyun içi zaman, para yatırma, RG sinyalleri).
Kaos: sağlayıcı bozulması, ani artışlar, indeksleme gecikmeleri.


18) Playbook'lar (runbook'lar)

1. Dizin gecikmesi> SLO: ikincil koleksiyonları durdurun, alma önceliğini artırın, sıralamayı geçici olarak basitleştirin.
2. Sağlayıcı "kırmızı": düşük/onun oyunları gizlemek, alternatif koleksiyonları yükseltmek.
3. API hatası atlama: önbelleği/arka ucu denetleyin, güvenlik zaman aşımlarını etkinleştirin, sayfa boyutunu küçültün.
4. Yanlış kullanılabilirlik: Son kuralı geri alın, kritik pazarların "beyaz listesini" ekleyin, denetim değişiklikleri yapın.
5. Sıralama sürümü: Kanarya sunumu (%5 - %25 - %50 - %100), TO/dönüşüm geri dönüşü.


19) Tipik hatalar

Harici sağlayıcı şemalarını dahili bir modelle karıştırma (ACL yok).
'As _ of/tazelik' yokluğu - "modası geçmiş" dizin hakkında tartışmalar.
Yargı kurallarını ihlal eden kişiselleştirme.
Sinyallerin ve A/B'nin ayrışması olmadan tek "sihirli" sıralama formülü.
Önbelleğe alma ve imleçler olmadan büyük sayfalar - p99 "ateş".
Olaylar + projeksiyonlar yerine dizin ve OLTP'ye çift yazma.


20) Satış öncesi kontrol listesi

  • Tüm sağlayıcılar için normalleştirilmiş alan sözlüğü ve ACL.
  • Idempotent yutmak, giden kutusu/gelen kutusu, DLQ ve redrive.
  • Katalog projeksiyonları ve taze SLO ile arama endeksleri.
  • Ağırlık kontrollü sıralama, sinyal ayrışması ve A/B
  • Uyum kuralları (coğrafi/yaş/konu) ve değişikliklerin denetimi.
  • Çok kiracı/bölge: veri izolasyonu, adalet, ikamet.
  • API ile'as _ of ', fasetler, imleçler; Olaya göre önbellek ve sakatlık.
  • p95/p99 metrikleri, alım/indeksleme, TO/dönüşüm; Uyarılar.
  • Olay oyun kitapları; Kanarya salımları ve ficheflags.
  • Alaka, sözleşmeler, kaos ve kişiselleştirme testleri.

Sonuç

Katalog motoru, oyun içeriği üzerinde bir "arama motoru + kural sistemi + vitrin'dir. Güçlü ACL, normalleştirilmiş veriler, hızlı okuma tahminleri, şeffaf sıralama sinyalleri, korkuluk ölçümleri ile kişiselleştirme ve sıkı uyumluluk, kataloğu üretimde sürprizler olmadan ve düzenleyicilerle uzlaşmadan sürdürülebilir ve ölçülebilir bir ürün büyüme koluna dönüştürür.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.