Files
tripz-llc/docs/33-addons-packaging.md
T
Hamza-AyedandClaude Opus 5 75b80bd299 refactor(marketing): تفكيك الموقع إلى وحدات + توحيد الباقات الثلاث
- marketing: index.html من 2274 إلى 775 سطراً، والباقي إلى
  styles/ (tokens·base·components·sections·responsive) و
  js/ (app·i18n·calculator·analytics) و i18n/ بخمس لغات
  (ar·en·fr·es·tr) عبر سمة data-i18n.
- docs/05 + docs/33 + لوحة السوبر-أدمن: الباقات صارت ثلاثاً
  (إطلاق · نمو · سيادة) بدل الأربع، وتحديث docs/31 بما يطابقها.
- docs/36: توثيق سيرو إكسبرس للتوصيل.
- تنظيف استيرادات غير مستعملة في apps/rider و apps/driver.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 04:53:19 +03:00

158 lines
15 KiB
Markdown

# 33 — الوحدات والإضافات: كيف نحزّمها ونسعّرها ونسوّق لها
> أُنشئ 2026-07-24 بطلب المالك: «التطبيق الكبير فيه المواصلات والذكاء الصناعي واستخبارات التسعير ومنصة نبيه — بدنا نسوّق لها كباقات وإضافات على الموقع.»
> يُقرأ مع: `docs/27` (كتالوج الميزات + حالة كل ميزة) · `docs/05` (التسعير) · `docs/32` (نصوص الإعلانات) · `docs/34` (أي باك إند سيحملها).
---
## 0) الفكرة الاستراتيجية — لماذا الوحدات تحل مشكلتنا السعرية
في المراجعة السابقة ظهر توتر: السعر الأساسي منخفض جداً في بعض البنود (**$0.02/رحلة = 20% من السوق**) لدرجة أنه يقرأ كإغراق.
**الوحدات تحلّ هذا التوتر تماماً:**
> **النواة رخيصة عمداً (سلاح اكتساب) — والربح يأتي من الوحدات (محرّك توسّع).**
| الطبقة | الدور | التسعير |
|---|---|---|
| **النواة** (تطبيقان + لوحة + dispatch) | كسر الاعتراض السعري، الدخول السريع | ~55% من أرخص منافس |
| **الوحدات** | هامش الربح الحقيقي + التمايز الذي لا يُقلَّد | سعر كامل — لا يوجد منافس يبيعها أصلاً |
| **الاستهلاك** (نسبة GMV) | ينمو مع نمو العميل | 1–2.5% تنازلي |
هذا نموذج **land-and-expand** الكلاسيكي، لكن **بمسار صحيح**: العميل يدخل بـ«إطلاق» ($4,900 إعداد · $349/شهر)، وبعد ٦ أشهر ينتقل إلى «نمو» ($8,500 إعداد · $599/شهر) لأنه أضاف الوحدات الثلاث. **متوسط الإيراد لكل عميل يرتفع 72% بلا حملة اكتساب جديدة.**
> ⚠️ **تحديث (2026-07-26):** أُزيلت باقة «انطلاقة» / «مدينتك» ($169/شهر، 3.5%، 500 رحلة، TestFlight فقط). الباقات الآن 3: إطلاق ($349) ← نمو ($599) ← سيادة ($879).
---
## 1) ⚠️ ملاحظة حرجة: حالة الميزات تختلف باختلاف الباك إند
هذه أهم نقطة في الملف، ولها أثر مباشر على القرار في `docs/34`:
| الوحدة | حالتها في **NestJS** (docs/27) | حالتها في **سيرو PHP** (مقروءة من الكود 2026-07-24) |
|---|---|---|
| استخبارات التسعير | ⬜ لم تُبنَ (L4) | ✅ **محرّك TypeScript كامل** — `backend/pricing-engine/` |
| محرّك التسويق | ⬜ (O3/O4) | ✅ `marketing_engine/` + `socialBot` + مولّد تعليقات Gemini |
| الخريطة الحرارية | ⬜ (O1) | ✅ `bot/cron_generate_heatmap_cache.php` |
| الطلب التنبؤي | ⬜ (O1) | ✅ `bot/cron_predictive_demand.php` |
| منصة نبيه (واتساب) | 🔵 OTP فقط | ✅ `nabeh/` — 8 نقاط نهاية (شكاوى، وثائق، دفع، حالة سائق) |
| المواصلات | 🔵 microservice + لوحة | ✅ `transit/` كامل + لوحة + كرونات تنبيه |
| تأمين السائق | ⬜ مؤجَّلة | ✅ `driver_assurance/` |
| التلعيب (Gamification) | ⬜ غير مذكورة أصلاً | ✅ `ride/gamification/` — تحديات، لوحة صدارة، streak، إحالات |
**الخلاصة الصادقة:** الميزات التي تريد بيعها كوحدات مدفوعة — **موجودة في سيرو، وغير موجودة في NestJS.** هذه ليست حجة عاطفية لصالح سيرو، بل حجة تجارية: كل وحدة مبنية = منتج يمكن بيعه الشهر القادم بدل الربع القادم.
---
## 2) الهيكل بعد المراجعة النقدية (2026-07-24) — ٣ وحدات فقط
المراجعة النقدية طبّقت اختباراً من أربعة شروط على كل وحدة: **(أ)** كلفة حدّية حقيقية · **(ب)** قيمة قابلة للقياس · **(ج)** رفضها لا يُنتج ضرراً أو واجباً قانونياً · **(د)** النواة تعمل بدونها.
| الوحدة الأصلية | النتيجة | المصير |
|---|---|---|
| استخبارات التسعير $249 | ✅ اجتازت الأربعة | **تبقى وحدة مدفوعة** |
| حزمة النمو $129 | ✅ اجتازت الأربعة | **تبقى وحدة مدفوعة** |
| حزمة الذكاء $149 | 🟡 سقط بند (ج) جزئياً | **تبقى بعد تنحيف** — فحص الوثائق وكشف الاحتيال خرجا للنواة؛ بقي تدقيق الشكاوى والمستشار والتسوية |
| المواصلات $299 | ✅ اجتازت، لكن جمهورها مختلف | **خرجت من الشبكة → خط منتج مستقل** بقسم `#transit` وقمع وCTA خاص |
| ذكاء الأسطول $99 | ❌ سقط بند (ب) | **دُمج في باقة «أسطول+»** — تناقض تسموي أن تُسمّى الباقة «أسطول+» ويُباع ذكاؤها منفصلاً |
| حزمة المدفوعات $99 | ❌ سقط بند (د) | **للنواة** — أن يدفع الراكب ويقبض السائق هو المنتج لا ترقية عليه |
| الأمان والامتثال $79 | ❌ سقط بند (ج) | **للنواة** — انظر §2.1 |
### 2.1 لماذا حُذف «الأمان والامتثال» نهائياً (قرار المالك)
**السبب ليس ذوقياً بل قانونياً:** إن كان زر الطوارئ وكشف الاحتيال بند تسعير بـ$79، فأنت تُنشئ بيدك وثيقة تُدينك. يوم يقع حادث عند مستأجر لم يشترِ الوحدة، تُطبع صفحة التسعير في المحكمة: المنصّة بنت الحماية، وعرفت أنها ضرورية، وحجبتها مقابل $79 شهرياً. هذا يحوّل حادثة عند **المستأجر** إلى دعوى «عيب تصميم» ضد **Tripz**.
ثلاثة أسباب مساندة:
- **تنظيمياً:** زر الاستغاثة والتحقق من وثائق السائق يتحوّلان إلى شرط ترخيص. ما هو شرط ترخيص لا يصحّ أن يكون اختيارياً — ولحظة صيرورته إلزامياً تصير الوحدة تساوي صفراً كترقية.
- **حسابياً:** كانت **أرخص** وحدة ($79 = 7% من القائمة) و**أخطر** وحدة. أسوأ بند من حيث العائد مقابل المخاطرة.
- **تسويقياً:** كانت الوحيدة بشارة «قريباً» — أي إعلان على صفحة يقرأها المنظِّم بأن الأمان غير جاهز.
### 2.2 النواة — مشمولة في كل باقة، لا تُسعَّر أبداً
طلب رحلة · فئات · تعرفة كاملة · OTP · تتبّع حيّ · تقييم · دردشة · إشعارات · لوحة · Dispatch
**+ الأمان والامتثال:** زر الطوارئ · كشف الاحتيال · تأمين السائق · فحص الوثائق بالذكاء الاصطناعي · تقارير المنظّم
**+ المدفوعات المحلية:** PayMob · CliQ · سيرياتيل وMTN كاش · شام كاش · المحافظ وطلبات السحب
> ⛔ وحدة المدفوعات صارت نواة، لذلك **بوابة `docs/21` تنطبق على المنتج كله لا على وحدة اختيارية**: S4 (لا معاملة في `finalize_payout`) و S5 (`varchar(10)` للمال) تُصلَحان قبل أول استنساخ.
### 2.3 الوحدات الثلاث الباقية
| # | الوحدة | السعر | الحجة البيعية |
|---|---|---|---|
| ① | **حزمة الذكاء** | $149/شهر | تدقيق الشكاوى آلياً · مستشار تشغيلي أسبوعي · تسوية المدفوعات من رسائل المزوّد عبر Gemini |
| ② | **استخبارات التسعير** 🔥 | $249/شهر + $1,000 إعداد | MAD + K-Means + انحدار خطي يستخرج معادلة تسعير السوق. «تغيير 5% في سعرك يغيّر أرباحك 30%» |
| ③ | **حزمة النمو** | $129/شهر + رسوم الرسائل | إعادة تنشيط الخاملين · حملات واتساب عبر نبيه · تلعيب وإحالات |
**تحذير قانوني قائم على ②:** صِغ الوصف حول «استخبارات السوق» لا «كشط تطبيق منافس بالاسم». وخطر ثانٍ **لم يكن موثّقاً**: بيع نفس المحرّك لمشغّلَين في **نفس المدينة** = آلية تقارب أسعار بين متنافسين (تواطؤ خوارزمي). يلزم رأي قانوني قبل الخليج/أوروبا.
### 2.4 المواصلات — خط منتج مستقل لا وحدة
$299/شهر + $2,500 إعداد. جمهورها **بلديات وجامعات ونقل موظفين ومدارس** — لا تُشترى كإضافة على تطبيق تكسي. لها قسم `#transit` مستقل على الموقع بقمع وCTA خاصّين، ومشمولة بالكامل في «سيادة».
## 3) الباقات — هيكل 3 فئات (قرار المالك 2026-07-26)
> **حُذفت باقة "انطلاقة"** (مدينة داخل تطبيق Tripz الجامع بلا تطبيق خاص). لا منطق تجاري لعميل يدفع ولا يحصل على تطبيق بعلامته. الباقات صارت ثلاث بناءً على مرحلة النمو.
**الهيكل الجديد** (٣ وحدات = $527 + مواصلات منفصلة):
| | إطلاق $349 | نمو $599 ⭐ | سيادة $879 |
|---|---|---|---|
| النواة (+ الأمان + المدفوعات) | ✅ | ✅ | ✅ |
| ذكاء الأسطول | بسعرها ($149) | ✅ **مدمج** | ✅ |
| الوحدات الثلاث | بسعرها | **الثلاث مشمولة** | ✅ الثلاث |
| المواصلات | بسعرها ($299) | بسعرها | ✅ مشمولة |
| **الإجمالي محمّلاً بالكامل** | **$349** | **$599** | **$879** |
**سر التسويقي:**
- باقة "نمو" بـ$599 تشمل وحدات بقيمة **$527 مجاناً** = العميل يحس إنه حصل على مجاناً
- باقة "سيادة" بـ$879 = **$250 فقط** أكثر من نمو = "فرق بسيط لكامل الحماية والعزل"
- السُّلّم تصاعدي منطقي: `$349 ← $599 ← $879`
**المواصلات كمشغّل ترقية مقصود:** نمو + مواصلات = $898/شهر مقابل سيادة $879 التي تشملها **مع** العزل و SLA. أي مشترٍ يطلب المواصلات فوق باقة "نمو" هو محادثة ترقية لسيادة جاهزة.
## 4) كيف تُعرض على الموقع
### 4.1 المنفَّذ فعلاً على الموقع (2026-07-24) ✅
بنية من ثلاث طبقات بدل شبكة السبع بطاقات الأصلية:
1. **شريط النواة** (`.core-band`) أعلى القسم — بحدّ أخضر وقفل: «مشمول في كل باقة — ولا يُباع كإضافة أبداً»، وفيه بطاقتا **الأمان والامتثال** و**المدفوعات المحلية**. هذا يحوّل ما كان بنداً مُسعَّراً محرجاً إلى **حجة بيع**: «نحن لا نبيعك أماناً».
2. **شبكة ٣ بطاقات** (`.addons-grid.three`) — الذكاء · استخبارات التسعير (مميّزة) · النمو.
3. **قسم `#transit` مستقل** — تصميم داكن مختلف، شرائح الجمهور (بلديات/جامعات/نقل موظفين/مدارس)، بطاقة سعر مستقلة وCTA واتساب خاص بالمواصلات.
الشارات: **«متاح الآن»** على الأربعة (الثلاث + المواصلات) بناءً على تأكيد المالك أنها تعمل في إنتاج سيرو، ومطابقةً لجدول §1.
> **قاعدة أخلاقية وقانونية غير قابلة للتفاوض:** لا تُعرض ميزة كـ«متاحة» إن لم تكن تعمل فعلاً في نسخة إنتاج. مشغّل دفع $5,000 على وعد وحدة غير موجودة = دعوى قضائية. **الشارة تتبع الإنتاج لا الرغبة** — أي وحدة تتوقف عن العمل في الإنتاج تعود «قريباً» في نفس اليوم.
### 4.2 ربط الحاسبة بالوحدات
أضف لقسم الحاسبة صف **«أضف وحدات»** بمربعات اختيار — يُحدَّث المجموع الشهري فوراً. هذا:
- يرفع متوسط قيمة الصفقة المتصوّرة قبل أول مكالمة
- يُرسل مع رسالة الواتساب **قائمة الوحدات التي اختارها** → مندوب المبيعات يبدأ من عرض شبه جاهز
### 4.3 صفحة لكل وحدة (لاحقاً — مهم للـSEO)
`/modules/pricing-intelligence` وأخواتها. كل صفحة: المشكلة → كيف تعمل → لقطة حقيقية → السعر → CTA.
**هذه صفحات الهبوط لإعلانات إعادة الاستهداف في docs/32 §2.4.**
---
## 5) خطوات التنفيذ بالترتيب
1. ✅ توثيق الوحدات (هذا الملف)
2. ⬜ **قرار المالك:** تثبيت الأسعار السبعة + توضيح «سوق الركاب»
3. ⬜ **جرد صدق:** لكل وحدة — هل تعمل في إنتاج سيرو *اليوم*؟ الشارة تُبنى على هذه الإجابة حصراً
4. ⬜ بناء قسم `#modules` بأربع لغات (~60 مفتاح ترجمة)
5. ⬜ ربط مربعات الوحدات بالحاسبة ورسالة الواتساب
6. ⬜ إعلانات الوحدات (docs/32 §2.4) لإعادة الاستهداف
7. ⬜ صفحات الوحدات المستقلة للـSEO
8. ⬜ جدول `feature_catalog` في الباك إند (N6) + الاستحقاقات (`FeatureGuard`) — **الحدّ الأمني يبقى السيرفر دائماً** (docs/19)
---
## سجل التغييرات
| التاريخ | التغيير |
|---|---|
| 2026-07-24 | إنشاء الملف — 7 وحدات، تسعيرها، تحزيمها، عرضها على الموقع + جرد حالتها الفعلية في سيرو مقابل NestJS |
| 2026-07-24 (مساءً) | **مراجعة نقدية وإعادة هيكلة:** 7 وحدات ← **3**. الأمان والمدفوعات ← النواة (سبب قانوني، §2.1) · ذكاء الأسطول ← باقة أسطول+ · المواصلات ← خط منتج مستقل `#transit`. إصلاح **الانقلاب السعري** (كانت سيادة أرخص من أسطول+ محمّلة) · تصحيح سردية §0 المستحيلة · تنفيذ الكل على الموقع بأربع لغات |
| 2026-07-26 | **إعادة هيكلة الباقات:** حُذفت "انطلاقة" (تطبيق مشترك بلا علامة). الباقات صارت 3: إطلاق ($349) ← نمو ($599) ← سيادة ($879). الوحدات الثلاث مشمولة في "نمو" و"سيادة". المواصلات مشمولة في "سيادة" فقط. سر تسويقي: نمو = وحدات مجانية، سيادة = $250 أكثر لكل شيء |