البند ٢ — استخبارات التسعير (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>
169 lines
14 KiB
Markdown
169 lines
14 KiB
Markdown
# 35 — استخبارات التسعير: ملخّص وقائع للمحامي + ضوابط المنتج
|
||
|
||
> أُنشئ 2026-07-24 بطلب المالك (البند ٢ من قائمة المراجعة النقدية).
|
||
>
|
||
> ⚠️ **هذا الملف ليس رأياً قانونياً ولا يقوم مقامه.** أنا لست محامياً. الغرض منه أن يُسلَّم **كما هو** لمحامٍ مختص بالملكية الفكرية وقانون المنافسة في كل ولاية قضائية مستهدفة، فيجد أمامه الوقائع التقنية دقيقة بدل أن يعيد اكتشافها. الأسئلة في §5 هي ما يُطرح عليه.
|
||
>
|
||
> يُقرأ مع: [docs/33 §2.3](33-addons-packaging.md) (الوحدة والتسعير) · [docs/34](34-siro-backend-multitenancy.md) (من سيشغّلها)
|
||
|
||
---
|
||
|
||
## 1) ما تفعله الوحدة فعلاً — مقروء من الكود لا من العرض التسويقي
|
||
|
||
هذا القسم هو أهم ما في الملف. الوصف الذي كان في `docs/33` («جمع أسعار المنافسين») **أقل دقة بكثير من الواقع**، والفارق قانوني لا لفظي.
|
||
|
||
### 1.1 مصدر البيانات: بوت أندرويد يشغّل تطبيقات المنافسين على أجهزة حقيقية
|
||
|
||
| الحلقة | الملف | ما يحدث |
|
||
|---|---|---|
|
||
| ① طابور المهام | `backend/bot/standalone_worker.php` | لوحة تُنشئ مهام: تطبيق منافس + نقطة انطلاق + وجهة + إحداثيات. وزرّ **«Generate Batch Trips»** يولّد حتى **100 مهمة دفعة واحدة** |
|
||
| ② التنفيذ | **بوت أندرويد خارج المستودع** | نصّ الواجهة حرفياً: *"Results will appear here when the Android bot submits them"* (`standalone_worker.php:821`). التنفيذ على **جهاز حقيقي** يفتح تطبيق المنافس ويطلب تسعيرة |
|
||
| ③ الإرجاع | نفس الملف، سطور 22–73 | البوت يوقّع بـ`hash_hmac('sha256', device_id.ts, SECRET_KEY)` ويرسل النتائج |
|
||
| ④ التخزين | `bot/cron_empty_results_to_db.php:38` | `INSERT INTO scraped_competitor_prices (...)` من `results.json` |
|
||
| ⑤ التحليل | `backend/pricing-engine/src/` | MAD (شواذ) · K-Means (تجميع فئات) · انحدار خطي متعدد → **استخراج معادلة تسعير المنافس** |
|
||
| ⑥ التطبيق | `ride/pricing/auto_adapt.php` · `bot/ai_formula_solver.php` · `cron_pricing_stability_engine.php` | ضبط سعر سيرو آلياً على أساس النتيجة |
|
||
|
||
### 1.2 التطبيقات المستهدفة — **بالاسم ومعرّف الحزمة**
|
||
|
||
من `standalone_worker.php:665–673`:
|
||
|
||
| التطبيق | معرّف الحزمة |
|
||
|---|---|
|
||
| Uber | `com.ubercab` |
|
||
| Careem | `com.careem.acma` |
|
||
| Jeeny | `me.com.easytaxi` |
|
||
| TaxiF | `com.taxif.passenger` |
|
||
| YallaGo | `ae.com.yalla.go.dubai.client` |
|
||
| Zaken / Zakinn | `com.zakinn.app` |
|
||
| Tfadal | `com.bis.taxi` |
|
||
|
||
`scraped_competitor_prices` يخزّن `app_name` و`competitor_name` كأعمدة مفهرسة — أي أن **نسبة السعر إلى منافس مُسمّى هي تصميم الجدول نفسه، لا أثر جانبي**.
|
||
|
||
### 1.3 لماذا هذا التوصيف مهم
|
||
|
||
الفارق بين ثلاثة أوصاف، وكلها كانت تُستعمل بالتبادل في وثائقنا:
|
||
|
||
| الوصف | الواقع؟ | الوزن القانوني |
|
||
|---|---|---|
|
||
| «تحليل بيانات السوق» | ❌ غير دقيق | منخفض |
|
||
| «كشط أسعار معلنة من صفحات عامة» | ❌ غير دقيق | متوسط |
|
||
| **«أتمتة تطبيقات منافسين مُسمّاة على أجهزة حقيقية لتوليد طلبات تسعير آلية بالجملة»** | ✅ **هذا هو الواقع** | **مرتفع** |
|
||
|
||
الأسعار في تطبيقات النقل **ليست منشورة على صفحة عامة** — تُولَّد ردّاً على طلب تسعيرة من حساب داخل التطبيق. أي أن الحصول عليها يستلزم بالضرورة: حساباً على منصة المنافس، وتفاعلاً آلياً معها، وتوليد أحمال على أنظمته.
|
||
|
||
---
|
||
|
||
## 2) الخطر الأول — الوصول الآلي المصرّح به وشروط الاستخدام
|
||
|
||
**ما يجب أن يعرفه المحامي:**
|
||
- الوصول يتم عبر **حساب مستخدم** على منصة المنافس (لا يمكن الحصول على تسعيرة بدونه).
|
||
- التفاعل **آلي** ومُجدوَل ودُفعي (حتى 100 طلب/دفعة).
|
||
- الطلبات هي **طلبات تسعير** لا حجوزات مكتملة — لكنها أحمال حقيقية على أنظمة المنافس.
|
||
- شروط استخدام تطبيقات النقل الكبرى تحظر عادةً صراحةً: الوصول الآلي، والاستخدام لأغراض تجارية منافسة، وجمع البيانات بالجملة.
|
||
|
||
**البُعد الذي يتجاوز «مخالفة عقد»:** في عدد من الولايات القضائية يُجرَّم الوصول غير المصرّح به إلى نظام معلوماتي بقانون جزائي مستقل عن العقد (الأردن: قانون الجرائم الإلكترونية · مصر: قانون مكافحة جرائم تقنية المعلومات · الخليج: قوانين مكافحة جرائم المعلوماتية). **السؤال للمحامي: هل «الوصول بحساب صحيح لكن بغرض تحظره الشروط وبأتمتة» يندرج تحت «غير مصرّح» في هذه القوانين؟** الإجابة تختلف جوهرياً بين الولايات.
|
||
|
||
---
|
||
|
||
## 3) الخطر الثاني — قانون المنافسة (الأخطر، ولم يكن موثَّقاً أصلاً)
|
||
|
||
هذا الخطر **مستقل تماماً** عن الأول، ولا يزول بحلّه.
|
||
|
||
### 3.1 الفرق بين الاستعمال الذاتي والبيع كخدمة
|
||
|
||
| الوضع | الوصف | الوزن |
|
||
|---|---|---|
|
||
| **أمس** | سيرو تجمع أسعاراً وتضبط أسعارها هي | فاعل واحد يتصرّف تنافسياً |
|
||
| **غداً** | **Tripz تشغّل المحرّك لـN مشغّلاً** وتضبط أسعارهم | **Tripz صارت العقدة المركزية بين متنافسين** |
|
||
|
||
### 3.2 السيناريو الذي يجب تفاديه معمارياً
|
||
|
||
مشغّلان في **نفس المدينة** يشتريان الوحدة. كلاهما يتغذّى من نفس المحرّك، بنفس المنطق، على نفس بيانات السوق → **أسعارهما تتقارب بلا اتفاق بينهما**.
|
||
|
||
هذا هو التوصيف الكتابي لما يُسمّى **التواطؤ الخوارزمي عبر وسيط (hub-and-spoke)**: لا يلزم اتفاق بين المتنافسين؛ يكفي أن يديرا التسعير عبر **مزوّد واحد يعرف بيانات الجميع**. والمسؤولية في هذا النمط تقع على **المزوّد** (المحور) لا على المشغّلين فقط.
|
||
|
||
مصر والسعودية والإمارات والأردن لديها جميعاً هيئات منافسة فاعلة، والاتحاد الأوروبي هو الأشدّ في هذا الباب تحديداً.
|
||
|
||
### 3.3 الضابط المعماري المقترح — يُنفَّذ قبل البيع لا بعده
|
||
|
||
> **قاعدة «مشغّل واحد لكل مدينة» للوحدة ②:** لا تُباع «استخبارات التسعير» لأكثر من مستأجر واحد في نفس المدينة/السوق. تُقيَّد في العقد **وفي الكود** (فحص عند تفعيل الميزة على مستوى المدينة).
|
||
|
||
هذا الضابط يحوّل الوحدة من «محور تواطؤ محتمل» إلى «أداة تنافسية لفاعل واحد» — وهو أقوى دفاع بنيوي متاح، وله أثر تجاري إيجابي أيضاً: **الحصرية الجغرافية تبرّر سعراً أعلى** ($249 → قابلة لأن تصير $399 لأول مشغّل في المدينة).
|
||
|
||
---
|
||
|
||
## 4) الخطر الثالث — البيانات الشخصية
|
||
|
||
`scraped_competitor_prices` يخزّن إحداثيات دقيقة (`decimal(10,7)`) لنقاط انطلاق ووصول. هذه **نقاط اصطناعية ولّدها فريقنا**، لا نقاط ركاب حقيقيين — أي أن الخطر هنا **منخفض**، لكن يجب تثبيته كتابةً حتى لا ينزلق لاحقاً إلى استعمال نقاط رحلات فعلية.
|
||
|
||
> **قاعدة:** ممنوع تغذية `scraped_competitor_prices` من إحداثيات رحلات ركاب حقيقية. النقاط الاصطناعية فقط.
|
||
|
||
---
|
||
|
||
## 5) الأسئلة التي تُطرح على المحامي (بهذا الترتيب)
|
||
|
||
**أ — الوصول الآلي**
|
||
1. هل الوصول الآلي إلى تطبيق منافس بحساب صحيح، بغرض تحظره شروطه، يشكّل «وصولاً غير مصرّح به» جزائياً في [الأردن · مصر · سوريا · السعودية · الإمارات]؟
|
||
2. هل تتغيّر الإجابة إذا كان الحساب باسم شركة أو باسم شخص طبيعي؟
|
||
3. ما مدى تعرّضنا لدعوى مدنية (إخلال بعقد · منافسة غير مشروعة · إثراء بلا سبب) من منصة مُسمّاة؟
|
||
|
||
**ب — بيع الأداة كخدمة**
|
||
4. حين تشغّل Tripz المحرّك **نيابة عن** مستأجريها، من الفاعل قانوناً — Tripz أم المستأجر أم كلاهما؟
|
||
5. هل ينفعنا تعاقدياً أن يقرّ المستأجر بأنه المسؤول عن استعمال المخرجات؟ أم تبقى المسؤولية على المزوّد؟
|
||
|
||
**ج — المنافسة (الأهم)**
|
||
6. هل بيع محرّك تسعير واحد لمشغّلَين متنافسَين في نفس السوق يُعرّضنا لمساءلة كـ«محور» في ترتيب hub-and-spoke؟
|
||
7. هل ضابط «مشغّل واحد لكل مدينة» (§3.3) كافٍ للدفع؟ وهل يلزم أن يكون في العقد أم في الكود أم في الاثنين؟
|
||
8. ما الأسواق التي يجب **ألّا** تُعرض فيها الوحدة إطلاقاً في المرحلة الأولى؟
|
||
|
||
**د — التسويق**
|
||
9. ما الصياغات التسويقية الممنوعة؟ (تسمية منافس · التلميح لـ«اختراق» · وعد بمعرفة «أسرار» المنافس)
|
||
|
||
---
|
||
|
||
## 6) ما نُفِّذ الآن على الموقع — وما ينتظر رأي المحامي
|
||
|
||
### ✅ نُفِّذ فوراً (لا يحتاج انتظاراً)
|
||
- **لا يُسمّى أي منافس** في أي لغة من اللغات الأربع.
|
||
- حُذفت صياغة **«اعرف كيف يسعّر منافسك — قبل أن يعرف هو»**: توحي بالتسلل، وتصلح دليلاً على النيّة في أي نزاع.
|
||
- الصياغة البديلة تصف **المخرَج** (معادلة تسعير السوق · مرونة الطلب · ضبط سعرك) لا **الوسيلة**.
|
||
|
||
### ⏸️ موقوف على رأي المحامي
|
||
- عرض الوحدة في **أي سوق خليجي أو أوروبي**.
|
||
- تفعيل ضابط «مشغّل واحد لكل مدينة» في الكود (`FeatureGuard` على مستوى المدينة).
|
||
- صياغة بند تحمّل المسؤولية في عقد المستأجر.
|
||
|
||
### 🔴 قرار يستحق النظر قبل أول بيع
|
||
|
||
المسار الأقل خطراً **ليس تحسين الصياغة، بل تبديل مصدر البيانات**. المحرّك التحليلي (`pricing-engine/`) هو الأصل الثمين، وهو **محايد تماماً تجاه المصدر**: MAD وK-Means والانحدار تعمل على أي جدول أسعار.
|
||
|
||
بدائل تُغذّي نفس المحرّك بمخاطرة أقل بكثير:
|
||
1. **بيانات المستأجر نفسه** — تاريخ رحلاته ومرونة الطلب وأسعاره. لا يحتاج منافساً أصلاً، ويغطّي معظم قيمة «اضبط سعرك بالبيانات لا بالحدس».
|
||
2. **تعرفة الجهة المنظِّمة** — منشورة رسمياً في معظم أسواقنا، وجمعها مشروع تماماً.
|
||
3. **مسح ميداني بشري** — بائع بيانات أو مسح دوري، بعقد يحمّل المزوّد المسؤولية.
|
||
|
||
**الرأي الصريح:** الوحدة تظل تستحق $249 حتى لو حُذفت طبقة المنافسين كلياً. أما بيع بوت الأندرويد كخدمة لـN مشغّلاً فيضع Tripz — لا المستأجر — في مرمى دعويين مختلفتين. لو كان القرار لي: **أفصل المحرّك عن مصدره، وأبيع المحرّك، وأترك مصدر المنافسين استعمالاً داخلياً لسيرو وحدها ريثما يردّ المحامي.**
|
||
|
||
---
|
||
|
||
## 7) موقف المنتج الحالي
|
||
|
||
| البند | الحالة |
|
||
|---|---|
|
||
| الوحدة على الموقع | معروضة بصياغة محايدة، بلا تسمية منافس |
|
||
| السعر | $249/شهر + $1,000 إعداد |
|
||
| ضابط مشغّل/مدينة | ⬜ غير منفَّذ في الكود |
|
||
| رأي قانوني | ⬜ لم يُطلب بعد — **هذا الملف هو مادته** |
|
||
| أسواق مسموحة | الأردن · مصر · سوريا مبدئياً · **الخليج وأوروبا موقوفان** |
|
||
|
||
---
|
||
|
||
## سجل التغييرات
|
||
|
||
| التاريخ | التغيير |
|
||
|---|---|
|
||
| 2026-07-24 | إنشاء الملف — توصيف تقني دقيق من الكود (بوت أندرويد على أجهزة حقيقية ضد ٧ تطبيقات مُسمّاة)، فصل ثلاثة أخطار، ضابط مشغّل/مدينة، أسئلة المحامي، تنظيف صياغة الموقع |
|
||
|
||
---
|
||
← ذو صلة: [33-addons-packaging](33-addons-packaging.md) · [21-siro-audit](21-siro-audit.md) · [34-siro-backend-multitenancy](34-siro-backend-multitenancy.md)
|