feat(marketing): consent-gated measurement layer + pricing-intelligence legal brief

البند ٢ — استخبارات التسعير (docs/35 جديد):
- توصيف تقني دقيق من كود سيرو: المصدر ليس "كشط أسعار معلنة" بل
  بوت أندرويد على أجهزة حقيقية يشغّل 7 تطبيقات منافسة مُسمّاة
  بمعرّف الحزمة (standalone_worker.php:665) بدفعات حتى 100 مهمة
- فصل ثلاثة أخطار مستقلة: الوصول الآلي · قانون المنافسة · البيانات
- الخطر الأكبر (لم يكن موثّقاً): بيع المحرّك لمشغّلَين في نفس المدينة
  = ترتيب hub-and-spoke تقع مسؤوليته على المحور أي Tripz
- ضابط مقترح: مشغّل واحد لكل مدينة، في العقد وفي الكود
- تنظيف صياغة الموقع: صفر أسماء منافسين، وحُذفت "اعرف كيف يسعّر
  منافسك قبل أن يعرف هو" لأنها تصلح دليل نيّة في نزاع

البند ٣ — طبقة القياس (docs/32 §5):
- شريط موافقة بأربع لغات، الرفض بنفس بروز القبول
- البكسل لا يُحمَّل قبل الموافقة (مطلوب لزوّار الاتحاد الأوروبي:
  الموقع بالفرنسية والإسبانية)
- 8 أحداث تغطي القمع كاملاً حتى Lead بمعامل القناة
- PIXEL_ID فارغ عمداً: لا شيء ينكسر ولا شيء يُقاس حتى يُملأ

تحقُّق: صفر أخطاء console · صفر عناصر i18n فارغة في اللغات الأربع ·
fbq غير معرّف قبل الموافقة · الأحداث تُطلق بعدها

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Hamza-Ayed
2026-07-24 05:14:28 +03:00
co-authored by Claude Opus 4.8
parent 8cbaa89642
commit 7b02b27d92
3 changed files with 342 additions and 4 deletions
+46
View File
@@ -225,6 +225,52 @@ Same LOCKED STYLE as above. No readable text.
---
---
## 5) طبقة القياس — منفَّذة 2026-07-24 ✅
كان في المراجعة النقدية عائق صريح: **خطة إعلانية بأهداف CAC بين $150–400 بلا أداة واحدة تقيسها.** `grep` على البكسل كان يعطي صفراً. هذا القسم يوثّق ما رُكِّب.
### 5.1 الموافقة أولاً — ليست تجميلاً
الموقع بأربع لغات منها **الفرنسية والإسبانية**، أي أن زوّاراً من الاتحاد الأوروبي سيصلونه. بكسل يعمل قبل الموافقة = مخالفة GDPR مباشرة. لذلك:
- شريط موافقة يظهر بعد 1.6 ثانية، بأربع لغات، بخيارَي **أوافق / أرفض** متساويين بصرياً (لا زر رفض مخفي).
- **لا يُحمَّل سكربت ميتا إطلاقاً قبل «أوافق».** تحقُّق برمجي: `typeof window.fbq === "undefined"` قبل الموافقة.
- من يرفض يتصفّح الموقع كاملاً بلا نقص — ولا كوكيز تتبّع.
- الأحداث تُسجَّل محلياً بلا بيانات شخصية في الحالتين، وتُرسَل لميتا فقط بعد الموافقة.
### 5.2 ⚠️ خطوة واحدة متبقّية قبل أول دولار
```js
const PIXEL_ID = ""; // marketing/index.html
```
**ما دام فارغاً لا يُحمَّل البكسل ولا يُرسَل حدث.** هذا مقصود: لا شيء ينكسر، ولا شيء يُقاس. ضع المعرّف من Meta Events Manager قبل تشغيل الحملة.
### 5.3 تعريف الأحداث
| الحدث | متى | ما يقيسه |
|---|---|---|
| `PageView` | بعد الموافقة | الوصول الأساسي |
| `SectionView` | ظهور 35% من قسم | **عمق القمع** — أين يتوقف الزائر |
| `PlanInterest` | نقر بطاقة باقة | أي باقة تجذب فعلاً |
| `ModuleInterest` | نقر بطاقة وحدة | **أي وحدة يطلبها الناس** — أثمن بيانات تسعيرية |
| `CalculatorUsed` | تغيير مُهدَّأ 800ms | أقوى إشارة نيّة قبل التواصل |
| `Lead` | نقر واتساب/Calendly | **التحويل** — بمعامل `channel` و`where` |
| `DemoAppOpened` | نقر رابط متجر | جودة الاهتمام |
| `ConsentGranted` | قبول الموافقة | معدّل القبول = مقام كل نسبة أدناه |
### 5.4 كيف تُحسب أهداف §2 فعلياً
- **CAC** = إنفاق الحملة ÷ عدد `Lead` بـ`channel=whatsapp`. الهدف $150–400 صار قابلاً للقياس.
- **معدّل التحويل** = `Lead` ÷ `PageView`.
- **جودة الرسالة** = `SectionView(#pricing)` ÷ `PageView` — انخفاضه يعني أن الإعلان يجلب جمهوراً خاطئاً لا أن الصفحة ضعيفة.
- **إشارة التسعير** = توزيع `PlanInterest` و`ModuleInterest` — يخبرك أي باقة/وحدة تُطلب قبل أول مكالمة.
> **تحذير تحليلي:** كل النسب أعلاه مقامها **الموافِقون فقط**. إن كان معدّل القبول 60% فأنت لا ترى 40% من الزوّار. لا تقارن هذه الأرقام بأرقام منصّة الإعلان مباشرة — قارن الاتجاه لا القيمة المطلقة.
---
## سجل التغييرات
| التاريخ | التغيير |