GH GambleHub

Inhaltsverzeichnis-Engine

Die Katalog-Engine ist der Kern der Spiele-Schaufenster und Promo-Picks an der Front: Sie sammelt und normalisiert Metadaten von Anbietern (RGS), bietet Suche/Filter/Ranking, wendet Verfügbarkeitsregeln nach Jurisdiktionen und Marken an, mischt Personalisierungen und Promo-Platzierungen und gibt dann schnelle Antworten über eine API mit vorhersehbarem SLO.


1) Ziele und Grundsätze

Schnelle Lesungen: p95 ≤ 100-150 ms pro Katalog-/Suchanfrage.
Wahrheit und Frische: garantierte Relevanz der Schlüsselattribute (Verfügbarkeit, Jackpots, Anbieterstatus).
Flexibilität: redaktionelle Sammlungen und Promo-Slots ohne Releases.
Compliance: Regeln für Geo/Alter/Inhalt, Lizenzen, Einschränkungen für verantwortungsvolles Spielen.
Multi-Tenant/Region: Isolierung von Marken und Einhaltung der Datenresidenz.
Beobachtbarkeit: Output-Qualitätsmetriken, A/B, Umwandlung in Spiel/Wette.


2) Domänenmodell (Minimum)

Entitäten:
  • Game ist ein Spiel/Produkt des Anbieters.
  • Anbieter ist RGS/studio.
  • Variante - Varianten eines Spiels (Volatilität, Linien, Limits, Server).
  • Sammlung - redaktionelle/automatische Auswahl (z.B. „Neuheiten“, „Jackpots“).
  • Platzierung - verankerte Position/Banner/Tile auf der Seite/im Slot.
  • Kapazität/Feature - Spielattribute (Freispiele, Buy Feature, Jackpot).
  • JurisdictionRule - Regeln für Verfügbarkeit/Einschränkungen.
  • Signale - Verhaltens-/Betriebssignale (Popularität, CTR, Revenue).
  • Asset - Medien (Icons, Poster, Demo-Videos) mit Optionen für Geräte/Dichten.

Schlüssel: 'game _ id' (stabil intern, nicht gleich provider_game_id), 'tenant _ id', 'region', 'locale'.


3) Ingest und Normalisierung

Förderer:

1. Source Adapters (Puller): Integrationen mit RGS/Studios (Kataloge, Fiches, RTP, Tags).

2. Sanitize & Map: Mapping externer Felder in einem einzigen Wörterbuch (ACL), Validierung und Deduplizierung.

3. Enrich: Lokalisierungen, Kategorien, semantische Tags, Altersfreigaben.

4. Moderate: Content Flags (NSFW/religiöse Symbole/sensible Themen) nach Märkten.

5. Publish: Ereignisse' GameUpserted/ProviderStatusChanged '→ Katalogprojektion.

Idempotenz: alle Nachrichten mit 'source _ id' + 'version _ ts'; Die Wiederholung wird ohne Nebenwirkungen verarbeitet.
Evolutionsschema: 'schema _ version' in Adaptern + Mapper-Migration.


4) Normalisiertes Schema (vereinfacht)

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) Suche, Filter, Facetten

Indizes: Volltext durch Namen/Synonyme, Facetten durch 'provider', 'capabilities', 'volatility', 'rtp _ bucket', 'tags'.
Filter: Gerichtsstand/Region/Sprache/Gerät/Alter, nur aktiv/zertifiziert.
Synonyme/Stemming: Eine Karte mit benutzerdefinierten Begriffen („Bücher“, „Früchte“, „Bälle“).
Tippfehler: tolerante Suche (edit distance ≤1 -2) mit Längenbeschränkung.


6) Ranking: Signale und Formel

Signale (Beispiel):
  • Freshness (Zeit seit der Veröffentlichung).
  • Popularity (Starts/Stunde, einzigartige Spieler).
  • Qualität (CTR von Katalog zu Spiel, halten 1/7 Tag).
  • Geschäft (Marketing-Boosts, Angebote, Promo-Slots).
  • Compliance (weiche Downgrades für sensible Inhalte, falls erforderlich).
  • Player-fit (Profil/Präferenz Kompatibilität).
Kombination (Konzept):

score = w1freshness + w2popularity + w3ctr + w4player_fit + w5boost

Gewichte werden durch Konfiguration/Experimente gesteuert; alle Signale sind auf [0; 1].


7) Personalisierung

Kurzes Gedächtnis: die neuesten Starts und Genres, RYW - der Benutzer sieht sofort frische Aktionen.
Langes Gedächtnis: Embeddings von Spielen und Spielerprofilen (Spielgenres/Volatilität/Sessions).
Sicherheit: Personalisierung verstößt niemals gegen Zuständigkeits-/Altersregeln.
Fallback: Wenn es wenig Signale gibt - neutrales Ranking + redaktionelle Sammlungen.


8) Kollektionen und Promo-Platzierungen

Sammlungen:
  • Auto: Regel/Abfrage (z.B., 'capabilities contains' jackpot 'AND release_date> = NOW () -30d').
  • Redaktionell: manuelle Liste mit Reihenfolge und Fristen.
  • Platzierungen: verankerte Positionen auf Seiten (Held, Reihe-1-Slot-3), A/B, Targeting nach Segmenten/Jurisdiktionen.
  • Fristen und Prioritäten: 'starts _ at/ends _ at', Priorität der Kollisionen, Vorschau vor der Veröffentlichung.

9) Compliance- und Verfügbarkeitspolitik

Geo/Gerichtsbarkeit: weiße/schwarze Listen von Ländern/Regionen, Prüfung von Lizenzen/Zertifikaten.
Alterseinstufung: Mindestalter, Warnungen, Verschleierung für inkompatible Märkte.
Thema/Symbolik: Flaggen sensibler Inhalte nach Ländern (Religion, Alkohol usw.).
Verantwortungsvolles Spielen: Ausblenden/Herunterstufen für Spieler mit Limits/Timeout.
Audit: Unveränderliches Protokoll von Verfügbarkeitsänderungen mit Ursachen.


10) Multi-Tenant und Multi-Region

Alle Daten sind mit 'tenant _ id' und 'region' gekennzeichnet.
Isolierung: Quorum/Speicher nach Region; regionalübergreifende Projektionen - nur Aggregate.
Fairness: Quoten für ingest/Publikationen per tenant, damit die „laute“ Marke die anderen nicht verzögert.


11) Architektonischer Umriss

Verzeichnis Write Core (CP): Normalisierung + Transaktions-Outbox von Ereignissen.
Projektionen/Read Models (EC): Suchindizes, materialisierte Sammlungen, Popularitätszähler.

Cache-Ebenen:
  • Edge/CDN für „kalte“ Seiten/Bilder.
  • In-Memory-Caches für Hot Requests (key = Filter + Seite + Tenant + Region).
  • Ficheflagi: Rolling Ranking-Regeln/Sammlungen ohne Release.

12) API (REST/GraphQL, Beispiele)

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 (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
}
}
Verträge:
  • Gib immer 'as _ of/freshnessMs', Packaging, Facetten zurück.
  • Zur Personalisierung - Session Token (RYW) ohne PII.

13) Signale und Datenfluss

Popularität: Inkremente beim Start von Spielen → Minutenbakets → Aggregate in der Projektion.
CTR/Conversion: Klick-/Startzähler auf Platzierungen/Sammlungen.
Betriebsstatus: Gesundheitsanbieter (RGS), Jackpots/Limits (Event-Stream).
Marketing-Boosts: Zeitquoten für Spiele/Kategorien/Anbieter.


14) Beobachtbarkeit und SLO

Katalogmetriken:
  • `catalog_p95_ms`, `catalog_p99_ms`, `error_rate`.
  • „index _ freshness _ ms“ (Projektverzögerung), „ingest _ lag _ ms“.
  • 'ctr', 'click-to-launch', 'collection _ coverage' (% der Ausgabe aus Sammlungen).
Personalisierung:
  • `lift_ctr`, `lift_conversion`, «explore vs exploit» доля.
Compliance:
  • % korrekt angewendete Geo-/Altersregeln, Blockanzahl/Stunde.

Alertas: das Wachstum von 'ingest _ lag _ ms', der Rückgang der CTR bei Schlüsselsammlungen, die Degradierung des Anbieters (Tags in der Ausgabe).


15) Leistung und Caching

Strategie: Hot Requests - Cache für 30-120 s mit einem Schlüssel für Filter; persönliche Blöcke - kurze TTL (10-30 s) oder kein Cache.
Behinderung: durch Ereignisse' GameUpserted/AvailabilityChanged/PlacementUpdated'.
Paginierung: Stabile Cursor, damit die Karten beim Aktualisieren der Signale nicht „galoppieren“.


16) Umgang mit Medien

Renderprofile: Größen/Dichten für Web/Mobile/TV.
Optimierung: WebP/AVIF, lazy-load, sprite/atlas für Fliesen.
Content-Sicherheit: Scannen, Wasserzeichen, Inline-PII-Verbot.


17) Testen

Vertrags-/Schema-Tests für Adapter und APIs.
Relevante Tests: Goldabfragesätze → erwartete Ergebnisse/Reihenfolge.
Personalisierung: offline AUC/NDCG + online A/B mit Guardrail-Metriken (Spielzeit, Einzahlungen, RG-Signale).
Chaos: Degradierung der Anbieter, Ingest-Spitzen, Indexierungsverzögerungen.


18) Playbooks (Runbooks)

1. Index Lag> SLO: Sekundärsammlungen stoppen, ingest priorisieren, Ranking vorübergehend vereinfachen.
2. Anbieter „rot“: Herunterstufen/Ausblenden seiner Spiele, heben alternative Sammlungen.
3. API-Fehlersprung: Cache/Backend überprüfen, Schutzzeitpunkte aktivieren, Seitengröße reduzieren.
4. Falsche Verfügbarkeiten: Rücknahme der letzten Regel, Aufnahme einer „Whitelist“ kritischer Märkte, Prüfung von Änderungen.
5. Ranking-Release: Kanarienroll (5% → 25% → 50% → 100%), CTR/Conversion-Rollback.


19) Typische Fehler

Mischen der externen Schemata der Provider mit dem internen Modell (keine ACL).
Das Fehlen von „as _ of/freshness“ → Kontroversen über das „veraltete“ Verzeichnis.
Personalisierung, die gegen die Zuständigkeitsregeln verstößt.
Die einzige „magische“ Ranking-Formel ohne Zerlegung der Signale und A/B.
Große Seiten ohne Zwischenspeicherung und Cursor → p99 „schießen“.
Dual-write in Index und OLTP statt Events + Projektionen.


20) Checkliste vor dem Verkauf

  • Normalisiertes Feld Wörterbuch und ACL für alle Anbieter.
  • Idempotent ingest, outbox/inbox, DLQ und redrive.
  • Katalogprojektionen und Suchindizes mit SLO Frische.
  • Rangfolge mit steuerbaren Gewichten, Signalzerlegung und A/B
  • Compliance-Regeln (Geo/Alter/Thema) und Änderungsaudits.
  • Multi-Tenant/Region: Datenisolation, Fairness, Residency.
  • API mit 'as _ of', Facetten, Cursor; Cache und Behinderung durch Ereignisse.
  • Metriken p95/p99, ingest/indexing, CTR/conversion; Alertas.
  • Playbooks der Vorfälle; kanarische Releases und Ficheflagen.
  • Tests für Relevanz, Verträge, Chaos und Personalisierung.

Schluss

Die Katalog-Engine ist „Suchmaschine + Regelsystem + Schaufenster“ über den Spielinhalten. Starke ACLs, normalisierte Daten, Projektionen für schnelle Lesungen, transparente Rankingsignale, Personalisierung mit Guardrail-Metriken und strikte Compliance machen den Katalog zu einem nachhaltigen und messbaren Produktwachstumshebel - ohne Überraschungen in der Produktion und ohne Kompromisse bei den Regulatoren.

Contact

Kontakt aufnehmen

Kontaktieren Sie uns bei Fragen oder Support.Wir helfen Ihnen jederzeit gerne!

Integration starten

Email ist erforderlich. Telegram oder WhatsApp – optional.

Ihr Name optional
Email optional
Betreff optional
Nachricht optional
Telegram optional
@
Wenn Sie Telegram angeben – antworten wir zusätzlich dort.
WhatsApp optional
Format: +Ländercode und Nummer (z. B. +49XXXXXXXXX).

Mit dem Klicken des Buttons stimmen Sie der Datenverarbeitung zu.