البند ٢ — استخبارات التسعير (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>
14 KiB
35 — استخبارات التسعير: ملخّص وقائع للمحامي + ضوابط المنتج
أُنشئ 2026-07-24 بطلب المالك (البند ٢ من قائمة المراجعة النقدية).
⚠️ هذا الملف ليس رأياً قانونياً ولا يقوم مقامه. أنا لست محامياً. الغرض منه أن يُسلَّم كما هو لمحامٍ مختص بالملكية الفكرية وقانون المنافسة في كل ولاية قضائية مستهدفة، فيجد أمامه الوقائع التقنية دقيقة بدل أن يعيد اكتشافها. الأسئلة في §5 هي ما يُطرح عليه.
يُقرأ مع: docs/33 §2.3 (الوحدة والتسعير) · docs/34 (من سيشغّلها)
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) الأسئلة التي تُطرح على المحامي (بهذا الترتيب)
أ — الوصول الآلي
- هل الوصول الآلي إلى تطبيق منافس بحساب صحيح، بغرض تحظره شروطه، يشكّل «وصولاً غير مصرّح به» جزائياً في [الأردن · مصر · سوريا · السعودية · الإمارات]؟
- هل تتغيّر الإجابة إذا كان الحساب باسم شركة أو باسم شخص طبيعي؟
- ما مدى تعرّضنا لدعوى مدنية (إخلال بعقد · منافسة غير مشروعة · إثراء بلا سبب) من منصة مُسمّاة؟
ب — بيع الأداة كخدمة 4. حين تشغّل Tripz المحرّك نيابة عن مستأجريها، من الفاعل قانوناً — Tripz أم المستأجر أم كلاهما؟ 5. هل ينفعنا تعاقدياً أن يقرّ المستأجر بأنه المسؤول عن استعمال المخرجات؟ أم تبقى المسؤولية على المزوّد؟
ج — المنافسة (الأهم) 6. هل بيع محرّك تسعير واحد لمشغّلَين متنافسَين في نفس السوق يُعرّضنا لمساءلة كـ«محور» في ترتيب hub-and-spoke؟ 7. هل ضابط «مشغّل واحد لكل مدينة» (§3.3) كافٍ للدفع؟ وهل يلزم أن يكون في العقد أم في الكود أم في الاثنين؟ 8. ما الأسواق التي يجب ألّا تُعرض فيها الوحدة إطلاقاً في المرحلة الأولى؟
د — التسويق 9. ما الصياغات التسويقية الممنوعة؟ (تسمية منافس · التلميح لـ«اختراق» · وعد بمعرفة «أسرار» المنافس)
6) ما نُفِّذ الآن على الموقع — وما ينتظر رأي المحامي
✅ نُفِّذ فوراً (لا يحتاج انتظاراً)
- لا يُسمّى أي منافس في أي لغة من اللغات الأربع.
- حُذفت صياغة «اعرف كيف يسعّر منافسك — قبل أن يعرف هو»: توحي بالتسلل، وتصلح دليلاً على النيّة في أي نزاع.
- الصياغة البديلة تصف المخرَج (معادلة تسعير السوق · مرونة الطلب · ضبط سعرك) لا الوسيلة.
⏸️ موقوف على رأي المحامي
- عرض الوحدة في أي سوق خليجي أو أوروبي.
- تفعيل ضابط «مشغّل واحد لكل مدينة» في الكود (
FeatureGuardعلى مستوى المدينة). - صياغة بند تحمّل المسؤولية في عقد المستأجر.
🔴 قرار يستحق النظر قبل أول بيع
المسار الأقل خطراً ليس تحسين الصياغة، بل تبديل مصدر البيانات. المحرّك التحليلي (pricing-engine/) هو الأصل الثمين، وهو محايد تماماً تجاه المصدر: MAD وK-Means والانحدار تعمل على أي جدول أسعار.
بدائل تُغذّي نفس المحرّك بمخاطرة أقل بكثير:
- بيانات المستأجر نفسه — تاريخ رحلاته ومرونة الطلب وأسعاره. لا يحتاج منافساً أصلاً، ويغطّي معظم قيمة «اضبط سعرك بالبيانات لا بالحدس».
- تعرفة الجهة المنظِّمة — منشورة رسمياً في معظم أسواقنا، وجمعها مشروع تماماً.
- مسح ميداني بشري — بائع بيانات أو مسح دوري، بعقد يحمّل المزوّد المسؤولية.
الرأي الصريح: الوحدة تظل تستحق $249 حتى لو حُذفت طبقة المنافسين كلياً. أما بيع بوت الأندرويد كخدمة لـN مشغّلاً فيضع Tripz — لا المستأجر — في مرمى دعويين مختلفتين. لو كان القرار لي: أفصل المحرّك عن مصدره، وأبيع المحرّك، وأترك مصدر المنافسين استعمالاً داخلياً لسيرو وحدها ريثما يردّ المحامي.
7) موقف المنتج الحالي
| البند | الحالة |
|---|---|
| الوحدة على الموقع | معروضة بصياغة محايدة، بلا تسمية منافس |
| السعر | $249/شهر + $1,000 إعداد |
| ضابط مشغّل/مدينة | ⬜ غير منفَّذ في الكود |
| رأي قانوني | ⬜ لم يُطلب بعد — هذا الملف هو مادته |
| أسواق مسموحة | الأردن · مصر · سوريا مبدئياً · الخليج وأوروبا موقوفان |
سجل التغييرات
| التاريخ | التغيير |
|---|---|
| 2026-07-24 | إنشاء الملف — توصيف تقني دقيق من الكود (بوت أندرويد على أجهزة حقيقية ضد ٧ تطبيقات مُسمّاة)، فصل ثلاثة أخطار، ضابط مشغّل/مدينة، أسئلة المحامي، تنظيف صياغة الموقع |
← ذو صلة: 33-addons-packaging · 21-siro-audit · 34-siro-backend-multitenancy