Files
intaleq/docs/02_journeys_and_tutorials/TUTORIAL_PLAN_AR.md
T
Hamza-AyedandClaude Opus 5 0aab85c732 refactor: إعادة تسمية التطبيقات الأربعة siro_* → intaleq_*
المجلدات وأسماء حزم dart واستيراداتها:
  siro_rider → intaleq_rider    siro_driver  → intaleq_driver
  siro_admin → intaleq_admin    siro_service → intaleq_service

شمل ذلك `name:` في كل pubspec وكل `package:siro_*` في الاستيرادات
(115 ملفاً في rider وحده)، وإشارات أسماء المجلدات في docs/ وتعليق في
backend/Admin/notifications/broadcast.php. لم تبقَ إشارة واحدة (تحقّقت).

+ ضُمّت حزم get و get_storage داخل intaleq_driver/packages/ وحُوّلت
مساراتها الثلاثة من `../../Intaleq/packages/*` إلى `./packages/*`. كانت
تُحل عرضاً إلى مجلد App/Intaleq القديم المجاور — تبعية خارج المستودع
تنكسر بأول نقل. لم يبقَ في أي تطبيق تبعية مسار خارج الشجرة.

⚠️ لم تُمسّ بعد: هويات المتاجر (applicationId · PRODUCT_BUNDLE_IDENTIFIER ·
shorebird app_id) ولا الألوان ولا النصوص المرئية ولا النطاقات — كل منها
كوميت منفصل، والهويات تحتاج قرار المالك.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 16:10:58 +03:00

7.9 KiB
Raw Blame History

🎓 خطة التوتوريال الكامل داخل الموقع — «كيف تستخدم Siro»

الهدف: صفحات شرح تفاعلية داخل siromove.com (وداخل التطبيق لاحقاً) تشرح للمستخدم الجديد كل عملية خطوة بخطوة، مدعومة بلقطات شاشة حقيقية من التطبيق.

قاعدة التسمية للقطات: tutorial/{القسم}/{رقم الخطوة}_{وصف}.png مثال: tutorial/booking/03_select_car_type.png

مواصفات اللقطات: جهاز حقيقي أو محاكي بدقة 1170×2532 (iPhone) أو 1080×2400 (Android)، واجهة عربية، وضع فاتح (+ نسخة داكنة اختيارية)، بيانات وهمية (لا أرقام هواتف حقيقية).


الوحدة 1: التسجيل وإنشاء الحساب (5 لقطات)

# الخطوة الشاشة في الكود اللقطة المطلوبة
1 تحميل التطبيق وفتحه splash_screen_page.dart شاشة البداية بشعار Siro
2 شاشات التعريف onbording_page.dart شريحة الـ Onboarding الأولى
3 إدخال رقم الهاتف login_page.dart حقل الهاتف مع اختيار الدولة (🇯🇴🇪🇬🇸🇾)
4 رمز التحقق OTP otp_page.dart شاشة إدخال الرمز (يصل واتساب/SMS)
5 إكمال البيانات register_page.dart الاسم + البريد (اختياري) ثم «ابدأ»

نص الشرح المرافق: التسجيل يحتاج رقم هاتف فقط — لا بريد إلكتروني إجباري ولا بطاقة دفع. أقل من دقيقة من التحميل حتى أول شاشة خريطة.

الوحدة 2: طلب الرحلة (6 لقطات)

# الخطوة الشاشة في الكود اللقطة المطلوبة
1 الخريطة الرئيسية map_page_passenger.dart الخريطة مع السيارات القريبة تتحرك
2 تحديد الوجهة LocationSearchController شريط البحث + النتائج
3 تأكيد نقطة الانطلاق — دبوس الانطلاق قابل للسحب
4 اختيار فئة السيارة — قائمة الفئات التسع مع سعر كل فئة وشارة «توفّر X% عن المنافسين»
5 كود الخصم (اختياري) promos_passenger_page.dart حقل البرومو مطبّق على السعر
6 تأكيد الطلب — زر «اطلب الآن» مع السعر النهائي

نقطة مهمة للشرح: السعر المعروض نهائي ومحسوب من الخادم — لا مفاجآت عند الدفع (ما لم تتغير الوجهة أو يزد الانتظار).

الوحدة 3: الانتظار والمطابقة (4 لقطات)

# الخطوة الشاشة في الكود اللقطة المطلوبة
1 البحث عن كابتن searching_captain_window.dart نافذة البحث مع المؤقّت
2 اقتراح المفاوض الذكي _showIncreaseFeeDialog() حوار «ارفع السعر 5% لنتائج أسرع» (يظهر بعد 90 ثانية)
3 قبول الكابتن driver_card_from_passenger.dart بطاقة الكابتن: الاسم، الصورة، التقييم، السيارة، اللوحة
4 الكابتن في الطريق driver_time_arrive_passenger.dart الخريطة مع مسار الكابتن الأصفر والوقت المتوقع

نص الشرح: متوسط زمن المطابقة أقل من 90 ثانية. إذا لم يقبل أحد، النظام يقترح تعديلاً بسيطاً على السعر بدل إلغاء طلبك.

الوحدة 4: أثناء الرحلة والسلامة (5 لقطات)

# الخطوة الشاشة في الكود اللقطة المطلوبة
1 وصول الكابتن driverArrivePassengerDialoge() إشعار «الكابتن وصل» + مهلة انتظار 5 دقائق
2 بدء الرحلة ride_begin_passenger.dart المسار الأزرق + العداد الحي
3 مشاركة الرحلة شاشة المراقبة الحية رابط متابعة لطرف ثالث (للأهل)
4 زر الطوارئ SOS — زر SOS + شرح «هزّ الهاتف 5 مرات»
5 الاتصال بالكابتن WebRTC داخلي شاشة المكالمة داخل التطبيق (بدون كشف رقمك)

الوحدة 5: الإلغاء (3 لقطات)

# الخطوة الشاشة في الكود اللقطة المطلوبة
1 زر الإلغاء timer_for_cancell_trip_from_passenger.dart مكان الزر أثناء البحث/الانتظار
2 اختيار السبب cancelRide/add.php قائمة أسباب الإلغاء
3 تأكيد الإلغاء — رسالة التأكيد + سياسة الرسوم

نقاط يجب شرحها بوضوح:

  • الإلغاء قبل قبول الكابتن: مجاني دائماً.
  • الإلغاء بعد وصول الكابتن أو تجاوز المهلة: قد تُطبَّق رسوم.
  • سياسة السائق: 3 إلغاءات متتالية = إيقاف مؤقت (شفافية للطرفين).

الوحدة 6: الدفع والتقييم (6 لقطات)

# الخطوة الشاشة في الكود اللقطة المطلوبة
1 نهاية الرحلة processRideFinished() شاشة الفاتورة النهائية
2 اختيار طريقة الدفع payment_method.page.dart القائمة: كاش/محفظة/بطاقة/MTN/Syriatel/Cliq
3 الدفع كاش cash_confirm_bottom_page.dart حوار تأكيد الكاش
4 الدفع بالمحفظة passenger_wallet.dart الخصم من الرصيد + شاشة الشحن بمكافأة («ادفع 20 خذ 21»)
5 تقييم الكابتن rate_captain.dart النجوم + الإكرامية (Tip)
6 سجل الرحلات order_history.dart قائمة الرحلات السابقة والفواتير

الوحدة 7: مواصلاتي — للطلاب (5 لقطات)

# الخطوة الشاشة اللقطة المطلوبة
1 تبويب مواصلاتي intaleq_rider تبويب Transit اختيار الجامعة
2 تفعيل العضوية — إدخال الرقم الجامعي (تفعيل فوري إذا كان بالكشف)
3 استعراض الخطوط — قائمة الخطوط المعتمدة وجداولها
4 التتبع الحي خريطة الخط الباص يتحرك على المسار + المحطات
5 «فاتك الباص؟» زر التحويل الزر البارز لطلب سيارة بديلة

خطة التنفيذ على الموقع

  1. الصفحة: siromove.com/tutorial — صفحة واحدة بتبويبات (وحدة لكل تبويب)، RTL، بنفس هوية تقرير الإرث الرقمي البصرية.
  2. العرض: لكل خطوة سطر شرح + لقطة شاشة داخل إطار هاتف (CSS phone frame) — حتى تجهز اللقطات، توضع صور Placeholder رمادية بنفس اسم الملف المطلوب.
  3. التصوير: جلسة واحدة (~ساعتان) بحساب تجريبي على بيئة staging تنتج الـ 34 لقطة المذكورة أعلاه دفعة واحدة، بالترتيب أعلاه.
  4. لاحقاً: تحويل كل وحدة إلى فيديو قصير (30-60 ثانية) بنفس اللقطات، ودمج التوتوريال داخل التطبيق كـ Coach Marks عند أول استخدام.

إجمالي اللقطات المطلوبة: 34 لقطة (5+6+4+5+3+6+5)