GH GambleHub

Motor de catalog de conținut

Motorul de catalog este nucleul vitrinelor de joc și al colecțiilor promo din față: colectează și normalizează metadatele de la furnizori (RGS), oferă căutare/filtre/clasament, aplică reguli de accesibilitate după jurisdicție și marcă, amestecă personalizarea și plasările promo și apoi oferă răspunsuri rapide prin API cu SLO previzibil.


1) Obiective și principii

Citește rapid: p95 ≤ 100-150 ms per director/cerere de căutare.
Adevăr și prospețime: relevanța garantată a atributelor cheie (disponibilitate, jackpot-uri, statutul furnizorului).
Flexibilitate: colecții editoriale și sloturi promoționale fără lansări.
Conformitate: reguli de geo/vârstă/conținut, licențe, restricții de joc responsabil.
Multi-chiriaș/regiune: izolarea mărcii și respectarea rezidenței de date.
Observabilitate: Măsurători de calitate, A/B, Conversie joc/Pariu.


2) Model de domeniu (minim)

Entități:
  • Jocul este un joc/produs al furnizorului.
  • Furnizor - RGS/studio.
  • Variantă - variante de un joc (volatilitate, linii, limite, server).
  • Colecție - selecție editorială/automată (ex. „Elemente noi”, „Jackpot-uri”).
  • Plasare - poziție fixă/banner/țiglă pe pagină/în slot.
  • Capacitate/caracteristică - atribute de joc (rotiri gratuite, funcție de cumpărare, jackpot).
  • Regula jurisdicției - norme privind accesibilitatea/restricțiile.
  • Semnale - semnale comportamentale/operaționale (popularitate, CTR, venituri).
  • Active - media (icoane, postere, videoclipuri demo) cu opțiuni pentru dispozitive/densități.

Chei: 'game _ id' (intern stabil, nu egal cu provider_game_id),' tenant _ id', 'regiune', 'locale'.


3) Ingerarea și normalizarea

Transportor:

1. Adaptoare sursă (pullere): integrări cu RGS/studiouri (directoare, caracteristici, RTP, etichete).

2. Sanitize & Map - Hărți câmpuri externe într-un singur dicționar (ACL), validați și deduplicați.

3. Îmbogățiți: localizări, categorii, etichete semantice, ratinguri limită de vârstă.

4. Moderat: steaguri de conținut (NSFW/simboluri religioase/subiecte sensibile) pe piață.

5. Publicați: 'GameUpserted/ProviderStatusChanged' evenimente → proiecție catalog.

Idempotence: toate mesajele cu 'source _ id' +' version _ ts'; repetarea este procesată fără efecte secundare.
Schema de evoluție: 'schema _ versiune' în adaptoare + migrații mapper.


4) Schema normalizată (simplificată)

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) Căutare, filtre, fațete

Indexuri: text complet după nume/sinonime, fațete după „furnizor”, „capabilități”, „volatilitate”, „rtp _ bucket”, „etichete”.
Filtre: jurisdicție/regiune/limbă/dispozitiv/vârstă, activ/certificat numai.
Sinonime: o hartă a termenilor utilizatorilor („cărți”, „fructe”, „bile”).
Greșeli de ortografie: căutare tolerantă (editați distanța ≤1 -2) cu restricție de lungime.


6) Clasament: semnale și formulă

Semnale (exemplu):
  • Prospețime (timp de la lansare).
  • Populație (start/oră, jucători unici).
  • Calitate (CTR de la catalog la joc, țineți 1/7 zi).
  • Afaceri (marketing stimulează, oferte, sloturi promoționale).
  • Conformitate (downgrade-uri moi pentru conținut sensibil, dacă este necesar).
  • Player-fit (compatibilitate profil/preferință).
Combinație (concept):

score = w1freshness + w2popularity + w3ctr + w4player_fit + w5boost

Greutățile sunt controlate prin configurare/experimente; toate semnalele normalizate la [0; 1].


7) Personalizare

Memorie scurtă: lansări și genuri recente, RYW - utilizatorul vede imediat o acțiune proaspătă.
Memorie lungă: încorporarea jocului și a profilului jucătorului (genuri de joc/volatilitate/sesiuni).
Securitate: Personalizarea nu încalcă niciodată regulile jurisdicționale/de vârstă.
Rezervă: dacă există puține semnale - clasament neutru + colecții editoriale.


8) Colecții și plasamente promoționale

Colecţii:
  • Auto: regulă/interogare (ex. 'capacities contine' jackpot 'SI release_date> = NOW () -30d').
  • Editorial: listă manuală cu ordine și sincronizare.
  • Plasări: poziții fixe pe pagini (erou, rând-1-slot-3), A/B, direcționare pe segment/jurisdicție.
  • Date și priorități: 'starts _ at/ends _ at', coliziune prioritară, previzualizare înainte de publicare.

9) Politica de conformitate și accesibilitate

Geo/jurisdicție: liste albe/negre de țări/regiuni, verificarea licențelor/certificatelor.
Vârsta: vârsta minimă, avertismente, ascunderea pentru piețe incompatibile.
Subiect/simbolism: steaguri ale conținutului sensibil pe țări (religie, alcool etc.).
Joc responsabil: Ascunde/retrogradează pentru jucători limită/timeout.
Audit: jurnal imuabil de modificări în disponibilitatea cu motive.


10) Multi-chiriaș și multi-regiune

Toate datele sunt marcate "chiriaș _ id' și" regiune ".
Izolare: cvorumuri/bolți pe regiuni; proiecții transregionale - numai agregate.
Corectitudine: cote pentru ingerare/publicații per chiriaș, astfel încât marca „zgomotoasă” să nu întârzie restul.


11) Contur arhitectural

Write-core directory (CP): normalizare + evenimente outbox tranzacționale.
Proiecții/Modele de citire (EC): indici de căutare, colecții materializate, contoare de popularitate.

Straturi cache:
  • Edge/CDN pentru pagini/imagini reci.
  • Cache-uri de memorie pentru interogări fierbinți (cheie = filtre + pagină + chiriaș + regiune).
  • Ficheflags: clasament de rulare/reguli de colectare fără eliberare.

12) API (REST/GraphQL, exemple)

ODIHNĂ


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 (fragment)

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
}
}
Contracte:
  • Intotdeauna intoarce 'as _ of/prospetimeMs', paging, fatete.
  • Pentru personalizare - marker de sesiune (RYW) fără PII.

13) Semnale și fluxul de date

Popularitate: creșteri la lansarea jocurilor → găleți minut → unități în proiecție.
CTR/conversie: Faceți clic/ghișee de lansare pe plasamente/colecții.
Statusuri de operare: furnizori de sănătate (RGS), jackpot-uri/limite (flux de evenimente).
Marketing stimulează: factori de timp pentru jocuri/categorii/furnizori.


14) Observabilitate și SLO

Indicatori directoriali:
  • 'catalog _ p95 _ ms',' catalog _ p99 _ ms', 'error _ rate'.
  • 'index _ freshness _ ms' (întârziere proiect),' inger _ lag _ ms'.
  • 'ctr', 'click-to-launch', 'collection _ coverage' (% check out din colecții).
Personalizare:
  • 'lift _ ctr', 'lift _ conversion', 'explore vs exploit "доля.
Conformitate:
  • % norme geo/vârstă aplicate corect, număr de blocuri/oră.

Alerte: creșterea 'ingest _ lag _ ms', scăderea CTR pe colecțiile cheie, degradarea furnizorului (etichetele din număr).


15) Performanță și cache

Strategie: interogări la cald - cache pentru 30-120 s cu o cheie de filtre; blocuri personale - scurt TTL (10-30 s) sau nici o memorie cache.
Invaliditate: Prin 'GameUpserted/AvailabilityChanged/PlacementUpdated' evenimente.
Paginare: cursoare stabile, astfel încât să nu „sari” carduri atunci când actualizarea semnalelor.


16) Lucrul cu mass-media

Profile randare: dimensiuni/densitati pentru web/mobile/TV.
Optimizare: WebP/AVIF, lazy-load, sprite/atlas pentru gresie.
Securitatea conținutului: scanare, filigrane, interdicție inline-PII.


17) Testarea

Contract/Schema de încercări pentru adaptoare și API-uri.
Teste relevante: seturi de aur de interogări → rezultate așteptate/ordine.
Personalizare: ASC offline/NDCG + online A/B cu valori guardrail (timp în joc, depozite, semnale RG).
Haos: degradarea furnizorului, piroane de ingerare, întârzieri de indexare.


18) Cărți de joc (runbooks)

1. Index lag> SLO: opriți colecțiile secundare, creșteți prioritatea ingerării, simplificați temporar clasarea.
2. Furnizorul „roșu”: coborâți/ascundeți jocurile sale, ridicați colecții alternative.
3. Salt de eroare API: verificați memoria cache/backend, activați timpii de securitate, reduceți dimensiunea paginii.
4. Disponibilitate incorectă: întoarceți ultima regulă, includeți o „listă albă” de piețe critice, modificări de audit.
5. Clasament: rollout canar (5% → 25% → 50% → 100%), CTR/rollback de conversie.


19) Erori tipice

Amestecarea schemelor furnizorilor externi cu un model intern (fără ACL).
Absența 'as _ of/prospețime' → dispute cu privire la directorul „învechit”.
Personalizare care încalcă regulile jurisdicţionale.
Singura formulă de clasare „magică” fără descompunerea semnalelor și A/B.
Pagini mari fără cache și cursoare → p99 „trage”.
Dual-write la index și OLTP în loc de evenimente + proiecții.


20) Lista de verificare pre-vânzare

  • Dicționar de câmp normalizat și ACL pentru toți furnizorii.
  • Idempotent ingera, outbox/inbox, DLQ și redrive.
  • Catalog proiecții și indici de căutare cu SLO prospețime.
  • Clasamentul controlat de greutate, descompunerea semnalului și A/B.
  • Regulile de conformitate (geo/vârstă/subiect) și auditul modificărilor.
  • Multi-chiriaș/regiune: izolarea datelor, corectitudine, rezidență.
  • API cu 'as _ of', fațete, cursoare; cache și handicap în funcție de eveniment.
  • p95/p99 metrici, ingerare/indexare, CTR/conversie; alerte.
  • Registrele de redare incidente; eliberări canare și ficheflags.
  • Teste de relevanță, contracte, haos și personalizare.

Concluzie

Motorul de catalog este un „motor de căutare + sistem de reguli + vitrină” peste conținutul jocului. Date puternice ACL, normalizate, proiecții pentru citiri rapide, semnale transparente de clasificare, personalizare cu măsurători de gard și conformare strictă transformă catalogul într-o pârghie de creștere durabilă și măsurabilă a produsului - fără surprize în producție și fără compromisuri cu autoritățile de reglementare.

Contact

Contactați-ne

Scrieți-ne pentru orice întrebare sau solicitare de suport.Suntem mereu gata să ajutăm!

Pornește integrarea

Email-ul este obligatoriu. Telegram sau WhatsApp sunt opționale.

Numele dumneavoastră opțional
Email opțional
Subiect opțional
Mesaj opțional
Telegram opțional
@
Dacă indicați Telegram — vă vom răspunde și acolo, pe lângă Email.
WhatsApp opțional
Format: cod de țară și număr (de exemplu, +40XXXXXXXXX).

Apăsând butonul, sunteți de acord cu prelucrarea datelor dumneavoastră.