GH GambleHub

内容目录引擎

目录引擎是游戏展示柜和促销收藏品的核心:它收集和规范提供商(RGS)的元数据,提供搜索/过滤器/排名,跨辖区和品牌应用可用性规则,调节个性化和促销程序,然后通过具有可预测SLO的API提供快速响应。


1)目标和原则

快速读取:p95 ≤ 100-150毫秒的目录/搜索请求。
真实与新鲜:保证关键属性(可用性、头奖、提供商状态)的相关性。
灵活性:编辑收藏和非发行促销插槽。
合规性:地理/年龄/内容规则,许可证,负责任游戏的限制。
多特南特/地区:品牌隔离和数据驻留合规性。
可观察性:发射质量指标,A/B,转换为游戏/投注。


2)域模型(最小值)

实体:
  • 游戏是提供商的游戏/产品。
  • Provider-RGS/工作室。
  • 变体-单个游戏选项(波动,线路,限制,服务器)。
  • Collection是编辑/自动选择(例如,"Novinki","Jackpots")。
  • Placement-页面/插槽中的固定位置/横幅/标记。
  • 能力/功能-游戏属性(免费旋转、购买功能、大奖)。
  • JurisdictionRule-可用性/限制规则。
  • 信号-行为/操作信号(受欢迎,CTR,revenue)。
  • Asset-具有设备/密度选项的媒体(图标,海报,演示视频)。

键:"game_id"(稳定的内部,不等于provider_game_id),"tenant_id","region","locale"。


3)Ingest和正常化

输送机:

1.源适配器(pullers):与RGS/工作室集成(目录、fici、RTP、标签)。

2.Sanitize&Map:将外部字段映射到单个字典(ACL),验证和重复数据消除。

3.Enrich:本地化,类别,语义标签,年龄限制等级。

4.Moderate:跨市场内容标志(NSFW/宗教符号/敏感主题)。

5.Publish: "GameUpserted/ProviderStatusChanged"事件→目录投影。

相似性:所有带有"source_id"+"version_ts"的消息;重复处理没有副作用。
演变方案:适配器+mapper迁移中的"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"。
过滤器:管辖权/地区/语言/设备/年龄,只有主动/认证。
同义词/stemming:用户术语地图("书","水果","球")。
错字:具有长度限制的tolerant搜索(编辑距离≤1 -2)。


6)排名: 信号和公式

信号(示例):
  • Freshness(发布时间)。
  • 人口(发射/小时,独特的玩家)。
  • 质量(从目录到游戏的CTR,保持1/7天)。
  • 商业(营销助推器,交易,促销插槽)。
  • 法规遵从性(如果需要,敏感内容的软降级)。
  • Player-fit(配置文件/首选项兼容性)。
组合(概念):

score = w1freshness + w2popularity + w3ctr + w4player_fit + w5boost

权重由配置/实验控制;所有信号均标准化为[0;1].


7)个性化

短内存:最新推出和流派,RYW-用户立即看到新的动作。
长期记忆:游戏和玩家配置文件(游戏类型/波动/会话)。
安全:个性化永远不会违反管辖权/年龄规则。
Fallback:如果信号很少-中性排名+编辑收藏。


8)收藏品和促销播放器

收藏品:
  • Auto:规则/查询(例如,"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)建筑轮廓

写入目录内核(CP):规范化+事务性事件输出。
投影/阅读模型(EC):搜索索引,实例化集合,人气计数器。

缓存层:
  • Edge/CDN用于"冷"页面/图像。
  • 热请求的内存缓存(key=过滤器+页面+tenant+region)。
  • Ficheflagi:滚动排名/收藏规则,不发布。

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, fasts。
  • 个性化是没有PII的会话标记(RYW)。

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» доля.
合规性:
  • 正确适用的地理/年龄规则的百分比,块数/小时。

Alerts: "ingest_lag_ms"的增长、关键收藏的CTR的下降、提供商的退化(发行中的标签)。


15)性能和缓存

策略:热请求-带过滤器密钥的30-120缓存;个人单元-短的TTL (10-30 c)或无缓存。
残疾:通过"GameUpserted/可用性更改/PlacementUpdated"事件。
分割:稳定的光标,以便在更新信号时不会"跳跃"卡片。


16)与媒体合作

渲染配置文件:web/mobile/TV的尺寸/密度。
优化:WebP/AVIF, lazy-load, sprite/atlas用于瓷砖。
内容安全:扫描,水印,inline-PII禁令。


17)测试

适配器和API的合同/计划测试。
救济测试:黄金查询集→预期结果/顺序。
个性化:离线AUC/NDCG+online A/B with guardrail度量(游戏时间、存款、RG信号)。
混乱:提供商降级,激增,索引延迟。


18)花花公子(runbooks)

1.索引差>SLO:停止次要集合,提高优先级,暂时简化排名。
2.提供商"红色":降级/隐藏其游戏,提升其他收藏。
3.API错误跳跃:检查缓存/后端,启用安全时间表,减小页面大小。
4.不正确的可用性:回滚最新规则,包括关键市场的"白名单",并审核更改。
5.排名发布:Canary rollout (5% → 25% → 50% → 100%), CTR/转换回滚。


19)典型错误

将外部提供商方案与内部模型混合(没有ACL)。
缺乏"as_of/freshness" →关于"过时"目录的争论。
违反管辖规则的个性化。
唯一不分解信号和A/B的"魔术"排名公式。
没有缓存的大页面和光标→ p99"射击"。
将双写入索引和OLTP而不是事件+投影。


20)售前支票清单

  • 所有提供商的归一化字段和ACL字典。
  • Idempotent ingest、outbox/inbox、DLQ和redrive。
  • 带有新鲜度SLO的目录投影和搜索索引。
  • 受控权重排名,信号分解和A/B。
  • 合规规则(地理/年龄/主题)和变更审核。
  • multi-tenant/region:数据隔离,公平,居住。
  • 具有"as_of",面板,游标的API;缓存和事件致残。
  • p95/p99度量标准,ingest/索引,CTR/转换;Alertes。
  • 事件花花公子;金丝雀发行和ficheflagi。
  • 相关性、合同、溷乱和个性化测试。

二.结论

目录引擎是游戏内容上的"搜索引擎+规则系统+展示柜"。强大的ACL、规范化的数据、快速阅读的投影、透明的排名信号、带有guardrail度量的个性化和严格的合规性将目录变成一个可持续和可衡量的产品增长杠杆--在生产中没有惊喜,也没有与监管机构妥协。

Contact

联系我们

如需任何咨询或支持,请随时联系我们。我们随时准备提供帮助!

开始集成

Email — 必填。Telegram 或 WhatsApp — 可选

您的姓名 可选
Email 可选
主题 可选
消息内容 可选
Telegram 可选
@
如果填写 Telegram,我们也会在 Telegram 回复您。
WhatsApp 可选
格式:+国家代码 + 号码(例如:+86XXXXXXXXX)。

点击按钮即表示您同意数据处理。