GH GambleHub

موتور کاتالوگ محتوا

موتور کاتالوگ هسته اصلی ویترین های بازی و مجموعه های تبلیغاتی در جلو است: ابرداده را از ارائه دهندگان (RGS) جمع آوری و نرمال می کند، جستجو/فیلتر/رتبه بندی را فراهم می کند، قوانین دسترسی را با صلاحیت و برند اعمال می کند، شخصی سازی و مکان های تبلیغاتی را مخلوط می کند، و سپس پاسخ های سریع را از طریق API با SLO قابل پیش بینی ارائه می دهد.


1) اهداف و اصول

خواندن سریع: p95 ≤ 100-150 میلی ثانیه در هر درخواست دایرکتوری/جستجو.
حقیقت و طراوت: ارتباط تضمین از ویژگی های کلیدی (در دسترس بودن، jackpots، وضعیت ارائه دهنده).
انعطاف پذیری: مجموعه های سرمقاله و اسلات های تبلیغاتی بدون انتشار.
انطباق: قوانین جغرافیایی/سن/محتوا، مجوزها، محدودیت های بازی مسئول.
چند مستاجر/منطقه: جداسازی نام تجاری و انطباق اقامت داده ها.
قابلیت مشاهده: معیارهای کیفیت خروجی، A/B، تبدیل بازی/شرط.


2) مدل دامنه (حداقل)

سازمان ها:
  • بازی یک بازی/محصول از ارائه دهنده است.
  • ارائه دهنده - RGS/استودیو.
  • نوع - انواع یک بازی (نوسانات، خطوط، محدودیت ها، سرور).
  • مجموعه - سرمقاله/انتخاب خودکار (به عنوان مثال،. «موارد جدید»، «جکپات»).
  • قرار دادن - موقعیت ثابت/بنر/کاشی در صفحه/در اسلات.
  • قابلیت/ویژگی - ویژگی های بازی (چرخش آزاد, ویژگی خرید, برنده تمام پولها).
  • JurisdictionRule - قوانین دسترسی/محدودیت.
  • سیگنال ها - سیگنال های رفتاری/عملیاتی (محبوبیت، CTR، درآمد).
  • دارایی - رسانه (آیکون ها، پوسترها، فیلم های نسخه ی نمایشی) با گزینه هایی برای دستگاه ها/تراکم.

کلید: 'game _ id' (داخلی پایدار، برابر با provider_game_id)، 'tenant _ id'، 'region'، 'locale'.


3) مصرف و عادی سازی

نوار نقاله:

1. آداپتورهای منبع (کشش): ادغام با RGS/استودیو (دایرکتوری ها، ویژگی ها، RTP، برچسب ها).

2. Sanitize & Map - نقشه های خارجی را به یک فرهنگ لغت واحد (ACL)، اعتبار و deduplicate.

3. غنی سازی: محلی سازی، دسته بندی، برچسب های معنایی، رتبه بندی محدودیت سنی.

4. متوسط: پرچمهای محتوا (NSFW/نمادهای مذهبی/موضوعات حساس) بر اساس بازار.

5. انتشار: 'GameUpserted/ProviderStatusChanged' رویدادها → طرح ریزی کاتالوگ.

Idempotence: تمام پیام ها با 'source _ id' + 'version _ ts' ؛ تکرار بدون عوارض جانبی پردازش می شود.
طرح تکامل: «schema _ version» در آداپتورها + مهاجرت mapper.


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) جستجو، فیلتر، جنبه

شاخص ها: متن کامل با نام/مترادف، جنبه های «ارائه دهنده»، «قابلیت ها»، «نوسانات»، «rtp _ bucket»، «برچسب ها».
فیلترها: صلاحیت/منطقه/زبان/دستگاه/سن، فقط فعال/تایید شده است.
مترادف/stemming: نقشه ای از اصطلاحات کاربر («کتاب ها»، «میوه ها»، «توپ»).
تایپ: جستجوی تحمل (فاصله ویرایش ≤1 -2) با محدودیت طول.


6) رتبه بندی: سیگنال ها و فرمول

سیگنال ها (مثال):
  • تازگی (زمان از زمان انتشار).
  • جمعیت (شروع/ساعت، بازیکنان منحصر به فرد).
  • کیفیت (CTR از کاتالوگ به بازی، نگه داشتن 1/7 روز).
  • کسب و کار (افزایش بازاریابی، معاملات، اسلات های تبلیغاتی).
  • انطباق (در صورت لزوم برای محتوای حساس، نرم افزار را کاهش می دهد).
  • بازیکن مناسب (مشخصات/اولویت سازگاری).
ترکیب (مفهوم):

score = w1freshness + w2popularity + w3ctr + w4player_fit + w5boost

وزن توسط پیکربندی/آزمایش کنترل می شود ؛ تمام سیگنال های نرمال به [0 ؛ 1].


7) شخصی سازی

حافظه کوتاه: راه اندازی های اخیر و ژانرها، RYW - کاربر بلافاصله اقدام تازه را می بیند.
حافظه طولانی: بازی و بازیکن تعبیه مشخصات (ژانرهای بازی/نوسانات/جلسات).
امنیت: شخصی سازی هرگز قوانین قضایی/سن را نقض نمی کند.
Fallback: اگر سیگنال های کمی وجود داشته باشد - رتبه بندی خنثی + مجموعه های سرمقاله.


8) مجموعه ها و مکان های تبلیغاتی

مجموعه ها:
  • خودکار: قانون/پرس و جو (به عنوان مثال 'capabilities contains' jackpot 'AND release_date> = NOW () -30d').
  • سرمقاله: لیست دستی با سفارش و زمان بندی.
  • قرار دادن: موقعیت های ثابت در صفحات (قهرمان، ردیف 1 اسلات 3)، A/B، هدف قرار دادن بخش/صلاحیت.
  • تاریخ ها و اولویت ها: 'stars _ at/ends _ at'، اولویت برخورد، پیش نمایش قبل از انتشار.

9) سیاست انطباق و دسترسی

جغرافیایی/قضایی: لیست سفید/سیاه کشورها/مناطق، تأیید مجوزها/گواهینامه ها.

رده بندی سنی: حداقل سن، هشدارها، پنهان شدن برای بازارهای ناسازگار

موضوع/نمادگرایی: پرچم های محتوای حساس بر اساس کشور (دین، الکل و غیره).
بازی مسئول: پنهان کردن/demote برای بازیکنان محدود/زمان.
حسابرسی: ورود به سیستم تغییر ناپذیر از تغییرات در دسترس بودن با دلایل.


10) چند مستاجر و چند منطقه

تمام داده ها با «tenant _ id» و «region» مشخص شده اند.
جداسازی: quorums/غرفه های منطقه ؛ پیش بینی های بین منطقه ای - فقط جمع می شود.
عدالت: سهمیه برای مصرف/انتشارات در هر مستاجر به طوری که نام تجاری «پر سر و صدا» بقیه را به تاخیر نمی اندازد.


11) طرح معماری

دایرکتوری Write-core (CP): normalization + رویدادهای ارسالی معاملات.
پیش بینی ها/مدل های خواندن (EC): شاخص های جستجو، مجموعه های تحقق یافته، شمارنده های محبوبیت.

لایه های حافظه پنهان:
  • لبه/CDN برای صفحات/تصاویر سرد.
  • حافظههای نهان درون حافظه برای پرسوجوهای داغ (key = filters + page + tenant + region).
  • Ficheflags: قوانین رتبه بندی/مجموعه نورد بدون انتشار.

12) API (REST/GraphQL، نمونه)

استراحت کردن


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»، صفحه بندی، چهره ها را برگردانید.
  • برای شخصی سازی - نشانگر جلسه (RYW) بدون PII.

13) سیگنال ها و جریان داده ها

محبوبیت: افزایش در هنگام راه اندازی بازی → سطل دقیقه → واحد در طرح ریزی.
CTR/تبدیل: کلیک کنید/راه اندازی شمارنده در دادن/مجموعه.
وضعیت های عملیاتی: ارائه دهندگان خدمات بهداشتی (RGS)، jackpots/limits (جریان رویداد).
افزایش بازاریابی: عوامل زمان برای بازی ها/دسته ها/تامین کنندگان.


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/PlacementUpdated».
صفحه بندی: نشانگر پایدار به طوری که به «پرش» کارت در هنگام به روز رسانی سیگنال.


16) همکاری با رسانه ها

رندر پروفایل: اندازه/تراکم برای وب/تلفن همراه/تلویزیون.
بهینه سازی: WebP/AVIF، تنبل بار، sprite/اطلس برای کاشی.
امنیت محتوا: اسکن، علامت های سفید، ممنوعیت inline-PII.


17) تست کردن

تست قرارداد/طرح برای آداپتورها و API ها.
تست ربط: مجموعه ای طلایی از نمایش داده شد → نتایج مورد انتظار/سفارش.
شخصی سازی: AUC/NDCG آفلاین + A/B آنلاین با معیارهای گارد محافظ (زمان بازی، سپرده ها، سیگنال های RG).
هرج و مرج: تخریب ارائه دهنده، سنبله مصرف، تاخیر نمایه سازی.


18) کتاب های بازی (کتاب های اجرا)

1. تاخیر شاخص> SLO: مجموعه های ثانویه را متوقف کنید، اولویت مصرف را افزایش دهید، به طور موقت رتبه بندی را ساده کنید.
2. ارائه دهنده «قرمز»: پایین تر/پنهان کردن بازی های خود را، بالا بردن مجموعه های جایگزین.
3. پرش خطای API: بررسی کش/باطن، فعال کردن زمان های امنیتی، کاهش اندازه صفحه.
4. در دسترس بودن نادرست: آخرین قانون را رد کنید، شامل یک «لیست سفید» از بازارهای بحرانی، تغییرات حسابرسی.
5. انتشار رتبه بندی: رول قناری (5٪ → 25٪ → 50٪ → 100٪)، بازگشت CTR/تبدیل.


19) خطاهای معمول

مخلوط کردن طرح های ارائه دهنده خارجی با یک مدل داخلی (بدون ACL).
فقدان «as _ of/freshness» → اختلافات در مورد فهرست «منسوخ».
شخصی سازی که قوانین قضایی را نقض می کند.
تنها فرمول رتبه بندی «سحر و جادو» بدون تجزیه سیگنال ها و A/B.
صفحات بزرگ بدون ذخیره و نشانگر → p99 «ساقه».
Dual-write to index و OLTP به جای رویدادها + پیش بینی ها.


20) چک لیست پیش فروش

  • فرهنگ لغت درست نرمال و ACL برای همه ارائه دهندگان.
  • مصرف ایده آل، صندوق ورودی/صندوق ورودی، DLQ و redrive.
  • پیش بینی کاتالوگ و شاخص های جستجو با SLO طراوت.
  • رتبه بندی کنترل وزن، تجزیه سیگنال و A/B.
  • قوانین انطباق (جغرافیایی/سن/موضوع) و ممیزی تغییرات.
  • چند مستاجر/منطقه: جداسازی داده ها، انصاف، اقامت.
  • API با 'as _ of'، جنبه ها، نشانگر ها ؛ کش و ناتوانی توسط رویداد.
  • معیارهای p95/p99، مصرف/نمایه سازی، CTR/تبدیل ؛ هشدار ها
  • کتابهای حوادث ؛ قناری آزاد و ficheflags.
  • تست ارتباط، قراردادها، هرج و مرج و شخصی سازی.

نتیجه گیری

موتور کاتالوگ یک «موتور جستجو + سیستم قانون + نمایشگاه» بیش از محتوای بازی است. ACL قوی، داده های نرمال، پیش بینی برای خواندن سریع، سیگنال های رتبه بندی شفاف، شخصی سازی با معیارهای گارد محافظ و انطباق دقیق، کاتالوگ را به یک اهرم محصول پایدار و قابل اندازه گیری رشد تبدیل می کند - بدون شگفتی در تولید و بدون مصالحه با تنظیم کننده ها.

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.