# SEO, GEO, Tracking, and Attribution Architecture

## هدف المرحلة

هذه المرحلة تجعل منصة ECOLE ECOIN جاهزة كأساس إنتاجي لـ SEO وGEO والتتبع التسويقي بدون نثر السكربتات داخل Blade. التنفيذ الحالي يثبت الطبقات المركزية، ثم يمكن توسيعه لاحقًا بلوحات تقارير أعمق وServer-side Conversions API كاملة.

## SEO مقابل GEO

SEO يستهدف محركات البحث التقليدية مثل Google وBing عبر:
- meta title/description/canonical/robots
- Open Graph وTwitter cards
- sitemap.xml وrobots.txt
- Schema.org JSON-LD

GEO يستهدف محركات الذكاء الاصطناعي مثل ChatGPT وPerplexity وGemini عبر:
- machine-readable meta مثل `ai-content-type`
- `content-purpose`
- `target-audience`
- JSON-LD واضح
- مكوّن `x-geo.ai-content-block` للمحتوى الدلالي القابل للفهم آليًا

## الطبقات المضافة

### SEO

المجلد الأساسي:

`app/Support/Seo`

المكونات:
- `MetaBuilder`: موجود مسبقًا وتم توسيعه لحقول GEO.
- `SeoManager`: نقطة دخول موحدة للـ meta والـ structured data.
- `StructuredDataBuilder`: يبني JSON-LD لـ Organization وEducationalOrganization وLocalBusiness وCourse وEvent وArticle وBreadcrumbList.
- `SitemapBuilder`: يبني sitemap index وخرائط الصفحات والدورات والفعاليات.
- `RobotsManager`: يمنع الفهرسة في غير production ويمنع admin/portal/org/auth في production.
- `OpenGraphBuilder`: يحتفظ بقواعد أبعاد صور المشاركة.

### Tracking

المجلد الأساسي:

`app/Support/Tracking`

المكونات:
- `Attribution`: يحفظ first touch وlast touch في session من UTM وfbclid وttclid وgclid والـ referrer.
- `TrackingManager`: يسجل الأحداث في `tracking_events`.
- `GTMProvider`, `MetaPixelProvider`, `TikTokPixelProvider`: يعزل إعدادات المزودين.
- `ServerSideEventDispatcher`: نقطة جاهزة لتوصيل Meta CAPI وTikTok Events API لاحقًا دون تسريب tokens.

## قاعدة البيانات

تمت إضافة جدول:

`tracking_events`

يسجل:
- event_name
- source
- user/session/anonymous identifiers
- url/referrer
- UTM
- fbclid/ttclid/gclid
- payload آمن بعد إزالة المفاتيح الحساسة

## Consent وPixels

الحقن يتم من:

`resources/views/components/tracking/scripts.blade.php`

القواعد:
- Analytics/GTM لا تعمل إلا عند موافقة `analytics`.
- Meta/TikTok لا تعمل إلا عند موافقة `marketing`.
- لا يتم حقن access tokens في الواجهة.
- روابط WhatsApp `wa.me` يتم تتبعها تلقائيًا كـ `WhatsAppClick`.

## Routes

Public SEO:
- `/robots.txt`
- `/sitemap.xml`
- `/sitemap-pages.xml`
- `/sitemap-courses.xml`
- `/sitemap-events.xml`

Tracking:
- `POST /tracking/events`

Analytics:
- `/admin/analytics`
- يتطلب صلاحية `analytics.view`.

## Conversion Funnel

الأحداث الموحدة المدعومة كبداية:
- `PageView`
- `ViewContent`
- `WhatsAppClick`
- `Lead`
- `CompleteRegistration`
- `InitiateCheckout`
- `Purchase`
- `Contact`
- `Schedule`
- `SubmitApplication`

## Attribution Flow

1. أول زيارة تحمل UTM أو click id تحفظ كـ first touch.
2. آخر إشارة تسويقية تحفظ كـ last touch.
3. كل event يسجل UTM/click ids الحالية أو آخر touch محفوظ.
4. لاحقًا يمكن ربط `TrackingManager::track()` مباشرة عند إنشاء lead/enrollment/payment/corporate request.

## Privacy

تم ربط التتبع بموافقة الكوكيز الحالية:
- essential دائمًا
- analytics للتحليلات وGTM
- marketing للـ Meta Pixel وTikTok Pixel

## ما تم اختباره

تمت إضافة اختبارات تغطي:
- وجود GEO meta وJSON-LD في الصفحة العامة.
- sitemap وrobots.
- عدم حقن Meta/TikTok بدون موافقة.
- حقن Meta/TikTok عند الموافقة والتفعيل.
- تخزين tracking event مع attribution.
- حماية `/admin/analytics` بالصلاحية.

## الخطوات التالية المقترحة

- ربط `TrackingManager::track()` داخل إنشاء التسجيل والدفع وB2B lead بدل الاعتماد على browser events فقط.
- إضافة admin settings UI لإدارة GTM/Meta/TikTok بدل ENV فقط.
- تفعيل server-side Meta CAPI وTikTok Events API عبر queue jobs.
- توسيع Dashboard التحليلات إلى cohorts/courses/corporate pipeline بشكل أعمق.
