محرك كتالوج المحتوى
محرك الكتالوج هو جوهر عروض الألعاب والمجموعات الترويجية في المقدمة: فهو يجمع ويطبيع البيانات الوصفية من مقدمي الخدمات (RGS)، ويوفر البحث/المرشحات/الترتيب، ويطبق قواعد إمكانية الوصول حسب الولاية القضائية والعلامة التجارية، ويمزج بين التخصيص والمواضع الترويجية، ثم يقدم ردود سريعة عبر API مع SLO يمكن التنبؤ به.
1) الأهداف والمبادئ
القراءات السريعة: p95 ≤ 100-150 ms لكل دليل/طلب بحث.
الحقيقة والنضارة: ضمان أهمية السمات الرئيسية (التوافر، الجوائز الكبرى، أوضاع مقدمي الخدمات).
المرونة: مجموعات تحرير وفتحات ترويجية بدون إصدارات.
الامتثال: قواعد geo/age/content، التراخيص، قيود اللعب المسؤولة.
متعدد المستأجرين/المنطقة: عزل العلامة التجارية والامتثال للإقامة في البيانات.
قابلية الملاحظة: Outing Quality Metrics، A/B، Game Conversion/Bet.
2) نموذج المجال (الحد الأدنى)
الكيانات:- اللعبة هي لعبة/منتج للمزود.
- المزود - RGS/studio.
- البديل - متغيرات لعبة واحدة (تقلب، خطوط، حدود، خادم).
- المجموعة - الاختيار التحريري/التلقائي (على سبيل المثال) «عناصر جديدة»، «الجوائز الكبرى»).
- التنسيب - الموقع الثابت/اللافتة/البلاط على الصفحة/في الفتحة.
- القدرة/الميزة - سمات اللعبة (دوران مجاني، ميزة شراء، جائزة كبرى).
- قاعدة الاختصاص - قواعد إمكانية الوصول/التقييد.
- الإشارات - الإشارات السلوكية/التشغيلية (الشعبية، CTR، الإيرادات).
- الأصول - الوسائط (الأيقونات والملصقات ومقاطع الفيديو التجريبية) مع خيارات للأجهزة/الكثافات.
المفاتيح: 'game _ id' (مستقر داخلي، لا يساوي provider_game_id)، 'المستأجر _ id'، 'المنطقة'، 'locale'.
3) الابتلاع والتطبيع
نقل:1. Source Adapters (pullers): التكامل مع RGS/studios (أدلة، ميزات، RTP، علامات).
2. التعقيم والخريطة - رسم خريطة الحقول الخارجية في قاموس واحد (ACL)، والتحقق من الصحة، و deduplate.
3. إثراء: التوطين، الفئات، العلامات الدلالية، تقييمات الحد العمري.
4. معتدل: أعلام المحتوى (NSFW/الرموز الدينية/الموضوعات الحساسة) حسب السوق.
5. انشر: أحداث «GameUpserted/ProviderStatusChanged» → عرض الكتالوج.
الخصوصية: جميع الرسائل التي تحتوي على 'المصدر _ id' + 'الإصدار _ ts' ؛ تتم معالجة التكرار دون آثار جانبية.
مخطط التطور: «مخطط _ إصدار» في المحولات + هجرات رسم الخرائط.
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'،" العلامات ".
المرشحات: الولاية القضائية/المنطقة/اللغة/الجهاز/العمر، نشطة/معتمدة فقط.
المرادفات/وقف: خريطة لمصطلحات المستخدم («الكتب»، «الثمار»، «الكرات»).
الأخطاء المطبعية: بحث متسامح (تحرير المسافة ≤1 -2) مع تقييد الطول.
6) الترتيب: الإشارات والصيغة
الإشارات (مثال):- النضارة (الوقت منذ الإصدار).
- عدد السكان (يبدأ/ساعة، لاعبون فريدون).
- الجودة (CTR من كتالوج إلى لعبة، عقد 1/7 يوم).
- الأعمال (تعزيز التسويق والصفقات والفتحات الترويجية).
- الامتثال (التخفيضات الميسرة للمحتوى الحساس، إذا لزم الأمر).
- ملاءمة اللاعب (توافق الملف الشخصي/التفضيل).
score = w1freshness + w2popularity + w3ctr + w4player_fit + w5boost
ويتم التحكم في الأوزان عن طريق التشكيل/التجارب ؛ جميع الإشارات طبيعية إلى [0; 1].
7) التخصيص
الذاكرة القصيرة: عمليات الإطلاق والأنواع الحديثة، RYW - يرى المستخدم على الفور حركة جديدة.
الذاكرة الطويلة: تضمين ملف تعريف اللعبة واللاعب (أنواع الألعاب/التقلبات/الجلسات).
الأمن: لا ينتهك التخصيص أبدًا القواعد القضائية/العمرية.
الاحتياطي: إذا كانت هناك إشارات قليلة - الترتيب المحايد + مجموعات التحرير.
8) المجموعات والتوظيف الترويجي
المجموعات:- تلقائي: قاعدة/استفسار (على سبيل المثال «الكوادر تحتوي على» الجائزة الكبرى «و release_date> = الآن () -30 د»).
- الافتتاحية: قائمة يدوية بالنظام والتوقيت.
- المواضع: مواقع ثابتة على الصفحات (البطل، الصف 1-الفتحة 3)، ألف/باء، الاستهداف حسب القطاع/الولاية القضائية.
- التواريخ والأولويات: "يبدأ _ عند/ينتهي _ at'، أولوية الاصطدام، معاينة قبل النشر.
9) سياسة الامتثال وإمكانية الوصول
جغرافيا/اختصاصا قضائيا: القوائم البيضاء/السوداء للبلدان/المناطق، التحقق من التراخيص/الشهادات.
التصنيف العمري: الحد الأدنى للعمر، التحذيرات، الاختباء للأسواق غير المتوافقة.
الموضوع/الرمزية: أعلام المحتوى الحساس حسب البلد (الدين، الكحول، إلخ).
اللعب المسؤول: الاختباء/خفض الرتبة للاعبين الحد/المهلة.
مراجعة الحسابات: سجل غير قابل للتغيير للتغييرات في التوافر مع الأسباب.
10) متعدد المستأجرين ومتعدد المناطق
جميع البيانات تحمل علامة «مستأجر - هوية» و «منطقة».
العزلة: النصاب/الخزائن حسب المنطقة ؛ الإسقاطات عبر الإقليمية - المجاميع فقط.
الإنصاف: حصص تناول الطعام/المنشورات لكل مستأجر حتى لا تؤخر العلامة التجارية «الصاخبة» الباقي.
11) المخطط المعماري
دليل الكتابة الأساسية (CP): التطبيع + أحداث outbox المعاملات.
الإسقاطات/نماذج القراءة (EC): مؤشرات البحث، المجموعات المجسدة، عدادات الشعبية.
- Edge/CDN للصفحات/الصور الباردة.
- مخابئ في الذاكرة للاستفسارات الساخنة (المفتاح = المرشحات + الصفحة + المستأجر + المنطقة).
- Ficheflags: قواعد الترتيب/التجميع المتداول دون إصدار.
12) واجهة برمجة التطبيقات (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" }
الرسم البياني QL (جزء)
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/newhnessMs'، استدعاء، جوانب.
- للتخصيص - علامة جلسة (RYW) بدون PII.
13) الإشارات وتدفق البيانات
الشعبية: زيادات عند إطلاق الألعاب → دلاء دقيقة → وحدات في الإسقاط.
CTR/التحويل: انقر/عدادات الإطلاق على المواضع/المجموعات.
أوضاع التشغيل: مقدمو الخدمات الصحية (RGS)، الجوائز/الحدود (تدفق الأحداث).
تعزيزات التسويق: عوامل الوقت للألعاب/الفئات/الموردين.
14) إمكانية الرصد و SLO
مقاييس الدليل:- «catalog _ p95 _ ms'،» كتالوج _ p99 _ ms'، «خطأ _ معدل».
- «index _ newhness _ ms' (تأخير المشروع)،» infest _ lag _ ms'.
- «ctr»، «click-to-launch»، «collection _ category» (النسبة المئوية للتحقق من المجموعات).
- «lift _ ctr»، «lift _ conversion»، «explore vs explit» доля.
- النسبة المئوية للقواعد الجغرافية/العمرية المطبقة بشكل صحيح، وعدد الكتل/الساعة.
التنبيهات: نمو "ingest _ lag _ ms'، وانخفاض CTR على المجموعات الرئيسية، وتدهور المزود (العلامات في المشكلة).
15) الأداء والتخزين المؤقت
الاستراتيجية: استفسارات ساخنة - مخبأ لـ 30-120 ثانية مع مفتاح بواسطة مرشحات ؛ الكتل الشخصية - TTL قصيرة (10-30 ثانية) أو بدون مخبأ.
الإعاقة: بواسطة أحداث «GameUpserted/AdvanceChange/PlacementUpdated».
التثبيت: مؤشرات مستقرة حتى لا تقفز البطاقات عند تحديث الإشارات.
16) العمل مع وسائل الإعلام
ملفات تعريف: أحجام/كثافة الويب/الهاتف المحمول/التلفزيون.
التحسين: WebP/AVIF، كسول الحمل، سبرايت/أطلس للبلاط.
أمن المحتوى: المسح، العلامات المائية، حظر inline-PII.
17) الاختبار
اختبارات العقد/المخطط للمحولين وواجهات برمجة التطبيقات.
اختبارات الصلة: مجموعات ذهبية من الاستفسارات → النتائج/الترتيب المتوقع.
التخصيص: خارج الإنترنت AUC/NDCG + عبر الإنترنت A/B مع مقاييس guardrail (وقت اللعبة، الودائع، إشارات RG).
الفوضى: تدهور المزود، ابتلاع الارتفاعات، فهرسة التأخيرات.
18) كتب اللعب (كتب التشغيل)
1. تأخر الفهرس> SLO: أوقف المجموعات الثانوية، ورفع أولوية الابتلاع، وتبسيط الترتيب مؤقتًا.
2. المزود «أحمر»: أقل/أخفي ألعابه، ارفع مجموعات بديلة.
3. قفزة خطأ واجهة برمجة التطبيقات: تحقق من ذاكرة التخزين المؤقت/الخلفية، وتمكين المهلة الأمنية، وتقليل حجم الصفحة.
4. التوافر غير الصحيح: التراجع عن القاعدة الأخيرة، بما في ذلك «القائمة البيضاء» للأسواق الهامة، والتغييرات في التدقيق.
5. إصدار الترتيب: طرح الكناري (5٪ → 25٪ → 50٪ → 100٪)، CTR/التراجع عن التحويل.
19) أخطاء نموذجية
مزج مخططات مقدمي الخدمات الخارجيين بنموذج داخلي (لا يوجد الرباط الصليبي الأمامي).
عدم وجود نزاعات → حول الدليل «القديم».
التخصيص الذي ينتهك قواعد الولاية القضائية.
صيغة الترتيب «السحرية» الوحيدة دون تحلل الإشارات و A/B.
صفحات كبيرة بدون مخبأ ومؤشرات → p99 «تصوير».
ثنائي الكتابة للفهرس و OLTP بدلا من الأحداث + التوقعات.
20) قائمة مرجعية قبل البيع
- قاموس ميداني طبيعي و ACL لجميع مقدمي الخدمة.
- ابتلاع مفعم بالحيوية، outbox/inbox، DLQ وإعادة التوليد.
- فهرس الإسقاطات ومؤشرات البحث مع نضارة SLO.
- الترتيب المتحكم في الوزن، وتحلل الإشارة و A/B.
- قواعد الامتثال (الجغرافي/العمر/الموضوع) ومراجعة التغييرات.
- متعدد المستأجرين/المنطقة: عزل البيانات، الإنصاف، الإقامة.
- API مع «as _ of»، وجوانب، ومؤشرات ؛ المخبأ والإعاقة حسب الحدث.
- p95/p99 metrics, intest/indexing, CTR/conversion; تنبيهات.
- كتب اللعب الخاصة بالحوادث ؛ إطلاقات الكناري و ficheflags.
- اختبارات الصلة والعقود والفوضى والتخصيص.
خامسا - الاستنتاج
محرك الكتالوج هو «محرك بحث + نظام قواعد + عرض» على محتوى اللعبة. يحول الرباط الصليبي الأمامي القوي والبيانات الطبيعية والتوقعات للقراءات السريعة وإشارات الترتيب الشفافة والتخصيص بمقاييس سكة الحديد والامتثال الصارم الكتالوج إلى رافعة منتج مستدامة وقابلة للقياس للنمو - دون مفاجآت في الإنتاج ودون تنازلات مع المنظمين.