موتور کاتالوگ محتوا
موتور کاتالوگ هسته اصلی ویترین های بازی و مجموعه های تبلیغاتی در جلو است: ابرداده را از ارائه دهندگان (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®ion=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 قوی، داده های نرمال، پیش بینی برای خواندن سریع، سیگنال های رتبه بندی شفاف، شخصی سازی با معیارهای گارد محافظ و انطباق دقیق، کاتالوگ را به یک اهرم محصول پایدار و قابل اندازه گیری رشد تبدیل می کند - بدون شگفتی در تولید و بدون مصالحه با تنظیم کننده ها.