docs: restructure documentation, add digital legacy report, and secure contracts

This commit is contained in:
Hamza-Ayed
2026-07-14 18:45:29 +03:00
parent 540ae4d4bc
commit 48382f5d4a
60 changed files with 2106 additions and 657 deletions
@@ -0,0 +1,110 @@
# 🎓 خطة التوتوريال الكامل داخل الموقع — «كيف تستخدم 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 | تبويب مواصلاتي | `siro_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)
@@ -0,0 +1,534 @@
<meta charset="utf-8">
<title>سيرو — التقرير الشامل للمنظومة</title>
<style>
:root{
--bg:#F6F7F5; --surface:#FFFFFF; --surface2:#EEF1EE;
--ink:#1A241F; --muted:#5B6862; --faint:#8B968F;
--line:#E1E5E1; --line2:#D2D8D3;
--brand:#0E7A5F; --brand-ink:#0A5945; --brand-soft:#E4F0EB;
--amber:#9A6B12; --amber-soft:#F6EDDA;
--red:#B3362B; --red-soft:#F7E5E2;
--good:#2E7D4F; --good-soft:#E4F1E8;
--sans:"SF Arabic","Segoe UI",system-ui,-apple-system,"Noto Sans Arabic",Tahoma,sans-serif;
--mono:ui-monospace,"SF Mono",Consolas,monospace;
}
@media (prefers-color-scheme: dark){
:root{
--bg:#0F1512; --surface:#161E19; --surface2:#1C2620;
--ink:#E8EDEA; --muted:#9BA8A1; --faint:#6E7B74;
--line:#26302B; --line2:#32403A;
--brand:#3FBF97; --brand-ink:#8FE0C5; --brand-soft:#15342A;
--amber:#E0AE55; --amber-soft:#33290F;
--red:#E07065; --red-soft:#361A16;
--good:#57C287; --good-soft:#14301F;
}
}
:root[data-theme="dark"]{
--bg:#0F1512; --surface:#161E19; --surface2:#1C2620;
--ink:#E8EDEA; --muted:#9BA8A1; --faint:#6E7B74;
--line:#26302B; --line2:#32403A;
--brand:#3FBF97; --brand-ink:#8FE0C5; --brand-soft:#15342A;
--amber:#E0AE55; --amber-soft:#33290F;
--red:#E07065; --red-soft:#361A16;
--good:#57C287; --good-soft:#14301F;
}
:root[data-theme="light"]{
--bg:#F6F7F5; --surface:#FFFFFF; --surface2:#EEF1EE;
--ink:#1A241F; --muted:#5B6862; --faint:#8B968F;
--line:#E1E5E1; --line2:#D2D8D3;
--brand:#0E7A5F; --brand-ink:#0A5945; --brand-soft:#E4F0EB;
--amber:#9A6B12; --amber-soft:#F6EDDA;
--red:#B3362B; --red-soft:#F7E5E2;
--good:#2E7D4F; --good-soft:#E4F1E8;
}
html{ scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }
.page{
background:var(--bg); color:var(--ink);
font-family:var(--sans); font-size:16px; line-height:1.85;
min-height:100%;
}
.page *{ box-sizing:border-box; }
.wrap{ max-width:840px; margin:0 auto; padding:0 22px; }
.page h1,.page h2,.page h3,.page h4{ margin:0; color:var(--ink); text-wrap:balance; line-height:1.35; }
.page p{ margin:0; }
.page a{ color:var(--brand); }
.page a:focus-visible, .page summary:focus-visible{ outline:2px solid var(--brand); outline-offset:2px; border-radius:4px; }
code{
direction:ltr; unicode-bidi:isolate; font-family:var(--mono); font-size:.82em;
background:var(--surface2); border:1px solid var(--line); border-radius:5px; padding:.08em .4em;
}
.num{ font-variant-numeric:tabular-nums; }
/* ===== Hero ===== */
.hero{ padding:64px 0 36px; border-bottom:1px solid var(--line); }
.hero .kicker{
display:inline-block; font-size:.78rem; font-weight:700; letter-spacing:.04em;
color:var(--brand-ink); background:var(--brand-soft); border-radius:99px; padding:4px 14px;
margin-bottom:18px;
}
.hero h1{ font-size:clamp(1.7rem, 4.5vw, 2.5rem); font-weight:800; }
.hero .lede{ margin-top:14px; font-size:1.05rem; color:var(--muted); max-width:60ch; }
.hero .meta{ margin-top:16px; font-size:.8rem; color:var(--faint); }
.stats{ display:grid; grid-template-columns:repeat(6,1fr); gap:0; margin-top:30px;
border:1px solid var(--line); border-radius:14px; background:var(--surface); overflow:hidden; }
.stat{ padding:14px 10px; text-align:center; border-inline-start:1px solid var(--line); }
.stat:first-child{ border-inline-start:none; }
.stat b{ display:block; font-size:1.35rem; font-weight:800; color:var(--brand-ink); font-variant-numeric:tabular-nums; }
.stat span{ font-size:.72rem; color:var(--muted); line-height:1.4; display:block; margin-top:2px; }
@media (max-width:700px){
.stats{ grid-template-columns:repeat(3,1fr); }
.stat:nth-child(4){ border-inline-start:none; }
.stat:nth-child(-n+3){ border-bottom:1px solid var(--line); }
}
/* ===== Sticky TOC ===== */
.tocbar{
position:sticky; top:0; z-index:10; background:var(--bg);
border-bottom:1px solid var(--line); padding:10px 0;
}
.tocbar .row{ display:flex; gap:8px; overflow-x:auto; scrollbar-width:none; padding:2px; }
.tocbar .row::-webkit-scrollbar{ display:none; }
.tocbar a{
flex:none; text-decoration:none; font-size:.8rem; font-weight:700; color:var(--muted);
border:1px solid var(--line); background:var(--surface); border-radius:99px; padding:5px 13px;
white-space:nowrap;
}
.tocbar a b{ color:var(--brand); font-weight:800; margin-inline-end:4px; font-variant-numeric:tabular-nums; }
.tocbar a:hover{ border-color:var(--brand); color:var(--ink); }
/* ===== Sections ===== */
section{ padding:46px 0 8px; }
.sec-head{ margin-bottom:20px; }
.sec-head .eyebrow{
font-size:.75rem; font-weight:800; color:var(--brand); letter-spacing:.08em;
font-variant-numeric:tabular-nums;
}
.sec-head h2{ font-size:1.45rem; font-weight:800; margin-top:4px; }
.sec-head .thesis{ margin-top:8px; color:var(--muted); font-size:.95rem; max-width:66ch; }
.subhead{
font-size:.82rem; font-weight:800; color:var(--faint); letter-spacing:.03em;
margin:26px 0 10px; display:flex; align-items:center; gap:10px;
}
.subhead::after{ content:""; flex:1; height:1px; background:var(--line); }
/* compact feature rows */
.rows{ border:1px solid var(--line); border-radius:14px; background:var(--surface); overflow:hidden; }
.row-item{ padding:13px 18px; border-top:1px solid var(--line); }
.row-item:first-child{ border-top:none; }
.row-item h4{ font-size:.95rem; font-weight:800; display:inline; }
.row-item p{ display:inline; color:var(--muted); font-size:.9rem; }
.row-item h4::after{ content:" — "; color:var(--faint); font-weight:400; }
.row-item .why{ display:block; margin-top:3px; font-size:.83rem; color:var(--brand-ink); }
/* alerts */
.alert{ border-radius:12px; padding:14px 18px; margin:16px 0; font-size:.9rem; border:1px solid; }
.alert p{ color:var(--ink); }
.alert .tag{ display:inline-block; font-size:.72rem; font-weight:800; border-radius:6px; padding:1px 9px; margin-bottom:6px; }
.alert.crit{ background:var(--red-soft); border-color:color-mix(in srgb, var(--red) 35%, transparent); }
.alert.crit .tag{ background:var(--red); color:var(--bg); }
.alert.warn{ background:var(--amber-soft); border-color:color-mix(in srgb, var(--amber) 35%, transparent); }
.alert.warn .tag{ background:var(--amber); color:var(--bg); }
.alert.good{ background:var(--good-soft); border-color:color-mix(in srgb, var(--good) 35%, transparent); }
.alert.good .tag{ background:var(--good); color:var(--bg); }
/* ===== Ride flow timeline ===== */
.flow{ position:relative; padding-inline-start:26px; margin-top:8px; }
.flow::before{ content:""; position:absolute; inset-inline-start:8px; top:8px; bottom:8px; width:2px;
background:linear-gradient(var(--brand), var(--line2)); border-radius:2px; }
.step{ position:relative; padding:0 0 26px; }
.step::before{
content:""; position:absolute; inset-inline-start:-24px; top:7px; width:12px; height:12px;
border-radius:50%; background:var(--bg); border:3px solid var(--brand);
}
.step h4{ font-size:1rem; font-weight:800; }
.step h4 .t{ font-size:.72rem; font-weight:700; color:var(--brand-ink); background:var(--brand-soft);
border-radius:99px; padding:2px 10px; margin-inline-start:8px; vertical-align:2px; white-space:nowrap; }
.step p{ color:var(--muted); font-size:.9rem; margin-top:4px; max-width:62ch; }
/* ===== two-col mini grid ===== */
.duo{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
@media (max-width:640px){ .duo{ grid-template-columns:1fr; } }
.panel{ border:1px solid var(--line); border-radius:14px; background:var(--surface); padding:16px 18px; }
.panel h4{ font-size:.95rem; font-weight:800; margin-bottom:6px; }
.panel p, .panel li{ color:var(--muted); font-size:.88rem; }
.panel ul{ margin:6px 0 0; padding-inline-start:18px; display:flex; flex-direction:column; gap:5px; }
.panel.can h4{ color:var(--good); }
.panel.cannot h4{ color:var(--red); }
/* ===== tutorial modules ===== */
.mods{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
@media (max-width:640px){ .mods{ grid-template-columns:1fr; } }
.mod{ border:1px solid var(--line); border-radius:14px; background:var(--surface); padding:16px 18px; position:relative; }
.mod .shots{ position:absolute; top:14px; inset-inline-end:16px; font-size:.7rem; font-weight:800;
color:var(--brand-ink); background:var(--brand-soft); border-radius:99px; padding:2px 10px; font-variant-numeric:tabular-nums; }
.mod h4{ font-size:.95rem; font-weight:800; padding-inline-end:70px; }
.mod ol{ margin:8px 0 0; padding-inline-start:18px; color:var(--muted); font-size:.85rem; display:flex; flex-direction:column; gap:4px; }
.mod .note{ margin-top:8px; font-size:.8rem; color:var(--brand-ink); }
/* transit actors */
.actors{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin:14px 0 4px; }
@media (max-width:760px){ .actors{ grid-template-columns:1fr 1fr; } }
.actor{ border:1px solid var(--line); border-radius:12px; background:var(--surface); padding:12px 14px; text-align:center; }
.actor .ic{ font-size:1.4rem; }
.actor b{ display:block; font-size:.85rem; margin-top:4px; }
.actor span{ font-size:.74rem; color:var(--muted); display:block; line-height:1.5; }
footer.end{ margin-top:56px; border-top:1px solid var(--line); padding:22px 0 60px;
font-size:.8rem; color:var(--faint); display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px; }
</style>
<div class="page" dir="rtl" lang="ar">
<header class="hero"><div class="wrap">
<span class="kicker">التقرير الشامل — نسخة محدّثة تشمل مواصلاتي وسير الرحلة والتوتوريال</span>
<h1>سيرو — الإرث الرقمي لمنظومة التنقّل المتكاملة</h1>
<p class="lede">
جرد كامل لكل ما بُني في منصة Siro ولماذا بُني: تطبيقات الراكب والسائق والإدارة وخدمة العملاء،
البنية الخلفية ومحرك التسعير، الخرائط والتتبع الحي، نظام «مواصلاتي» لباصات الجامعات،
البوتات والذكاء الاصطناعي، والمنظومة المالية — مع سير الرحلة خطوة بخطوة وخطة التوتوريال الكاملة.
</p>
<p class="meta">أُعدّ بفحص مباشر للكود المصدري — كل رقم ومسار ملف تمّ التحقق منه فعلياً · آخر تحديث 2026-07-14</p>
<div class="stats">
<div class="stat"><b>4</b><span>تطبيقات موبايل</span></div>
<div class="stat"><b>9</b><span>فئات مركبات</span></div>
<div class="stat"><b>3</b><span>دول تشغيل</span></div>
<div class="stat"><b>13+</b><span>لغة مدعومة</span></div>
<div class="stat"><b>10+</b><span>طرق دفع محلية</span></div>
<div class="stat"><b>2</b><span>خطا أعمال: مشاوير + مواصلاتي</span></div>
</div>
</div></header>
<nav class="tocbar" aria-label="فهرس التقرير"><div class="wrap"><div class="row">
<a href="#overview"><b>00</b>نظرة عامة</a>
<a href="#rideflow"><b>01</b>سير الرحلة</a>
<a href="#rider"><b>02</b>الراكب</a>
<a href="#driver"><b>03</b>السائق</a>
<a href="#ops"><b>04</b>الإدارة والدعم</a>
<a href="#backend"><b>05</b>البنية والتسعير</a>
<a href="#maps"><b>06</b>الخرائط</a>
<a href="#transit"><b>07</b>مواصلاتي</a>
<a href="#bots"><b>08</b>البوتات</a>
<a href="#finance"><b>09</b>المالية والاستثمار</a>
<a href="#legacy"><b>10</b>القيمة</a>
<a href="#risks"><b>11</b>المخاطر</a>
<a href="#tutorial"><b>12</b>التوتوريال</a>
</div></div></nav>
<main class="wrap">
<!-- 00 -->
<section id="overview">
<div class="sec-head">
<span class="eyebrow">00</span>
<h2>نظرة عامة: منصة واحدة، تسعة أنظمة متكاملة</h2>
<p class="thesis">سيرو ليست «تطبيق طلب سيارة» — هي منظومة من 4 تطبيقات Flutter، وباك اند PHP/Node ضخم، وخوادم Socket خاصة للتتبع الحي، ومحرك تسعير بالذكاء الاصطناعي، ونظام نقل جماعي للجامعات، وبنية مالية متعددة الدول — كلها مبنية داخلياً وتعمل في الأردن ومصر وسوريا.</p>
</div>
<div class="rows">
<div class="row-item"><h4>🚕 أربعة تطبيقات Flutter</h4><p>الراكب (226 ملف)، السائق (275 ملف — الأكبر)، الإدارة (131)، خدمة العملاء (66) — تشترك بنفس الباك اند.</p></div>
<div class="row-item"><h4>🗄️ باك اند PHP مقسّم بأمان مركزي</h4><p>كل وحدة (مصادقة، رحلات، تسعير، تأمين…) تمر إجبارياً عبر طبقة JWT + تشفير + تحديد معدل طلبات واحدة.</p></div>
<div class="row-item"><h4>📍 خوادم Socket خاصة للموقع</h4><p>خادم سائق وخادم راكب منفصلان — تتبع لحظي دون الاعتماد على Google Maps، بتوفير تكلفة ضخم.</p></div>
<div class="row-item"><h4>🤖 محرك تسعير ذكي</h4><p>بوت يقرأ أسعار المنافسين من تطبيقاتهم، محرك يفكّك معادلاتهم، وكرون جوبز تُبقي سيرو أرخص بـ 6.5% آلياً.</p></div>
<div class="row-item"><h4>🚌 مواصلاتي</h4><p>نظام نقل جماعي للجامعات والمؤسسات (SaaS مجاني) بقاعدة بيانات معزولة ولوحة تحكم ويب مستقلة — القسم 07.</p></div>
<div class="row-item"><h4>💳 محفظة ودفع متعدد الدول</h4><p>خدمة منفصلة (268 ملف) تربط MTN وSyriatel Cash وShamCash وCliq وPayMob وeCash.</p></div>
</div>
</section>
<!-- 01 RIDE FLOW -->
<section id="rideflow">
<div class="sec-head">
<span class="eyebrow">01</span>
<h2>سير الرحلة — من فتح التطبيق حتى التقييم</h2>
<p class="thesis">الدورة الكاملة كما تعمل فعلياً في الكود: كل خطوة لها شاشة وحالة (State) وقناة تواصل حي. هذه الدورة نفسها هي أساس التوتوريال في القسم 12.</p>
</div>
<div class="flow">
<div class="step"><h4>الدخول والتحقق <span class="t">أقل من دقيقة</span></h4><p>رقم الهاتف + رمز OTP (واتساب/SMS حسب الدولة) — لا بريد إلكتروني إجباري ولا بطاقة. الجلسة تُربط ببصمة الجهاز فلا يعمل الرمز المسروق على جهاز آخر.</p></div>
<div class="step"><h4>تحديد الوجهة والسعر <span class="t">فوري</span></h4><p>بحث عن المكان، اختيار فئة من 9 فئات، والسعر يُحسب بالكامل على الخادم ويُختم برمز موقّت صالح 7 دقائق — لا يمكن التلاعب به بين شاشة العرض والتأكيد.</p></div>
<div class="step"><h4>البحث عن كابتن <span class="t">حتى 90 ثانية</span></h4><p>مطابقة «أقرب سائق» عبر Redis الجغرافي. إذا لم يقبل أحد خلال 90 ثانية يقترح «المفاوض الذكي» رفع السعر ~5% بدل إلغاء الطلب.</p></div>
<div class="step"><h4>قبول الكابتن والتوجه إليك <span class="t">تتبع حي</span></h4><p>بطاقة الكابتن (اسم، تقييم، سيارة، لوحة) ومسار أصفر يتحرك لحظياً عبر WebSocket، مع إشعار FCM وLive Activity على iOS.</p></div>
<div class="step"><h4>الوصول والانتظار <span class="t">مهلة 5 دقائق</span></h4><p>إشعار «الكابتن وصل» ويبدأ عداد انتظار. الإلغاء قبل القبول مجاني دائماً؛ بعد الوصول قد تُطبَّق رسوم.</p></div>
<div class="step"><h4>الرحلة الجارية <span class="t">مسار أزرق + SOS</span></h4><p>عداد حي، كشف انحراف عن المسار (50م)، تنبيه تجاوز سرعة 100كم/س، زر طوارئ يعمل بهزّ الهاتف، ومشاركة الرحلة مع الأهل برابط حي.</p></div>
<div class="step"><h4>التسوية والدفع <span class="t">من الخادم</span></h4><p>السعر النهائي يُعاد حسابه من المسافة والزمن الفعليين بسقوف أمان (≤1.6× المعروض)، ثم الدفع: كاش، محفظة، PayMob، MTN، Syriatel، Cliq.</p></div>
<div class="step"><h4>التقييم والإكرامية <span class="t">اختياري</span></h4><p>تقييم الكابتن بالنجوم مع إكرامية اختيارية، وتُحفظ الرحلة في السجل مع الفاتورة.</p></div>
</div>
</section>
<!-- 02 RIDER -->
<section id="rider">
<div class="sec-head">
<span class="eyebrow">02</span>
<h2>تطبيق الراكب</h2>
<p class="thesis">واجهة المستخدم النهائي — أعمق بكثير من «اطلب وادفع»، وفيها ميزات ثقة وسلامة نادرة حتى عند منافسين أكبر.</p>
</div>
<div class="subhead">الحجز والتسعير</div>
<div class="rows">
<div class="row-item"><h4>9 فئات ركوب</h4><p>اقتصادية (Balash/Awfar)، Comfort، كهربائية، Lady نسائية، Van عائلية، VIP/مشوار (اختيار سائق بالاسم لموعد لاحق)، توصيل، ورايح-جاي بين المدن (+23 كم).</p><span class="why">كل فئة تفتح شريحة سوق مختلفة — من الطالب حتى العائلة والراكبات.</span></div>
<div class="row-item"><h4>شارة مقارنة أسعار</h4><p>«أنت توفّر X% مقارنة بكريم/أوبر/يلا-جو» بالاسم صراحة على شاشة الطلب.</p></div>
<div class="row-item"><h4>المفاوض الذكي</h4><p>اقتراح آلي لرفع السعر عند عدم توفر كابتن — يقلل الطلبات الفاشلة.</p></div>
</div>
<div class="subhead">الدفع والولاء</div>
<div class="rows">
<div class="row-item"><h4>Siro Prime</h4><p>اشتراك ~4$ شهرياً: بلا تسعير ذروة، أولوية مطابقة، شارة تزيد قبول السائقين — إيراد شهري متكرر.</p></div>
<div class="row-item"><h4>مكافآت شحن المحفظة</h4><p>«ادفع 20 خذ 21» — يشجع الرصيد المسبق ويقلل الكاش.</p></div>
<div class="row-item"><h4>تنبيه الرصيد السالب</h4><p>بانر دائم + قراءة صوتية عند وجود دين من رحلة كاش سابقة — تحصيل استباقي.</p></div>
<div class="row-item"><h4>إحالة ثنائية</h4><p>دعوة أصدقاء كركاب أو سائقين عبر واتساب، والمكافأة تُفتح بعد رحلتين فعليتين.</p></div>
</div>
<div class="subhead">السلامة والثقة</div>
<div class="rows">
<div class="row-item"><h4>زر الطوارئ SOS</h4><p>واتساب فوري لجهة طوارئ مع الموقع الحي واسم السائق واللوحة — ويتفعّل بهزّ الهاتف 5 مرات.</p></div>
<div class="row-item"><h4>مراقبة حية لطرف ثالث</h4><p>رابط يتيح لولي الأمر متابعة الموقع والسرعة دون تثبيت التطبيق — تمايز حقيقي لشريحة الطالبات.</p></div>
<div class="row-item"><h4>مكالمات WebRTC داخلية</h4><p>اتصال راكب↔سائق دون كشف الأرقام، ببنية ذاتية بدل Agora المدفوعة.</p></div>
<div class="row-item"><h4>تسجيل صوتي للرحلة + تنبيه سرعة</h4><p>دليل عند النزاع، وتنبيه فوري عند تجاوز 100 كم/س.</p></div>
<div class="row-item"><h4>حماية تقنية</h4><p>بصمة جهاز، كشف Root/Jailbreak، تثبيت SSL ضد اعتراض البيانات.</p></div>
</div>
<div class="subhead">تجربة مصممة للمنطقة</div>
<div class="rows">
<div class="row-item"><h4>13+ لغة بثلاث لهجات عربية</h4><p>مصري/أردني/سوري بملفات منفصلة + RTL كامل — جاهزية توسع حقيقية.</p></div>
<div class="row-item"><h4>خرائط دون اتصال + كشف نوعية الجهاز</h4><p>تحميل مسبق للبلاطات، وتخفيف الرسوميات آلياً على الأجهزة الاقتصادية.</p></div>
<div class="row-item"><h4>قراءة صوتية TTS</h4><p>وصف الرحلات والتنبيهات صوتياً — يشمل ضعاف البصر، سوق مهمَل من المنافسين.</p></div>
</div>
</section>
<!-- 03 DRIVER -->
<section id="driver">
<div class="sec-head">
<span class="eyebrow">03</span>
<h2>تطبيق السائق</h2>
<p class="thesis">أكبر تطبيق في المنظومة (275 ملف) — محرك تشغيل الأسطول: مكافحة احتيال، نظام تدرّج بخصومات عمولة فعلية، وذكاء تشغيلي يوجّه السائق للربح.</p>
</div>
<div class="alert good"><span class="tag">✅ مؤكد في الكود</span>
<p>ميزة «أرباحك أعلى بـ X مقارنة بالتطبيقات الأخرى» موجودة ومفعّلة: <code>driver_earnings_badge.dart</code> يعرض شارة خضراء على شاشة قبول الطلب مبنية على حقل <code>driver_earnings_extra</code> من الخادم.</p>
</div>
<div class="rows">
<div class="row-item"><h4>تدرّج بخصم عمولة حقيقي</h4><p>برونزي ← فضي (−1%) ← ذهبي (−2%) ← ماسي (−5% + أولوية) — ولاء بمكافأة مالية ملموسة.</p></div>
<div class="row-item"><h4>سلسلة رحلات بلا إلغاء</h4><p>5 رحلات متتالية = عمولة 0% لبقية اليوم؛ أي إلغاء يصفّر السلسلة.</p></div>
<div class="row-item"><h4>خارطة طلب تنبؤية</h4><p>أين سيرتفع الطلب خلال الساعة القادمة، من بيانات الرحلات التاريخية.</p></div>
<div class="row-item"><h4>حد 12 ساعة قيادة + حظر بعد 3 إلغاءات</h4><p>راحة إجبارية 6 ساعات، وحماية موثوقية السوق من الإلغاء المتكرر.</p></div>
<div class="row-item"><h4>تحقق مسافة قبل إنهاء الرحلة</h4><p>مقارنة إزاحة GPS الفعلية بالمتوقعة — يمنع تزوير إتمام الرحلات.</p></div>
<div class="row-item"><h4>توثيق بالذكاء الاصطناعي</h4><p>Gemini يقرأ الهوية والرخصة، ومطابقة وجه (سيلفي↔هوية) قبل قبول التسجيل، وكشف «الرحلة الذاتية» بمقارنة بصمتي الجهازين.</p></div>
<div class="row-item"><h4>Android Auto / CarPlay</h4><p>جسر ملاحة مخصص لشاشة السيارة — تجربة مكافئة لأوبر/كريم.</p></div>
<div class="row-item"><h4>سحب أرباح متعدد القنوات</h4><p>PayMob، MTN، Cliq، eCash، حساب بنكي، وحتى SMS في سوريا.</p></div>
</div>
</section>
<!-- 04 OPS -->
<section id="ops">
<div class="sec-head">
<span class="eyebrow">04</span>
<h2>الإدارة وخدمة العملاء</h2>
<p class="thesis">لوحة تشغيل داخلية حقيقية بطبقتين (قديمة + V2 تحليلية)، وتطبيق دعم ميداني سريع — مع فجوات تشغيلية يجب قولها بصراحة.</p>
</div>
<div class="rows">
<div class="row-item"><h4>مركز عمليات حي (V2)</h4><p>رحلات نشطة، سائقون متصلون، إيراد اليوم مقابل الأمس، شكاوى — يتحدث كل دقيقتين.</p></div>
<div class="row-item"><h4>محرر تسعير «كازان»</h4><p>عمولة كل دولة، سعر الكيلومتر لكل فئة، وتسعير الدقيقة حسب الوقت — أهم رافعة إيراد في المنصة.</p></div>
<div class="row-item"><h4>مساعد تسجيل بالذكاء الاصطناعي</h4><p>Gemini + Claude Haiku يقرآن الوثائق المصرية ويكشفان الانتهاء وعدم تطابق الأسماء آلياً.</p></div>
<div class="row-item"><h4>بطاقة جودة السائق + سجل تدقيق</h4><p>قرارات حظر مبنية على بيانات، وكل إجراء موظف حساس مسجّل بالاسم والوقت.</p></div>
<div class="row-item"><h4>دعم ميداني سريع</h4><p>بحث برقم هاتف/رحلة، تفعيل سائقين، وقوالب واتساب عربية جاهزة — بدون CRM مكلف.</p></div>
</div>
<div class="alert warn"><span class="tag">فجوات تشغيلية</span>
<p>شاشة عرض الشكوى في تطبيق خدمة العملاء ما زالت فارغة (stub) رغم جاهزية قاعدة البيانات لسير تحقيق كامل · لا توجد أداة استرجاع مبلغ (Refund) في كامل النظام · لا يوجد تتبع SLA أو تصعيد للشكاوى الحرجة.</p>
</div>
</section>
<!-- 05 BACKEND -->
<section id="backend">
<div class="sec-head">
<span class="eyebrow">05</span>
<h2>البنية الخلفية ومحرك التسعير</h2>
<p class="thesis">قلب المنصة: كل طلب يمر عبر طبقة أمان مركزية قبل أي منطق عمل، ومحرك رحلات (202 ملف) يتخذ قرارات تجارية آلياً.</p>
</div>
<div class="rows">
<div class="row-item"><h4>JWT مربوط ببصمة الجهاز</h4><p>الرمز المسروق لا يعمل على جهاز آخر.</p></div>
<div class="row-item"><h4>تشفير AES-256 للبيانات الحساسة</h4><p>أسماء، هواتف، هويات، لوحات — مشفّرة حتى لو تسربت القاعدة.</p></div>
<div class="row-item"><h4>Rate Limiting مخصص لكل نوع طلب</h4><p>حدود أشد للشكاوى لأن كل شكوى تستدعي Gemini + واتساب.</p></div>
<div class="row-item"><h4>رمز سعر موقّع (7 دقائق)</h4><p>يغلق ثغرة التلاعب بالسعر بين العرض والتأكيد.</p></div>
<div class="row-item"><h4>تسوية أجرة آمنة</h4><p>إعادة حساب من الخادم بسقوف (≤1.6× السعر، ≤1.5× المسافة) قبل التحويل للمحفظة.</p></div>
<div class="row-item"><h4>مطابقة الوجهة (Destination Matching)</h4><p>سائق متجه للبيت يأخذ أولوية الطلبات القريبة من وجهته، والراكب يخصم 14%.</p></div>
<div class="row-item"><h4>تسعير ديناميكي متكامل</h4><p>ذروة حسب العرض/الطلب لكل قطعة جغرافية، مطابقة ذروة المنافسين، مضاعفات رمضان/الأعياد، وخصم مسافات طويلة.</p></div>
</div>
<div class="alert good"><span class="tag">وثيقة موجودة فعلاً</span>
<p>يوجد تدقيق أمني داخلي بأسلوب اختبار اختراق يصنّف النتائج من حرج لمنخفض — نقاط قوة موثقة (لا SQL Injection، AES-256) مقابل بنود مفتوحة (Rate limiting معطّل بأماكن، ملفات اختبار في الإنتاج، تشفير CBC بـ IV ثابت). راجع <code>docs/08_security</code>.</p>
</div>
</section>
<!-- 06 MAPS -->
<section id="maps">
<div class="sec-head">
<span class="eyebrow">06</span>
<h2>الخرائط والموقع الجغرافي</h2>
<p class="thesis">القرار الأهم: لا اعتماد على Google Maps للتتبع الحي أو المطابقة — خادما WebSocket خاصان وفهرسة Redis جغرافية، بتحكم كامل وتوفير ضخم.</p>
</div>
<div class="rows">
<div class="row-item"><h4>تتبع حي مُفلتر ومُجمّع</h4><p>موقع السائق كل 1–3 ثوانٍ، يُرسل فقط عند تحرك حقيقي (10م)، يُجمَّع ويُكتب لـ Redis كل نصف ثانية دفعة واحدة ثم يُدفع للراكب.</p></div>
<div class="row-item"><h4>أقرب سائق عبر GEORADIUS</h4><p>بحث نصف قطر على آلاف السائقين لحظياً، مرتب بالتقييم — لا توجد خدمة جاهزة تقدم هذا.</p></div>
<div class="row-item"><h4>استعلام مخصص لكل فئة</h4><p>Balash يختار أقدم السيارات فعلياً، وElectric يفلتر وقود «كهربائي» — منطق عمل مستحيل بخدمة عامة.</p></div>
<div class="row-item"><h4>خرائط حرارية + تتبع أسطول حي</h4><p>«رؤية إلهية» لفريق العمليات دون شراء أداة BI.</p></div>
<div class="row-item"><h4>تجزئة جغرافية (Geo-Sharding)</h4><p>كل نطاق إحداثيات يمكن ربطه بخادم مختلف — توسع مدينة-بمدينة دون إعادة هندسة.</p></div>
</div>
</section>
<!-- 07 TRANSIT -->
<section id="transit">
<div class="sec-head">
<span class="eyebrow">07</span>
<h2>مواصلاتي — النقل الجماعي للجامعات والمؤسسات</h2>
<p class="thesis">خط الأعمال الثاني: رقمنة أساطيل الجامعات والمدارس والشركات مجاناً (SaaS)، مقابل استحواذ سيرو على المستخدمين وتحويلهم لركاب مدفوعين — بعزل تقني كامل عن نظام المشاوير (قاعدة <code>siro_transit</code> مستقلة + سوكيتات خاصة).</p>
</div>
<div class="actors">
<div class="actor"><span class="ic">🏛️</span><b>فريق سيرو</b><span>ينشئ المؤسسة، يضيف مشرفيها، ويعتمد الخطوط المرسومة قبل ظهورها للطلاب</span></div>
<div class="actor"><span class="ic">🧑‍💼</span><b>مشرف المؤسسة</b><span>لوحة ويب: باصات، سائقون، رسم الخطوط والمحطات، الجداول، ورفع كشف الطلاب CSV</span></div>
<div class="actor"><span class="ic">🚌</span><b>سائق الباص</b><span>تطبيق السائق بوضع Bus Mode مبسّط: زر ابدأ/أنهِ فقط، والمحطات تمرّ آلياً بالـ Geofencing</span></div>
<div class="actor"><span class="ic">🎓</span><b>الطالب</b><span>تفعيل فوري بالرقم الجامعي، تتبع حي للباص، وإشعارات اقتراب ذكية</span></div>
</div>
<div class="subhead">كيف تسير رحلة الباص</div>
<div class="flow">
<div class="step"><h4>الإعداد <span class="t">مرة واحدة</span></h4><p>المشرف يرسم المسار على خريطة تفاعلية ويحدد المحطات بمحيط جغرافي (150م افتراضياً)، والخط يبقى «مسودة» حتى يعتمده فريق سيرو، ثم تُحدد أوقات الانطلاق وأيام العمل.</p></div>
<div class="step"><h4>بدء الرحلة <span class="t">زر واحد</span></h4><p>السائق يضغط «ابدأ الرحلة» ويبدأ بث موقعه عبر السوكيت كل عدة ثوانٍ — مع إشعار انطلاق للمشتركين.</p></div>
<div class="step"><h4>المرور بالمحطات <span class="t">آلي بالكامل</span></h4><p>دخول الباص محيط أي محطة يحدّث شريط التقدم تلقائياً دون تدخل السائق، ويُرسل «الباص يبعد محطة واحدة عنك» للطلاب التاليين. زر «تأخير» متاح عند الزحام.</p></div>
<div class="step"><h4>التتبع الحي للطالب <span class="t">Socket</span></h4><p>الطالب يرى الباص يتحرك على المسار لحظياً — ولا يُسمح له بالانضمام لغرفة البث إلا بعضوية نشطة في المؤسسة المالكة للخط.</p></div>
<div class="step"><h4>نقطة التحويل الربحية <span class="t">جوهر النموذج</span></h4><p>إذا فات الطالبَ الباصُ يظهر زر بارز: «فاتك الباص؟ اطلب سيارة الآن» — يحوّله لرحلة مدفوعة عادية من سيرو. هذا هو العائد الأساسي لخط الأعمال كله.</p></div>
</div>
<div class="duo" style="margin-top:14px;">
<div class="panel"><h4>ضوابط أمنية مبنية</h4><ul>
<li>حماية IDOR: لا يستطيع سائق إنهاء رحلة سائق آخر.</li>
<li>تشفير أرقام الهواتف والأرقام الجامعية في القاعدة.</li>
<li>Rate Limiting على OTP وتسجيل الدخول.</li>
<li>تفعيل الطالب فوري بمطابقة الكشف — دون OTP إضافي لتوفير التكلفة.</li>
</ul></div>
<div class="panel"><h4>نمطان تشغيليان</h4><ul>
<li><b>أسطول المؤسسة:</b> الجامعة تملك باصاتها وسائقيها.</li>
<li><b>الناقل المتعاقد:</b> شركة نقل طرف ثالث تشغّل خطوط مؤسسة بلا أسطول، بنفس برمجيات التتبع.</li>
<li>سائق الباص منفصل تماماً عن كابتن المشاوير ولا يتلقى طلبات عادية.</li>
</ul></div>
</div>
<div class="alert warn"><span class="tag">فجوات معروفة قيد المعالجة</span>
<p>المراجعة الفنية الكاملة في <code>docs/05_transit_mawasalati</code> توثّق بنوداً مفتوحة: نواقص في ربط السائق، واعتماد الخطوط، وحالات IDOR إضافية — يجب إغلاقها قبل أول إطلاق جامعي واسع.</p>
</div>
</section>
<!-- 08 BOTS -->
<section id="bots">
<div class="sec-head">
<span class="eyebrow">08</span>
<h2>البوتات والذكاء الاصطناعي التسويقي</h2>
<p class="thesis">منظومة مغلقة: بوت يسحب أسعار المنافسين من تطبيقاتهم ← محرك يفكّك معادلاتهم ← إعادة تسعير آلية ← بوتات سوشيال تصنع «نقاشات» لصالح سيرو. ميزة تنافسية حقيقية، بمخاطر قانونية وسمعية واضحة.</p>
</div>
<div class="rows">
<div class="row-item"><h4>بوت أندرويد يقرأ تطبيقات المنافسين</h4><p>Accessibility Service يفتح كريم/أوبر/يلا-جو/TaxiF/زاكن فعلياً، يدخل نقطتين، ويقرأ السعر من الشاشة.</p></div>
<div class="row-item"><h4>فك معادلة تسعير المنافس</h4><p>انحدار إحصائي يشتق (أساس + لكل كم + لكل دقيقة) ويكشف حتى الحد الأدنى الخفي للأجرة.</p></div>
<div class="row-item"><h4>إعادة تسعير آلية −6.5%</h4><p>كرون جوب يُبقي سيرو أرخص تلقائياً، مع «وضع الظل»: العروض المؤقتة للمنافس تُقابل بكود خصم بدل حرق السعر الأساسي (سقف تغيير 3% وتهدئة 3 أيام).</p></div>
<div class="row-item"><h4>بوتات سوشيال بلهجات محلية</h4><p>حسابات مُدارة بتدوير IP، تعليقات Gemini بلهجة كل بلد، و«دراما حوار» مفتعلة (تشكيك ثم رد داعم) بتأخير عشوائي.</p></div>
</div>
<div class="alert crit"><span class="tag">⚠️ خطر قانوني وسمعي</span>
<p>سحب الأسعار آلياً يخالف غالباً شروط استخدام تطبيقات المنافسين، والحسابات المنسّقة الوهمية تُصنَّف «تلاعباً منسّقاً غير أصيل» يخالف سياسات المنصات صراحة — خطر حظر جماعي وضرر سمعي إذا انكشف. قرار يجب اتخاذه بوعي كامل بالمخاطرة، لا بالعائد فقط.</p>
</div>
</section>
<!-- 09 FINANCE -->
<section id="finance">
<div class="sec-head">
<span class="eyebrow">09</span>
<h2>نبيه، المحفظة، والاستثمار</h2>
<p class="thesis">تصحيح مهم: «نبيه» ليست منصة استثمار — لا فوائد ولا حصص في الكود. هي مزوّد أتمتة خارجي عبر واتساب. الاستثمار الحقيقي في وثائق المستثمرين، مع نقطة تحتاج انتباهاً فورياً.</p>
</div>
<div class="rows">
<div class="row-item"><h4>نبيه فعلياً</h4><p>أتمتة واتساب بالذكاء الاصطناعي: تسجيل سائقين بالمحادثة، استفسارات أرباح، فحص شكاوى بـ Gemini، وتحقق بصري من إيصالات الدفع.</p></div>
<div class="row-item"><h4>محفظة سيرو</h4><p>خدمة منفصلة (268 ملف): MTN، Syriatel Cash، ShamCash، Cliq، PayMob، eCash — مع تحويل فعلي بين محافظ السائقين برسوم للشركة.</p></div>
<div class="row-item"><h4>طلب تمويل موثّق</h4><p>200,000$ مقابل 22% (تقييم ضمني ~909K$) بأربع طبقات إيراد: عمولة، Prime، إعلانات جغرافية، وترخيص خرائط سيرو كبديل أرخص من Google Maps.</p></div>
<div class="row-item"><h4>عقد سوريا المنفصل</h4><p>اتفاقية حصة أرباح 180,000$ لسوريا فقط — سرديتان تمويليتان تحتاجان توحيداً قبل أي عرض رسمي.</p></div>
</div>
<div class="alert crit"><span class="tag">⚠️ تسريب بيانات — إجراء فوري</span>
<p><code>siromove.com/contract.html</code> على النطاق العام يحتوي نص العقد الاستثماري كاملاً مع <b>أرقام هوية/جواز حقيقية</b> لمؤسسَين ومستثمر — متاح لأي زائر. يجب إزالته من الوصول العام أو حمايته بمصادقة فوراً.</p>
</div>
</section>
<!-- 10 LEGACY -->
<section id="legacy">
<div class="sec-head">
<span class="eyebrow">10</span>
<h2>الإرث الرقمي: القيمة الفكرية والمادية</h2>
<p class="thesis">لو حلّ نموذج ذكاء اصطناعي محل الفريق، هل كان يبني هذا من الصفر؟ جزء كبير من الكود: نعم. الجزء الأكثر قيمة: لا — وهذا ما يحدد قيمة المشروع.</p>
</div>
<div class="duo">
<div class="panel can"><h4>✅ ما يُنتجه الذكاء الاصطناعي بسرعة</h4><ul>
<li>شاشات Flutter القياسية والتكاملات الجاهزة (PayMob، Gemini، Firebase).</li>
<li>منطق CRUD الإداري والأمان القياسي (JWT، تشفير، Rate Limiting).</li>
<li>نمط Socket + Redis Geo كتصميم هندسي معروف بالصناعة.</li>
</ul></div>
<div class="panel cannot"><h4>❌ ما لا يُخترع بمجرد Prompt</h4><ul>
<li><b>معادلات تسعير المنافسين الفعلية</b> — أشهر من بيانات سوق حقيقية.</li>
<li><b>القيم المضبوطة تشغيلياً</b> (12 ساعة، 3 إلغاءات، 90 ثانية) — نتاج حوادث وتجربة موثقة.</li>
<li><b>العلاقات المحلية</b>: ترخيص سوريا (قانون 16/2021)، اتفاقيات MTN وSyriatel وCliq، وتوزيع APK خارج المتجر بسبب العقوبات.</li>
<li><b>القاعدة الفعلية</b>: 1,447 سائقاً و2,891 راكباً في 45 يوماً بميزانية محدودة — أصل شبكي لا يُشترى.</li>
</ul></div>
</div>
<div class="alert good" style="margin-top:14px;"><span class="tag">الخلاصة</span>
<p>هذا المشروع مثال حي على الفرق بين «الكود» و«الشركة»: الذكاء الاصطناعي يسرّع كتابة الكود فعلاً، لكنه لا يعوّض الوقت الفعلي والمخاطرة الفعلية والعلاقات الفعلية — وهذه، لا الكود، هي القيمة غير القابلة للنسخ. القيمة المادية الموثقة داخلياً: تقييم ضمني ~909 ألف دولار.</p>
</div>
</section>
<!-- 11 RISKS -->
<section id="risks">
<div class="sec-head">
<span class="eyebrow">11</span>
<h2>المخاطر والفجوات المجمّعة</h2>
<p class="thesis">كل ما يحتاج قراراً أو إجراءً، من الأشد إلحاحاً للأقل.</p>
</div>
<div class="alert crit"><span class="tag">حرج — الآن</span><p>أرقام هوية حقيقية منشورة بلا حماية على <code>siromove.com/contract.html</code> — القسم 09.</p></div>
<div class="alert warn"><span class="tag">قانوني وسمعي</span><p>بوتات سحب الأسعار والتلاعب المنسّق بالسوشيال — القسم 08.</p></div>
<div class="alert warn"><span class="tag">حوكمة تمويل</span><p>سرديتان تمويليتان متضاربتان (180K$ سوريا مقابل 200K$/22% عامة) تحتاجان توحيداً.</p></div>
<div class="alert warn"><span class="tag">تشغيلي</span><p>لا أداة عرض/حل شكوى فعلية، لا Refund، لا SLA — القسم 04. وفجوات مواصلاتي المفتوحة — القسم 07.</p></div>
<div class="alert warn"><span class="tag">أمني</span><p>بنود التدقيق الأمني غير المغلقة: Rate limiting معطّل بأماكن، ملفات اختبار في الإنتاج، تشفير CBC بـ IV ثابت.</p></div>
</section>
<!-- 12 TUTORIAL -->
<section id="tutorial">
<div class="sec-head">
<span class="eyebrow">12</span>
<h2>خطة التوتوريال داخل الموقع — «كيف تستخدم سيرو»</h2>
<p class="thesis">صفحة <code>siromove.com/tutorial</code> بسبع وحدات تشرح كل عملية خطوة بخطوة بلقطات شاشة حقيقية داخل إطار هاتف. المطلوب تصويره: <b class="num">34 لقطة</b> في جلسة واحدة (~ساعتين) على بيئة تجريبية. الخطة التفصيلية بأسماء الشاشات في الكود: <code>docs/02_journeys_and_tutorials/TUTORIAL_PLAN_AR.md</code>.</p>
</div>
<div class="mods">
<div class="mod"><span class="shots">5 لقطات</span><h4>1 · التسجيل</h4>
<ol><li>شاشة البداية بالشعار</li><li>شرائح التعريف</li><li>رقم الهاتف واختيار الدولة</li><li>رمز التحقق OTP</li><li>إكمال الاسم والبدء</li></ol>
<p class="note">الرسالة: رقم هاتف فقط — أقل من دقيقة حتى الخريطة.</p></div>
<div class="mod"><span class="shots">6 لقطات</span><h4>2 · طلب الرحلة</h4>
<ol><li>الخريطة والسيارات القريبة</li><li>البحث عن الوجهة</li><li>دبوس الانطلاق</li><li>الفئات التسع مع شارة التوفير</li><li>كود الخصم</li><li>تأكيد الطلب بالسعر النهائي</li></ol>
<p class="note">الرسالة: السعر نهائي ومحسوب من الخادم — لا مفاجآت.</p></div>
<div class="mod"><span class="shots">4 لقطات</span><h4>3 · الانتظار والمطابقة</h4>
<ol><li>نافذة البحث مع المؤقّت</li><li>اقتراح المفاوض الذكي (بعد 90 ثانية)</li><li>بطاقة الكابتن</li><li>الكابتن في الطريق مع المسار</li></ol></div>
<div class="mod"><span class="shots">5 لقطات</span><h4>4 · أثناء الرحلة والسلامة</h4>
<ol><li>إشعار «الكابتن وصل» ومهلة 5 دقائق</li><li>المسار الأزرق والعداد</li><li>مشاركة الرحلة مع الأهل</li><li>زر SOS وهزّ الهاتف</li><li>المكالمة داخل التطبيق</li></ol></div>
<div class="mod"><span class="shots">3 لقطات</span><h4>5 · الإلغاء</h4>
<ol><li>مكان زر الإلغاء</li><li>اختيار السبب</li><li>التأكيد وسياسة الرسوم</li></ol>
<p class="note">قبل قبول الكابتن: مجاني دائماً. بعد وصوله: قد تُطبَّق رسوم.</p></div>
<div class="mod"><span class="shots">6 لقطات</span><h4>6 · الدفع والتقييم</h4>
<ol><li>الفاتورة النهائية</li><li>قائمة طرق الدفع</li><li>تأكيد الكاش</li><li>المحفظة والشحن بمكافأة</li><li>التقييم والإكرامية</li><li>سجل الرحلات</li></ol></div>
<div class="mod"><span class="shots">5 لقطات</span><h4>7 · مواصلاتي للطلاب</h4>
<ol><li>اختيار الجامعة</li><li>تفعيل الرقم الجامعي</li><li>الخطوط والجداول</li><li>التتبع الحي للباص</li><li>زر «فاتك الباص؟ اطلب سيارة»</li></ol></div>
<div class="mod"><span class="shots">التنفيذ</span><h4>خطوات الإطلاق</h4>
<ol><li>بناء الصفحة بتبويبات RTL بنفس هوية هذا التقرير</li><li>صور Placeholder بأسماء الملفات النهائية حتى تجهز اللقطات</li><li>جلسة تصوير واحدة للـ 34 لقطة بترتيب الوحدات</li><li>لاحقاً: فيديوهات 30–60 ثانية + Coach Marks داخل التطبيق</li></ol></div>
</div>
</section>
<footer class="end">
<span>أُعدّ بفحص مباشر لكود المشروع — لا تخمين ولا محتوى عام.</span>
<span class="num">آخر تحديث 2026-07-14 · Siro Digital Legacy Report</span>
</footer>
</main>
</div>
+101
View File
@@ -0,0 +1,101 @@
# 📚 مركز توثيق منصة Siro — الفهرس الموحّد
هذا المجلد هو المصدر الوحيد لكل توثيق المشروع. تم دمج المجلدات الثلاثة السابقة
(`docs` + `documents` + `knowledge`) هنا، مقسّمة حسب الموضوع.
> **أين أبدأ؟** التقرير التفاعلي الشامل: [09_reports/siro_digital_legacy_report.html](09_reports/siro_digital_legacy_report.html)
---
## 01_overview — نظرة عامة ومعمارية النظام
فهم البنية الكاملة: 4 تطبيقات Flutter + باك اند PHP + خوادم Socket + Redis.
| الملف | المحتوى |
|---|---|
| [PROJECT_OVERVIEW.md](01_overview/PROJECT_OVERVIEW.md) | تعريف المشروع ومكوناته الرئيسية |
| [SYSTEM_ARCHITECTURE.md](01_overview/SYSTEM_ARCHITECTURE.md) | المعمارية التقنية الكاملة |
| [siro_comprehensive_report.md](01_overview/siro_comprehensive_report.md) | التقرير الشامل الأحدث (فحص 8 مسارات للكود) |
| [tel.comprehensive_report.md](01_overview/tel.comprehensive_report.md) | نسخة التقرير الشامل المعدّة للإرسال |
| [Siro_Platform_Report.md](01_overview/Siro_Platform_Report.md) | تقرير المنصة العام |
| [PLATFORM_CURRENT_STATE_AR.md](01_overview/PLATFORM_CURRENT_STATE_AR.md) | الحالة الراهنة للمنصة |
| [API_DEPENDENCY_MATRIX.md](01_overview/API_DEPENDENCY_MATRIX.md) | مصفوفة اعتماديات الـ API |
| [DATABASE_DEPENDENCY_MATRIX.md](01_overview/DATABASE_DEPENDENCY_MATRIX.md) | مصفوفة جداول قاعدة البيانات |
| [server_architecture_feedback.md](01_overview/server_architecture_feedback.md) | مراجعة معمارية الخوادم المتعددة |
| [AI_CONTEXT.md](01_overview/AI_CONTEXT.md) | سياق موجز لأدوات الذكاء الاصطناعي |
## 02_journeys_and_tutorials — رحلات المستخدم والتوتوريال
سير الرحلة خطوة بخطوة (راكب وسائق) + خطة التوتوريال داخل الموقع.
| الملف | المحتوى |
|---|---|
| [TUTORIAL_PLAN_AR.md](02_journeys_and_tutorials/TUTORIAL_PLAN_AR.md) | ⭐ خطة التوتوريال الكاملة مع قائمة لقطات الشاشة المطلوبة |
| [PASSENGER_JOURNEY.md](02_journeys_and_tutorials/PASSENGER_JOURNEY.md) | دورة حياة الراكب كاملة (شاشات + APIs + حالات) |
| [DRIVER_JOURNEY.md](02_journeys_and_tutorials/DRIVER_JOURNEY.md) | دورة حياة السائق كاملة |
| [ride_simulation_report.md](02_journeys_and_tutorials/ride_simulation_report.md) | تقرير محاكاة رحلة الراكب |
| [driver_ride_simulation_report.md](02_journeys_and_tutorials/driver_ride_simulation_report.md) | تقرير محاكاة رحلة السائق |
| [syria_driver_registration_report.md](02_journeys_and_tutorials/syria_driver_registration_report.md) | تسجيل سائق سوريا |
| ملفات `*_simulation.html` | محاكاة تفاعلية بالمتصفح (راكب/سائق/تسجيل/إدارة/نظام كامل) |
## 03_pricing — محرك التسعير
| الملف | المحتوى |
|---|---|
| [PRICING_ENGINE_ARCHITECTURE.md](03_pricing/PRICING_ENGINE_ARCHITECTURE.md) | معمارية محرك التسعير كاملة |
| [pricing_system_report.md](03_pricing/pricing_system_report.md) | تقرير نظام التسعير |
| [دراسة_نظام_أتمتة_السوق_الذكي.md](03_pricing/دراسة_نظام_أتمتة_السوق_الذكي.md) | أتمتة مراقبة المنافسين وإعادة التسعير |
| [redis_state_plan.md](03_pricing/redis_state_plan.md) | خطة حالة الرحلة في Redis |
## 04_features — الميزات الفنية والتنافسية
| الملف | المحتوى |
|---|---|
| [COMPETITIVE_FEATURES.md](04_features/COMPETITIVE_FEATURES.md) | الميزات التنافسية مقابل كريم/أوبر/يلا-جو |
| [TECHNICAL_ADVANTAGES_AR.md](04_features/TECHNICAL_ADVANTAGES_AR.md) | المزايا التقنية المبنية داخلياً |
| [NEW_FEATURES_PROPOSAL_AR.md](04_features/NEW_FEATURES_PROPOSAL_AR.md) | مقترحات ميزات جديدة |
| [AUDIO_MUSIC_FEATURES_AR.md](04_features/AUDIO_MUSIC_FEATURES_AR.md) | ميزات الصوت والموسيقى |
| [BATTERY_PERFORMANCE_AR.md](04_features/BATTERY_PERFORMANCE_AR.md) | أداء البطارية والتحسينات |
| [auto_carplay_checklist_arabic.md](04_features/auto_carplay_checklist_arabic.md) | Android Auto / CarPlay (عربي + [إنجليزي](04_features/auto_carplay_checklist.md)) |
| [ai_document_extraction_prompt.md](04_features/ai_document_extraction_prompt.md) | برومبت استخراج الوثائق بالذكاء الاصطناعي |
## 05_transit_mawasalati — نظام «مواصلاتي» (باصات الجامعات)
| الملف | المحتوى |
|---|---|
| [transit_comprehensive_workflow_report.md](05_transit_mawasalati/transit_comprehensive_workflow_report.md) | ⭐ سير العمليات الكامل (الأحدث — 2026-07-14) |
| [mawasalati_full_system_review.md](05_transit_mawasalati/mawasalati_full_system_review.md) | المراجعة الفنية الكاملة والفجوات المعروفة |
| [mowasalaty_strategy_report.md](05_transit_mawasalati/mowasalaty_strategy_report.md) | التقرير الاستراتيجي (نموذج SaaS المجاني) |
| [mawasalati_plan.md](05_transit_mawasalati/mawasalati_plan.md) | خطة التنفيذ الأصلية |
## 06_investors — وثائق المستثمرين ودراسات الجدوى
| الملف | المحتوى |
|---|---|
| [SIRO_INVESTOR_REPORT_AR.md](06_investors/SIRO_INVESTOR_REPORT_AR.md) | تقرير المستثمر الرئيسي |
| [تقرير_المستثمر_الشامل_Siro.md](06_investors/تقرير_المستثمر_الشامل_Siro.md) | التقرير الشامل للمستثمر |
| [Siro_Investors_Report_AR.md](06_investors/Siro_Investors_Report_AR.md) | تقرير مستثمرين (نسخة سابقة) |
| [SIRO_INVESTOR_DECK.html](06_investors/SIRO_INVESTOR_DECK.html) | عرض المستثمرين التفاعلي |
| [Siro_Feasibility_Study_v4.pdf](06_investors/Siro_Feasibility_Study_v4.pdf) | دراسة الجدوى v4 |
| [Siro_Egypt_Competitive_Study_AR.md](06_investors/Siro_Egypt_Competitive_Study_AR.md) | دراسة سوق مصر التنافسية |
| تقرير_سيرو_الكامل.docx | نسخة Word للمشاركة |
> ⚠️ تنبيه حوكمة: يوجد سرديتان تمويليتان مختلفتان (180K$ سوريا مقابل 200K$/22% عامة) — يجب توحيدهما قبل أي عرض رسمي.
## 07_marketing — التسويق والنمو
| الملف | المحتوى |
|---|---|
| [SIRO_MARKETING_REPORT_AR.md](07_marketing/SIRO_MARKETING_REPORT_AR.md) | تقرير التسويق الرئيسي |
| [marketing_and_growth_strategy.md](07_marketing/marketing_and_growth_strategy.md) | استراتيجية التسويق والنمو |
| [marketing_integration_plan_ar.md](07_marketing/marketing_integration_plan_ar.md) | خطة التكامل التسويقي |
| [damascus_zones_map.html](07_marketing/damascus_zones_map.html) | خريطة مناطق دمشق |
## 08_security — الأمن ومراجعات الكود
| الملف | المحتوى |
|---|---|
| [التقرير_الأمني_Backend_Siro.md](08_security/التقرير_الأمني_Backend_Siro.md) | التدقيق الأمني للباك اند (بنود مفتوحة!) |
| [CODE_REVIEW_REPORT_AR.md](08_security/CODE_REVIEW_REPORT_AR.md) | مراجعة الكود الشاملة |
## 09_reports — التقارير التفاعلية النهائية
| الملف | المحتوى |
|---|---|
| [siro_digital_legacy_report.html](09_reports/siro_digital_legacy_report.html) | ⭐ تقرير الإرث الرقمي الشامل (يشمل مواصلاتي وسير الرحلة والتوتوريال) |
## 99_archive — أرشيف
| الملف | المحتوى |
|---|---|
| intaleq_v1_secure_latest.md | نسخة كود V1 المؤرشفة (1.2MB — مرجع تاريخي فقط) |
-657
View File
@@ -1,657 +0,0 @@
<style>
@import url('https://fonts.googleapis.com/css2?family=Almarai:wght@300;400;700;800&family=IBM+Plex+Sans+Arabic:wght@300;400;500;700&display=swap');
:root{
--paper:#F5F4EF;
--paper-raised:#FFFFFF;
--ink:#181A20;
--ink-soft:#54585F;
--ink-faint:#82858C;
--line:#DFDCD2;
--accent:#1E6F5C;
--accent-ink:#0F4437;
--accent-soft:#E3EEEA;
--warm:#AD6A2A;
--warm-soft:#F3E7D8;
--good:#2E7D4F;
--good-soft:#E4F1E8;
--warn:#A8791F;
--warn-soft:#F6EBD3;
--critical:#B23B32;
--critical-soft:#F7E4E1;
--shadow: 0 1px 2px rgba(20,20,20,.04), 0 8px 24px rgba(20,20,20,.05);
--font-display:"IBM Plex Sans Arabic","Segoe UI",system-ui,sans-serif;
--font-body:"Almarai","Segoe UI",system-ui,sans-serif;
--font-mono:ui-monospace,"SF Mono",Consolas,"Courier New",monospace;
}
@media (prefers-color-scheme: dark){
:root{
--paper:#12151A;
--paper-raised:#1A1E25;
--ink:#EDEEEE;
--ink-soft:#A6ABB4;
--ink-faint:#787E88;
--line:#2A2F39;
--accent:#4FBF9F;
--accent-ink:#BFEFDE;
--accent-soft:#173029;
--warm:#DE9F55;
--warm-soft:#31261A;
--good:#4CAF77;
--good-soft:#152B1F;
--warn:#D9A94A;
--warn-soft:#332A16;
--critical:#E2695F;
--critical-soft:#341E1C;
--shadow: 0 1px 2px rgba(0,0,0,.3), 0 8px 24px rgba(0,0,0,.35);
}
}
:root[data-theme="dark"]{
--paper:#12151A; --paper-raised:#1A1E25; --ink:#EDEEEE; --ink-soft:#A6ABB4; --ink-faint:#787E88;
--line:#2A2F39; --accent:#4FBF9F; --accent-ink:#BFEFDE; --accent-soft:#173029;
--warm:#DE9F55; --warm-soft:#31261A; --good:#4CAF77; --good-soft:#152B1F;
--warn:#D9A94A; --warn-soft:#332A16; --critical:#E2695F; --critical-soft:#341E1C;
--shadow: 0 1px 2px rgba(0,0,0,.3), 0 8px 24px rgba(0,0,0,.35);
}
:root[data-theme="light"]{
--paper:#F5F4EF; --paper-raised:#FFFFFF; --ink:#181A20; --ink-soft:#54585F; --ink-faint:#82858C;
--line:#DFDCD2; --accent:#1E6F5C; --accent-ink:#0F4437; --accent-soft:#E3EEEA;
--warm:#AD6A2A; --warm-soft:#F3E7D8; --good:#2E7D4F; --good-soft:#E4F1E8;
--warn:#A8791F; --warn-soft:#F6EBD3; --critical:#B23B32; --critical-soft:#F7E4E1;
--shadow: 0 1px 2px rgba(20,20,20,.04), 0 8px 24px rgba(20,20,20,.05);
}
.page{
background:var(--paper);
color:var(--ink);
font-family:var(--font-body);
line-height:1.75;
font-size:16px;
min-height:100%;
}
.page *{ box-sizing:border-box; }
.page h1,.page h2,.page h3,.page h4{
font-family:var(--font-display);
text-wrap:balance;
color:var(--ink);
font-weight:700;
margin:0;
}
.page p{ margin:0; color:var(--ink-soft); }
.page code, .ltr{
direction:ltr; unicode-bidi:isolate; font-family:var(--font-mono);
background:var(--paper); border:1px solid var(--line); border-radius:5px;
padding:.05em .45em; font-size:.85em; color:var(--accent-ink); display:inline-block;
line-height:1.5;
}
/* ---------- Hero ---------- */
.hero{
padding:56px 6vw 40px;
border-bottom:1px solid var(--line);
background:
radial-gradient(1200px 400px at 85% -10%, var(--accent-soft), transparent 60%),
var(--paper);
}
.eyebrow{
display:inline-flex; align-items:center; gap:8px;
font-family:var(--font-display); font-weight:700; font-size:.8rem;
letter-spacing:.06em; color:var(--accent-ink);
background:var(--accent-soft); border:1px solid color-mix(in srgb, var(--accent) 35%, transparent);
padding:6px 14px; border-radius:999px; margin-bottom:22px;
}
.hero h1{ font-size:clamp(1.9rem, 3.6vw, 3rem); line-height:1.25; max-width:20ch; }
.hero .lede{ margin-top:16px; max-width:62ch; font-size:1.08rem; color:var(--ink-soft); }
.hero .meta{ margin-top:10px; font-size:.85rem; color:var(--ink-faint); }
.stats{
margin-top:34px; display:grid; grid-template-columns:repeat(6,1fr); gap:1px;
background:var(--line); border:1px solid var(--line); border-radius:14px; overflow:hidden;
}
.stat{ background:var(--paper-raised); padding:16px 14px; text-align:center; }
.stat b{ display:block; font-family:var(--font-display); font-size:1.5rem; font-variant-numeric:tabular-nums; color:var(--accent-ink); }
.stat span{ display:block; margin-top:4px; font-size:.74rem; color:var(--ink-faint); }
/* ---------- Layout ---------- */
.layout{ display:grid; grid-template-columns:260px 1fr; gap:44px; padding:40px 6vw 90px; max-width:1400px; margin:0 auto; align-items:start; }
nav.toc{ position:sticky; top:24px; align-self:start; }
nav.toc .toc-title{ font-family:var(--font-display); font-weight:700; font-size:.78rem; letter-spacing:.05em; color:var(--ink-faint); margin-bottom:12px; padding-inline-start:14px; }
nav.toc ol{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:2px; border-inline-start:2px solid var(--line); }
nav.toc a{
display:flex; gap:10px; align-items:baseline; text-decoration:none; color:var(--ink-soft);
padding:8px 14px; font-size:.88rem; border-inline-start:2px solid transparent; margin-inline-start:-2px;
transition:color .15s, border-color .15s, background .15s; border-radius:0 8px 8px 0;
}
nav.toc a:hover{ color:var(--ink); background:var(--paper-raised); }
nav.toc a b{ font-family:var(--font-display); font-variant-numeric:tabular-nums; color:var(--accent); font-size:.8rem; }
.toc-mobile{ display:none; }
main{ min-width:0; display:flex; flex-direction:column; gap:88px; }
section{ scroll-margin-top:20px; display:flex; flex-direction:column; gap:22px; }
.chapter-head{ display:flex; gap:16px; align-items:flex-start; padding-bottom:18px; border-bottom:1px solid var(--line); }
.chapter-num{ font-family:var(--font-display); font-size:1rem; color:var(--accent); font-weight:700; font-variant-numeric:tabular-nums; padding-top:6px; }
.chapter-head h2{ font-size:clamp(1.4rem,2.2vw,1.9rem); }
.thesis{ font-size:1rem; margin-top:8px; max-width:70ch; }
h3.sub{ font-family:var(--font-display); font-size:1.05rem; font-weight:700; color:var(--ink); margin-top:6px; }
h4.group{ font-family:var(--font-display); font-size:.82rem; font-weight:700; letter-spacing:.03em; color:var(--warm); text-transform:none; margin:2px 0 -6px; }
.grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(270px,1fr)); gap:14px; }
.card{
background:var(--paper-raised); border:1px solid var(--line); border-radius:14px; padding:16px 18px;
box-shadow:var(--shadow); display:flex; flex-direction:column; gap:8px;
}
.card h4{ font-family:var(--font-display); font-size:.98rem; font-weight:700; color:var(--ink); }
.card p{ font-size:.9rem; }
.card .why{ font-size:.86rem; color:var(--ink-soft); border-inline-start:3px solid var(--accent); padding-inline-start:10px; }
.card .why b{ color:var(--accent-ink); font-weight:700; }
.card .file{ margin-top:auto; }
.table-wrap{ overflow-x:auto; border:1px solid var(--line); border-radius:14px; background:var(--paper-raised); box-shadow:var(--shadow); }
table{ border-collapse:collapse; width:100%; min-width:560px; font-size:.9rem; }
th,td{ text-align:right; padding:11px 16px; border-bottom:1px solid var(--line); vertical-align:top; }
th{ font-family:var(--font-display); font-size:.78rem; letter-spacing:.03em; color:var(--ink-faint); background:var(--paper); white-space:nowrap; }
tr:last-child td{ border-bottom:none; }
td b{ color:var(--ink); }
.alert{ border-radius:14px; padding:16px 20px; display:flex; flex-direction:column; gap:6px; border:1px solid; }
.alert .tag{ font-family:var(--font-display); font-size:.74rem; font-weight:700; letter-spacing:.05em; }
.alert p{ font-size:.92rem; }
.alert-critical{ background:var(--critical-soft); border-color:color-mix(in srgb, var(--critical) 40%, transparent); }
.alert-critical .tag{ color:var(--critical); }
.alert-warn{ background:var(--warn-soft); border-color:color-mix(in srgb, var(--warn) 40%, transparent); }
.alert-warn .tag{ color:var(--warn); }
.alert-good{ background:var(--good-soft); border-color:color-mix(in srgb, var(--good) 40%, transparent); }
.alert-good .tag{ color:var(--good); }
.alert-note{ background:var(--accent-soft); border-color:color-mix(in srgb, var(--accent) 40%, transparent); }
.alert-note .tag{ color:var(--accent-ink); }
.pillrow{ display:flex; flex-wrap:wrap; gap:8px; }
.pill{ font-size:.78rem; background:var(--paper); border:1px solid var(--line); border-radius:999px; padding:5px 12px; color:var(--ink-soft); }
.twocol{ display:grid; grid-template-columns:1.1fr .9fr; gap:20px; align-items:start; }
@media (max-width:860px){ .twocol{ grid-template-columns:1fr; } }
.verdict{
background:linear-gradient(160deg, var(--accent-soft), var(--paper-raised) 60%);
border:1px solid color-mix(in srgb, var(--accent) 30%, transparent);
border-radius:18px; padding:26px 28px; display:flex; flex-direction:column; gap:14px;
}
.verdict h3{ font-size:1.15rem; }
.split{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media (max-width:720px){ .split{ grid-template-columns:1fr; } }
.split .side{ background:var(--paper-raised); border:1px solid var(--line); border-radius:12px; padding:16px 18px; }
.split .side h4{ font-size:.85rem; letter-spacing:.02em; }
.split .side.can h4{ color:var(--good); }
.split .side.cannot h4{ color:var(--critical); }
.split ul{ margin:8px 0 0; padding-inline-start:20px; font-size:.88rem; color:var(--ink-soft); display:flex; flex-direction:column; gap:6px; }
footer.endnote{ border-top:1px solid var(--line); padding-top:22px; font-size:.82rem; color:var(--ink-faint); display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; }
@media (max-width:980px){
.layout{ grid-template-columns:1fr; }
nav.toc.desktop{ display:none; }
.toc-mobile{ display:block; margin-bottom:6px; }
.toc-mobile summary{
cursor:pointer; font-family:var(--font-display); font-weight:700; font-size:.9rem;
background:var(--paper-raised); border:1px solid var(--line); border-radius:12px; padding:12px 16px;
color:var(--ink);
}
.toc-mobile[open] summary{ border-radius:12px 12px 0 0; }
.toc-mobile ol{ list-style:none; margin:0; padding:8px; border:1px solid var(--line); border-top:none; border-radius:0 0 12px 12px; background:var(--paper-raised); display:flex; flex-direction:column; gap:2px; }
.toc-mobile a{ display:flex; gap:8px; text-decoration:none; color:var(--ink-soft); padding:8px 10px; border-radius:8px; font-size:.86rem; }
.toc-mobile a b{ color:var(--accent); font-variant-numeric:tabular-nums; }
.stats{ grid-template-columns:repeat(3,1fr); }
}
@media (max-width:520px){
.stats{ grid-template-columns:repeat(2,1fr); }
.hero{ padding:40px 5vw 30px; }
.layout{ padding:28px 5vw 60px; gap:28px; }
}
</style>
<div class="page" dir="rtl" lang="ar">
<header class="hero">
<span class="eyebrow">🧭 تقرير تقني وإداري شامل</span>
<h1>الإرث الرقمي لمنصة Siro — كل ما بُني، ولماذا بُني</h1>
<p class="lede">
جرد كامل لكل تطبيقات وخدمات منصة Siro لخدمات النقل التشاركي: تطبيق الراكب، تطبيق السائق، تطبيق الإدارة،
تطبيق خدمة العملاء، البنية الخلفية، نظام الخرائط والموقع، البوتات، ومنصات المحفظة والاستثمار — مع تقييم صريح
لقيمتها الفكرية والمادية، وهل يقدر نموذج ذكاء اصطناعي أن يبنيها من الصفر.
</p>
<p class="meta">أُعدّ بفحص مباشر للكود المصدري عبر ٨ مسارات بحث متوازية بتاريخ 2026-07-09 — لا تخمين، كل رقم ومسار ملف مذكور تمّ التحقق منه في الكود الفعلي.</p>
<div class="stats">
<div class="stat"><b>4</b><span>تطبيقات موبايل رئيسية</span></div>
<div class="stat"><b>~1500+</b><span>ملف كود عبر النظام كامل</span></div>
<div class="stat"><b>3</b><span>دول تشغيل فعلية</span></div>
<div class="stat"><b>9</b><span>فئات مركبات وخدمات</span></div>
<div class="stat"><b>13+</b><span>لغة مدعومة</span></div>
<div class="stat"><b>10+</b><span>طريقة دفع محلية</span></div>
</div>
</header>
<div class="layout">
<details class="toc-mobile">
<summary>فهرس التقرير</summary>
<ol>
<li><a href="#overview"><b>00</b> نظرة عامة على البنية</a></li>
<li><a href="#rider"><b>01</b> تطبيق الراكب</a></li>
<li><a href="#driver"><b>02</b> تطبيق السائق</a></li>
<li><a href="#admin"><b>03</b> تطبيق الإدارة</a></li>
<li><a href="#service"><b>04</b> تطبيق خدمة العملاء</a></li>
<li><a href="#backend"><b>05</b> البنية الخلفية ومحرك التسعير</a></li>
<li><a href="#maps"><b>06</b> نظام الموقع والخرائط</a></li>
<li><a href="#bots"><b>07</b> البوتات والذكاء الاصطناعي التسويقي</a></li>
<li><a href="#nabeh"><b>08</b> نبيه، المحفظة، والاستثمار</a></li>
<li><a href="#legacy"><b>09</b> الإرث الرقمي: القيمة الفكرية والمادية</a></li>
<li><a href="#risks"><b>10</b> المخاطر والفجوات المجمّعة</a></li>
</ol>
</details>
<nav class="toc desktop" aria-label="فهرس التقرير">
<div class="toc-title">فهرس التقرير</div>
<ol>
<li><a href="#overview"><b>00</b> نظرة عامة</a></li>
<li><a href="#rider"><b>01</b> تطبيق الراكب</a></li>
<li><a href="#driver"><b>02</b> تطبيق السائق</a></li>
<li><a href="#admin"><b>03</b> تطبيق الإدارة</a></li>
<li><a href="#service"><b>04</b> خدمة العملاء</a></li>
<li><a href="#backend"><b>05</b> البنية الخلفية</a></li>
<li><a href="#maps"><b>06</b> الخرائط والموقع</a></li>
<li><a href="#bots"><b>07</b> البوتات والـ AI</a></li>
<li><a href="#nabeh"><b>08</b> نبيه والاستثمار</a></li>
<li><a href="#legacy"><b>09</b> الإرث الرقمي</a></li>
<li><a href="#risks"><b>10</b> المخاطر والفجوات</a></li>
</ol>
</nav>
<main>
<!-- 00 OVERVIEW -->
<section id="overview">
<div class="chapter-head">
<span class="chapter-num">00</span>
<div>
<h2>نظرة عامة: منصة واحدة، ثمانية أنظمة متكاملة</h2>
<p class="thesis">Siro مو مجرد "تطبيق طلب سيارة" — هي منظومة كاملة من 4 تطبيقات فليتر، وباك اند PHP/Node ضخم، وخوادم Socket خاصة للموقع الجغرافي الحي، ومحرك تسعير بالذكاء الاصطناعي، وبوتات أتمتة، ومنصات مالية — كلها مبنية داخليًا (in-house) بدل الاعتماد على خدمات جاهزة، وتعمل بالتوازي في الأردن ومصر وسوريا.</p>
</div>
</div>
<div class="grid">
<div class="card">
<h4>🚕 4 تطبيقات Flutter</h4>
<p>الراكب (226 ملف)، السائق (275 ملف — الأكبر)، الإدارة (131 ملف)، خدمة العملاء (66 ملف). كل تطبيق له فريق منطق منفصل لكن يشترك بنفس الباك اند.</p>
</div>
<div class="card">
<h4>🗄️ باك اند PHP ضخم ومقسّم</h4>
<p>وحدات منفصلة للمصادقة، الرحلات، التسعير، خدمة العملاء، التأمين، توثيق مصر — كل وحدة تمر إجباريًا عبر طبقة أمان مركزية واحدة (JWT + تشفير + تحديد معدل الطلبات).</p>
</div>
<div class="card">
<h4>📍 خوادم Socket خاصة للموقع</h4>
<p>خادم سائق وخادم راكب منفصلان (WebSocket)، يغذّيان بعضهما بشكل حي، مبنيان بدل الاعتماد الكامل على Google Maps للتتبع اللحظي — توفير تكلفة ضخم عند التوسع.</p>
</div>
<div class="card">
<h4>🤖 محرك تسعير وتسويق بالذكاء الاصطناعي</h4>
<p>بوت أندرويد يقرأ أسعار المنافسين مباشرة من تطبيقاتهم، ومحرك Node.js يفكّك معادلات تسعيرهم، وكرون جوبز PHP تُعدّل أسعار Siro تلقائيًا لتبقى أرخص بـ 6.5%.</p>
</div>
<div class="card">
<h4>💳 محفظة ودفع متعدد الدول</h4>
<p>خدمة محفظة منفصلة (268 ملف) تربط MTN وSyriatel Cash وShamCash وCliq وPayMob وeCash — كل دولة وطرق دفعها الخاصة.</p>
</div>
<div class="card">
<h4>🌍 تشغيل حقيقي متعدد الدول</h4>
<p>الأردن ومصر وسوريا فعليًا، مع خطط توسع موثقة للعراق وليبيا ودول الخليج — كل الأسعار والدفع والتسجيل مُخصص لكل دولة على حدة.</p>
</div>
</div>
</section>
<!-- 01 RIDER -->
<section id="rider">
<div class="chapter-head">
<span class="chapter-num">01</span>
<div>
<h2>تطبيق الراكب</h2>
<p class="thesis">الواجهة التي يتعامل معها ملايين المستخدمين المحتملين — مبنية بعمق أكبر بكثير من "اطلب سيارة وادفع"، وفيها ميزات ثقة وسلامة نادرة حتى عند منافسين أكبر.</p>
</div>
</div>
<h4 class="group">حجز الرحلة وأنواعها</h4>
<div class="grid">
<div class="card"><h4>9 فئات ركوب</h4><p>الاقتصادية (Balash/Awfar)، Comfort، Electric، Lady (نسائية فقط)، Van (عائلي)، VIP/Mishwar (اختيار سائق محدد بالاسم لموعد لاحق)، توصيل، ورايح-جاي (بين مدن، لمسافات أطول من 23 كم).</p><p class="why"><b>ليش مهم:</b> كل فئة تفتح شريحة سوق مختلفة — من الطالب صاحب الميزانية المحدودة إلى العائلة، وحتى الراكبات اللي بيفضلن سائقة.</p></div>
<div class="card"><h4>تسعير من طرف السيرفر فقط</h4><p>السعر يُحسب بالكامل على الخادم، مو على الجهاز، لمنع التلاعب بالسعر من طرف المستخدم.</p><p class="why"><b>ليش مهم:</b> يمنع الاحتيال المباشر على السعر ويحمي هامش الربح.</p></div>
<div class="card"><h4>"المفاوض الذكي" (AI Negotiator)</h4><p>إذا ما وافق أي سائق خلال 90 ثانية، يقترح النظام تلقائيًا رفع السعر ~5% لإعادة المحاولة، ويعرضه للراكب كـ"اقتراح ذكاء اصطناعي".</p><p class="why"><b>ليش مهم:</b> يقلل نسبة إلغاء الطلبات الفاشلة بدل ما يخسر الراكب رحلته بالكامل.</p></div>
<div class="card"><h4>شارة مقارنة أسعار مع المنافسين</h4><p>تظهر للراكب "أنت توفّر X% مقارنة بكريم/أوبر/يلاّ-جو/زاكن..." بالاسم صراحة.</p><p class="why"><b>ليش مهم:</b> استهداف مباشر لحساسية السعر عند المستخدم، وبناء ثقة عبر الشفافية.</p></div>
</div>
<h4 class="group">الدفع والمحفظة</h4>
<div class="grid">
<div class="card"><h4>طرق دفع متعددة حسب الدولة</h4><p>كاش، محفظة، PayMob، MTN موني، Syriatel Cash، Cliq (الأردن)، eCash (سوريا/مصر)، وتحويل بنكي بإثبات صورة يُراجعه موظف عند غياب بوابة آلية.</p><p class="why"><b>ليش مهم:</b> السوق العربي مجزأ ماليًا — دعم كل قناة دفع محلية يرفع نسبة إتمام الدفع فعليًا.</p></div>
<div class="card"><h4>Siro Prime (اشتراك شهري)</h4><p>حوالي 4 دولار شهريًا: بدون تسعير ذروة (Surge)، أولوية مطابقة سائق، وشارة "Prime" تجعل السائقين أكثر قبولًا للطلب.</p><p class="why"><b>ليش مهم:</b> إيراد شهري ثابت ومتكرر (MRR) — نفس فكرة Uber One.</p></div>
<div class="card"><h4>مكافآت شحن المحفظة</h4><p>مثلاً "ادفع 20 دينار، خذ 21" — تختلف النسبة حسب الدولة.</p><p class="why"><b>ليش مهم:</b> يشجع تعبئة رصيد مسبق، يقلل الاعتماد على الكاش، ويزيد الاحتفاظ بالمستخدم.</p></div>
<div class="card"><h4>تنبيه الرصيد السالب</h4><p>بانر أحمر دائم + قراءة صوتية (TTS) إذا كان على الراكب دين من رحلة كاش سابقة.</p><p class="why"><b>ليش مهم:</b> تحصيل ديون استباقي بدل خسارتها بالكامل.</p></div>
</div>
<h4 class="group">السلامة والثقة</h4>
<div class="grid">
<div class="card"><h4>زر الطوارئ (SOS) + الهزّ للتفعيل</h4><p>يرسل واتساب لجهة طوارئ محفوظة مسبقًا مع الموقع الحي، اسم السائق، رقم اللوحة. يمكن تفعيله أيضًا بهزّ الهاتف 5 مرات (مفيد لو ما قدر المستخدم يلمس الشاشة بأمان).</p><p class="why"><b>ليش مهم:</b> سلامة فعلية في لحظة خطر حقيقية، مش مجرد ميزة تسويقية.</p></div>
<div class="card"><h4>مراقبة رحلة حية لطرف ثالث</h4><p>شاشة رابط منفصلة تسمح لولي أمر مثلاً بمتابعة موقع/سرعة الراكب لحظيًا دون تثبيت التطبيق.</p><p class="why"><b>ليش مهم:</b> يستهدف شريحة الطالبات الجامعيات وثقة الأهل — تمايز حقيقي عن المنافسين.</p></div>
<div class="card"><h4>تسجيل صوتي للرحلة</h4><p>الراكب يقدر يسجل صوت الرحلة كدليل، يُحفظ ويُشارك عند الحاجة.</p><p class="why"><b>ليش مهم:</b> دليل عند أي نزاع أو شكوى لاحقة.</p></div>
<div class="card"><h4>مكالمة صوتية داخل التطبيق (WebRTC ذاتي)</h4><p>مكالمة بين الراكب والسائق دون كشف رقم الهاتف الحقيقي، ببنية WebRTC مبنية داخليًا بدل الاعتماد على Agora المدفوعة.</p><p class="why"><b>ليش مهم:</b> خصوصية + توفير تكلفة تشغيل السنتر الصوتي بالكامل.</p></div>
<div class="card"><h4>تنبيه تجاوز السرعة</h4><p>عند تجاوز 100 كم/س يظهر تنبيه فوري + اهتزاز + خيار مشاركة تفاصيل الرحلة مباشرة.</p><p class="why"><b>ليش مهم:</b> تقليل المسؤولية القانونية وتوثيق أي حادث محتمل.</p></div>
<div class="card"><h4>حماية تقنية: بصمة جهاز + كشف الروت + تثبيت SSL</h4><p>ربط الحساب ببصمة الجهاز، إغلاق التطبيق تلقائيًا على أجهزة مخترقة (Root/Jailbreak)، ومفاتيح SSL مثبّتة ضد اعتراض حركة البيانات.</p><p class="why"><b>ليش مهم:</b> حماية من سرقة الحسابات والتلاعب بحركة API.</p></div>
</div>
<h4 class="group">ميزات اجتماعية وولاء</h4>
<div class="grid">
<div class="card"><h4>نظام إحالة ثنائي (راكب + سائق)</h4><p>دعوة أصدقاء كركاب أو كسائقين عبر واتساب أو جهات اتصال الهاتف مباشرة، مع مكافأة مالية تُفتح بعد إتمام رحلتين.</p><p class="why"><b>ليش مهم:</b> نمو منخفض التكلفة (Low CAC) ويكبّر جانبي العرض والطلب معًا.</p></div>
<div class="card"><h4>قراءة صوتية (TTS) للواجهة</h4><p>قراءة أوصاف الرحلات والتنبيهات صوتيًا، مع اختيار لغة تلقائي.</p><p class="why"><b>ليش مهم:</b> يوسّع قاعدة المستخدمين لتشمل ضعاف البصر أو غير القارئين — سوق مهمَل من المنافسين.</p></div>
<div class="card"><h4>13+ لغة، بثلاث لهجات عربية منفصلة</h4><p>عربي مصر/الأردن/سوريا كل لهجة بملف ترجمة مستقل، إضافة لإنجليزي وتركي وفرنسي وفارسي وغيرها، مع دعم RTL كامل بثيم عربي منفصل.</p><p class="why"><b>ليش مهم:</b> جاهزية حقيقية للتوسع الإقليمي، مش ترجمة سطحية.</p></div>
</div>
<h4 class="group">ميزات فريدة تستحق الذكر</h4>
<div class="grid">
<div class="card"><h4>Mishwar VIP</h4><p>الراكب يختار سائقًا محددًا بالاسم والصورة والتقييم، ويحجز له موعدًا مستقبليًا.</p><p class="why"><b>ليش مهم:</b> منتج مختلف تمامًا عن الطلب الفوري المعتاد، هامش ربح أعلى.</p></div>
<div class="card"><h4>مناطق جامعية محددة (مصر)</h4><p>حدود جغرافية دقيقة مرسومة يدويًا لجامعات مثل AUC وGUC وجامعة القاهرة، تُستخدم في منطق السعر أو التسعير الآمن.</p><p class="why"><b>ليش مهم:</b> استهداف دقيق لأكبر شريحة ركاب شبابية في مصر.</p></div>
<div class="card"><h4>خرائط دون اتصال</h4><p>تحميل مسبق لبلاطات الخريطة ضمن نصف قطر معيّن، للمناطق ضعيفة الاتصال.</p><p class="why"><b>ليش مهم:</b> استمرارية الخدمة في ظروف شبكة غير مستقرة، شائعة بالمنطقة.</p></div>
<div class="card"><h4>كشف نوعية الجهاز (Device Tier)</h4><p>تصنيف الهاتف تلقائيًا (ضعيف/متوسط/قوي) لتخفيف الرسوم المتحركة والخريطة على الأجهزة الرخيصة.</p><p class="why"><b>ليش مهم:</b> غالبية المستخدمين بالمنطقة على أجهزة اقتصادية — هذا يقلل الأعطال وتقييمات المتجر السلبية.</p></div>
</div>
</section>
<!-- 02 DRIVER -->
<section id="driver">
<div class="chapter-head">
<span class="chapter-num">02</span>
<div>
<h2>تطبيق السائق</h2>
<p class="thesis">أكبر تطبيق بالمنظومة (275 ملف) — لأنه فعليًا محرك تشغيل الأسطول: أمان مضاد للاحتيال، نظام تدرّج ومكافآت حقيقي بخصومات عمولة فعلية، وميزة "أرباحك أعلى من التطبيقات الثانية" التي كانت مطلوبة سابقًا واتضح أنها مبنية وتعمل فعليًا الآن.</p>
</div>
</div>
<div class="alert alert-good">
<span class="tag">✅ نقطة تصحيح مهمة</span>
<p>كان في طلب سابق لإضافة ميزة تعرض للسائق "كم بتربح أكثر بهذه الرحلة مقارنة بتطبيقات ثانية" لتشجيعه على القبول. الفحص الفعلي للكود أكّد إنها <b>موجودة ومفعّلة حاليًا</b>: <code>driver_earnings_badge.dart</code> يعرض شارة خضراء "أرباحك أعلى بـ X" على شاشة قبول الطلب، مبنية على حقل <code>driver_earnings_extra</code> يرسله الخادم مع كل عرض رحلة.</p>
</div>
<h4 class="group">دورة حياة الرحلة</h4>
<div class="grid">
<div class="card"><h4>حد أقصى للقيادة المتواصلة (12 ساعة)</h4><p>تتبع محلي لمجموع ساعات القيادة، ويجبر السائق على وضع "غير متاح" لمدة 6 ساعات راحة بعد 12 ساعة متواصلة.</p><p class="why"><b>ليش مهم:</b> حماية من الإرهاق وحوادث الطريق، وتقليل المسؤولية القانونية على الشركة.</p></div>
<div class="card"><h4>حظر بعد 3 إلغاءات</h4><p>عدّاد تنازلي يقفل السائق عن استقبال طلبات جديدة بعد 3 إلغاءات متتالية.</p><p class="why"><b>ليش مهم:</b> يحمي موثوقية السوق من سائقين يلغون بشكل متكرر.</p></div>
<div class="card"><h4>تحقق من صحة المسافة قبل إنهاء الرحلة</h4><p>يقارن الإزاحة الفعلية عبر GPS بالمسافة المتوقعة؛ يمنع إنهاء الرحلة إذا لم يتحرك السائق فعليًا بالقدر الكافي.</p><p class="why"><b>ليش مهم:</b> يمنع تزوير إتمام الرحلة دون قيادة فعلية — حماية مباشرة من احتيال العمولة.</p></div>
<div class="card"><h4>ملاحة داخل السيارة (Android Auto / CarPlay)</h4><p>جسر مخصص يرسل بيانات الملاحة (الموقع، الاتجاه، التعليمات) لشاشة السيارة مباشرة.</p><p class="why"><b>ليش مهم:</b> تجربة قيادة أكثر أمانًا واحترافية، مكافئة لتجربة أوبر/كريم.</p></div>
</div>
<h4 class="group">الأرباح والمدفوعات</h4>
<div class="grid">
<div class="card"><h4>نظام تدرّج حقيقي بخصم عمولة فعلي</h4><p>4 مستويات: برونزي، فضي (خصم 1% عمولة)، ذهبي (خصم 2%)، ماسي (خصم 5% + أولوية دعم ومطابقة).</p><p class="why"><b>ليش مهم:</b> ولاء حقيقي بمكافأة مالية ملموسة، مش نقاط رمزية فقط.</p></div>
<div class="card"><h4>سلسلة رحلات متتالية بدون إلغاء</h4><p>5 رحلات متتالية مكتملة تفتح عمولة 0% لبقية اليوم — أي إلغاء يصفّر السلسلة.</p><p class="why"><b>ليش مهم:</b> يحفّز الالتزام والانضباط في نفس الوقت الذي يزيد فيه رضا السائق.</p></div>
<div class="card"><h4>خارطة طلب تنبؤية (Predictive Demand)</h4><p>طبقة خريطة تُظهر أين سيرتفع الطلب خلال الساعة القادمة، مبنية من بيانات الرحلات التاريخية الفعلية.</p><p class="why"><b>ليش مهم:</b> يوجّه السائقين تلقائيًا للمناطق المربحة، يقلل وقت الانتظار الفارغ.</p></div>
<div class="card"><h4>سحب أرباح متعدد القنوات</h4><p>Paymob، MTN، Cliq، eCash، حساب بنكي (مصر)، وسحب عبر رسائل SMS في سوريا.</p><p class="why"><b>ليش مهم:</b> يغطي كل قناة سحب متاحة فعليًا بكل دولة.</p></div>
</div>
<h4 class="group">التوثيق والأمان ومكافحة الاحتيال</h4>
<div class="grid">
<div class="card"><h4>استخراج بيانات الوثائق بالذكاء الاصطناعي (OCR)</h4><p>Gemini يقرأ الهوية ورخصة القيادة وترخيص السيارة تلقائيًا ويستخرج البيانات المطلوبة.</p><p class="why"><b>ليش مهم:</b> يسرّع التسجيل ويقلل كلفة الإدخال اليدوي.</p></div>
<div class="card"><h4>مطابقة الوجه (Face Match)</h4><p>مقارنة صورة السيلفي الحية بصورة الهوية عبر API خارجي قبل قبول التسجيل.</p><p class="why"><b>ليش مهم:</b> يمنع انتحال هوية شخص آخر عند التسجيل.</p></div>
<div class="card"><h4>كشف "الرحلة الذاتية" (Self-Ride Fraud)</h4><p>مقارنة بصمة جهاز الراكب ببصمة جهاز السائق نفسه؛ يرفض الطلب تلقائيًا إذا تطابقتا.</p><p class="why"><b>ليش مهم:</b> يمنع السائق من طلب رحلة وهمية لنفسه لتحصيل مكافآت.</p></div>
<div class="card"><h4>تقييم سلوك القيادة (Behavior Score)</h4><p>يحسب من بيانات GPS المحلية: أقصى سرعة، متوسط سرعة، عدد الفرملات المفاجئة — يُرفع للخادم بعد كل رحلة.</p><p class="why"><b>ليش مهم:</b> مؤشر سلامة فعلي يمكن استخدامه لاحقًا في تصنيف السائقين أو التأمين.</p></div>
<div class="card"><h4>مُحلّل توافق الجهاز (قيد التعديل الحالي)</h4><p>يفحص إصدار أندرويد والرام والمعالج وسرعة الكتابة الفعلية على القرص، ويكوّن نتيجة توافق من 100 — الآن يُخزَّن مؤقتًا 30 دقيقة بدل إعادة الفحص الثقيل كل مرة، وقياس المعالج صار على 3 عيّنات (median) داخل Isolate منفصل لعدم تجميد الواجهة.</p><p class="why"><b>ليش مهم:</b> إشارة ناعمة لكشف المحاكيات (Emulators) تفتقر لحساسات GPS/gyroscope حقيقية — أساس محتمل لنظام "درجة خطورة جهاز" مستقبلي، غير مرتبط بعد بمنطق الاحتيال الفعلي.</p></div>
</div>
</section>
<!-- 03 ADMIN -->
<section id="admin">
<div class="chapter-head">
<span class="chapter-num">03</span>
<div>
<h2>تطبيق الإدارة (Back-Office)</h2>
<p class="thesis">أداة تشغيل داخلية حقيقية، فيها طبقتان: لوحة قديمة (CRUD مباشر) ولوحة "V2" أحدث بتحليلات ومراقبة أعمق — دلالة على تطوير نشط ومستمر، وليس منتجًا مجمّدًا.</p>
</div>
</div>
<div class="grid">
<div class="card"><h4>مركز عمليات حي (V2)</h4><p>رحلات نشطة، سائقون متصلون، إيراد اليوم مقابل الأمس، شكاوى جديدة — يحدّث نفسه كل دقيقتين.</p><p class="why"><b>ليش مهم:</b> نبض حي للسوق تتخذ فرق العمليات قراراتها بناءً عليه لحظيًا.</p></div>
<div class="card"><h4>محرر تسعير "كازان" (Kazan)</h4><p>تحكم كامل بنسبة عمولة كل دولة، سعر الكيلومتر لكل فئة مركبة (9 فئات)، وتسعير الدقيقة حسب الوقت (عادي/ذروة/متأخر).</p><p class="why"><b>ليش مهم:</b> أهم رافعة إيراد بالمنصة بالكامل — تحكم مباشر بهامش الربح لحظيًا.</p></div>
<div class="card"><h4>مساعد تسجيل السائقين بالذكاء الاصطناعي</h4><p>يستخدم Gemini وClaude Haiku معًا لقراءة الهوية المصرية ورخصة القيادة والسجل الجنائي تلقائيًا، ويكتشف تلقائيًا تواريخ الانتهاء وعدم تطابق الأسماء.</p><p class="why"><b>ليش مهم:</b> يسرّع تسجيل السائقين هاتفيًا/ميدانيًا ويكشف تزوير أو انتهاء صلاحية الوثائق آليًا.</p></div>
<div class="card"><h4>بطاقة جودة السائق + قائمة الحظر الموحّدة</h4><p>معدل الإتمام، الإلغاءات، التقييم، الشكاوى، وسلوك القيادة في مكان واحد؛ قائمة حظر مشتركة للسائقين والركاب مع سبب الحظر وسجل تدقيق.</p><p class="why"><b>ليش مهم:</b> أداة مركزية لاتخاذ قرار إيقاف حساب بناءً على بيانات فعلية لا انطباع.</p></div>
<div class="card"><h4>مركز التسويق بالذكاء الاصطناعي</h4><p>مقارنة أسعار المنافسين، خريطة حرارية لفجوة التسعير، محاكي "ماذا-لو" لتأثير تغيير السعر على الحصة السوقية، وإطلاق حملة استرجاع عملاء بضغطة واحدة.</p><p class="why"><b>ليش مهم:</b> قرار تسعير وتسويق مبني على بيانات حقيقية بدل التخمين، مع تتبع تكلفة استخدام الذكاء الاصطناعي بالدولار.</p></div>
<div class="card"><h4>سجل تدقيق كامل لإجراءات الموظفين</h4><p>كل إجراء حساس (مثل رفع حظر عن مستخدم) يُسجَّل باسم الموظف والوقت والتفاصيل.</p><p class="why"><b>ليش مهم:</b> مساءلة ومسؤولية — ضروري لأي مراجعة قانونية أو مالية لاحقة.</p></div>
</div>
<div class="alert alert-note">
<span class="tag">ملاحظة</span>
<p>تطبيق الإدارة لا يحتوي على أي شاشة لإدارة "نبيه" كمنصة استثمار أو وحدة التأمين الصحي للسائقين (driver_assurance) — هاتان الوحدتان إما تُداران من أداة أخرى غير مكتشفة، أو غير مُفعّلتين فعليًا بعد. راجع القسم 08 لتوضيح دقيق لطبيعة "نبيه" الحقيقية.</p>
</div>
</section>
<!-- 04 SERVICE -->
<section id="service">
<div class="chapter-head">
<span class="chapter-num">04</span>
<div>
<h2>تطبيق خدمة العملاء</h2>
<p class="thesis">هذا هو التطبيق الأصغر (66 ملف) والأكثر أهمية للكشف الصريح: قاعدة البيانات الخلفية مصمَّمة لسير عمل تحقيق كامل بالشكاوى، لكن واجهة الموظف الفعلية لم تُبنَ بنفس المستوى — فجوة تشغيلية حقيقية يستحق التقرير أن يذكرها بوضوح كما طلب.</p>
</div>
</div>
<div class="grid">
<div class="card"><h4>لوحة تشغيل الموظف اليومية</h4><p>عدّادات حية: طلبات تسجيل جديدة، سائقون بانتظار الموافقة، حالات تسجيل عالقة — تعمل كطابور عمل غير رسمي.</p><p class="why"><b>ليش مهم:</b> يمنح موظف الدعم صورة سريعة عن أولوياته اليومية.</p></div>
<div class="card"><h4>أداة البحث عن رحلة</h4><p>بحث برقم الهاتف أو رقم الرحلة لعرض الحالة، السائق، السعر — مفيدة أثناء مكالمة دعم مباشرة.</p><p class="why"><b>ليش مهم:</b> تحديد موقع الرحلة المتنازع عليها دون الحاجة لصلاحية وصول لقاعدة البيانات.</p></div>
<div class="card"><h4>إجراءات حساب السائق</h4><p>رفض، تفعيل، تعديل بيانات، تسجيل سيارة جديدة — كلها متاحة للموظف مباشرة من التطبيق.</p><p class="why"><b>ليش مهم:</b> تسريع دورة تفعيل السائقين الجدد ميدانيًا.</p></div>
<div class="card"><h4>تواصل جاهز عبر واتساب/مكالمة</h4><p>قوالب رسائل عربية جاهزة (تفعيل، وثائق ناقصة، ترحيب) تُفتح مباشرة بضغطة زر.</p><p class="why"><b>ليش مهم:</b> تواصل سريع بدون نظام CRM مكلف.</p></div>
</div>
<div class="alert alert-warn">
<span class="tag">فجوة تشغيلية</span>
<p>شاشة "عرض الشكوى" داخل تطبيق خدمة العملاء فعليًا فارغة (stub) رغم أن قاعدة البيانات الخلفية جاهزة لسير عمل تحقيق كامل بطرفين (تقرير الراكب، تقرير السائق، الحل، تحديد المسؤولية). النتيجة: لا توجد أداة داخل هذا التطبيق لعرض أو حل شكوى فردية فعليًا اليوم.</p>
</div>
<div class="alert alert-warn">
<span class="tag">فجوة تشغيلية</span>
<p>لا توجد أي أداة استرجاع مبلغ أو تعويض (Refund) في كامل التطبيق أو الباك اند المرتبط به. أي تعويض لراكب أو سائق بعد حل شكوى يجب أن يتم يدويًا خارج هذا النظام — ما يُبطئ الحل ويزيد مخاطر عدم التوثيق.</p>
</div>
<div class="alert alert-warn">
<span class="tag">فجوة تشغيلية</span>
<p>لا يوجد تتبّع لمهلة زمنية (SLA) ولا تصعيد (Escalation) لأي شكوى — الحالات الحرجة والعادية تُعامل بنفس الطريقة دون أي مؤشر أولوية.</p>
</div>
</section>
<!-- 05 BACKEND -->
<section id="backend">
<div class="chapter-head">
<span class="chapter-num">05</span>
<div>
<h2>البنية الخلفية ومحرك التسعير</h2>
<p class="thesis">هذا هو قلب المنصة فعليًا. كل طلب API يمر إجباريًا عبر طبقة أمان مركزية واحدة قبل أي منطق عمل — تصميم ناضج نسبيًا لشركة بهذا الحجم، مع محرك تسعير يتخذ قرارات تجارية حقيقية بشكل آلي بالكامل.</p>
</div>
</div>
<h4 class="group">طبقة الأمان المركزية</h4>
<div class="grid">
<div class="card"><h4>JWT مع ربط بصمة الجهاز</h4><p>كل رمز دخول مربوط بتجزئة بصمة جهاز محددة؛ استخدام نفس الرمز من جهاز آخر يُرفض تلقائيًا.</p><p class="why"><b>ليش مهم:</b> يمنع سرقة رمز الدخول واستخدامه على جهاز آخر.</p></div>
<div class="card"><h4>تحديد معدل الطلبات (Rate Limiting) مخصص لكل نوع طلب</h4><p>حدود مختلفة لتسجيل الدخول، OTP، التسجيل، الشكاوى (محدودة أكثر لأن كل شكوى تُفعّل استدعاء Gemini + واتساب).</p><p class="why"><b>ليش مهم:</b> حماية من هجمات القوة الغاشمة وتقليل كلفة استدعاء الذكاء الاصطناعي غير الضرورية.</p></div>
<div class="card"><h4>تشفير AES-256 لكل البيانات الحساسة</h4><p>الأسماء، الهواتف، أرقام الهوية، أرقام لوحات السيارات — كلها مشفّرة داخل قاعدة البيانات.</p><p class="why"><b>ليش مهم:</b> حماية بيانات شخصية حساسة حتى لو تسربت قاعدة البيانات نفسها.</p></div>
<div class="card"><h4>OTP عبر بوابة موحّدة متعددة الدول</h4><p>يكتشف الدولة تلقائيًا من رمز الهاتف ويختار مزود الإرسال المناسب (واتساب/SMS محلي) لكل من مصر والأردن وسوريا.</p><p class="why"><b>ليش مهم:</b> تسجيل دخول سلس بالهاتف فقط، مناسب لأسواق بدون اعتماد قوي على البريد الإلكتروني.</p></div>
</div>
<h4 class="group">محرك الرحلات (الأكبر: 202 ملف)</h4>
<div class="grid">
<div class="card"><h4>رمز سعر موقّع ومؤقت (Price Token)</h4><p>السعر واتجاه الرحلة يُختمان برمز مشفّر صالح 7 دقائق فقط، فلا يقدر أحد يتلاعب بالسعر بين شاشة العرض وشاشة التأكيد.</p><p class="why"><b>ليش مهم:</b> إغلاق ثغرة احتيال كلاسيكية بتسعير النقل التشاركي.</p></div>
<div class="card"><h4>مطابقة "الوجهة" (Destination Matching)</h4><p>سائق سجّل وجهة شخصية (متجه للبيت مثلًا) يحصل على أولوية لأي طلب قريب من تلك الوجهة، والراكب يحصل على خصم 14%.</p><p class="why"><b>ليش مهم:</b> يحوّل رحلة "طريقه أصلًا" لصفقة مربحة للطرفين.</p></div>
<div class="card"><h4>تسوية أجرة آمنة عند إنهاء الرحلة</h4><p>السعر النهائي يُعاد حسابه بالكامل من الخادم بناءً على المسافة والزمن الفعليين، بحدود قصوى (لا يتجاوز 1.6× السعر المعروض، والمسافة لا تتجاوز 1.5× المخطط) قبل تحويل المبلغ فعليًا لمحفظة السائق.</p><p class="why"><b>ليش مهم:</b> يمنع تزوير GPS لتضخيم الأجرة، ويضمن معاملة مالية آمنة بين قاعدتي بيانات منفصلتين (الرحلة والمحفظة).</p></div>
<div class="card"><h4>تسعير ديناميكي متكامل</h4><p>تسعير ذروة حسب نسبة الطلب للعرض بكل قطعة جغرافية، مطابقة تلقائية لتسعير ذروة المنافسين، مضاعفات موسمية (رمضان/الأعياد)، وخصم مسافات طويلة.</p><p class="why"><b>ليش مهم:</b> تسعير يتفاعل مع السوق لحظيًا بدل جدول أسعار ثابت.</p></div>
<div class="card"><h4>حجز مسبق باختيار السائق (Mishwari)</h4><p>حد أقصى رحلتين لكل سائق كل 6 ساعات، ورحلة نشطة واحدة لكل راكب يوميًا — مصمم كمنتج مختلف عن الطلب الفوري.</p><p class="why"><b>ليش مهم:</b> يمنع استغلال ميزة الحجز المسبق كثغرة لتجاوز نظام الطلب العادي.</p></div>
<div class="card"><h4>نظام إحالة موحّد</h4><p>رمز إحالة واحد يعمل بين السائقين والركاب، مع مكافأة مشروطة بعدد رحلات فعلية.</p><p class="why"><b>ليش مهم:</b> نمو مضمون بربط المكافأة بسلوك فعلي لا مجرد تسجيل حساب.</p></div>
</div>
<div class="alert alert-good">
<span class="tag">وثيقة داخلية موجودة فعلاً</span>
<p>يوجد تقرير تدقيق أمني داخلي حقيقي بالباك اند (بأسلوب اختبار اختراق) يُصنّف النتائج من "حرج" إلى "منخفض" — نقاط قوة موثقة (JWT متعدد الطبقات، لا ثغرات SQL Injection، تشفير AES-256) مقابل نقاط ما زالت مفتوحة (تحديد معدل معطّل بأماكن، ملفات اختبار منسية بالإنتاج، تشفير CBC قديم بـ IV ثابت في بعض الأماكن). هذا مستوى نضج نادر لشركة بهذا الحجم — لكنه يعني أيضًا وجود بنود إصلاح لم تُغلق بعد.</p>
</div>
</section>
<!-- 06 MAPS -->
<section id="maps">
<div class="chapter-head">
<span class="chapter-num">06</span>
<div>
<h2>نظام الموقع الجغرافي والخرائط</h2>
<p class="thesis">القرار الأهم هنا: Siro لا تعتمد على Google Maps لأي جزء من التتبع الحي أو مطابقة السائق القريب — بنت خادمي WebSocket خاصين بها وفهرسة جغرافية عبر Redis، والنتيجة توفير تكلفة ضخم مع تحكم كامل بمنطق العمل الخاص بها.</p>
</div>
</div>
<div class="grid">
<div class="card"><h4>تتبع حي عبر Socket مخصص</h4><p>موقع السائق يُرسل كل 1-3 ثوانٍ عبر WebSocket، يُفلتَر (لا يُرسل إلا عند تحرك حقيقي 10م أو تغيّر سرعة/اتجاه) ثم يُجمَّع ويُكتب لـ Redis كل نصف ثانية دفعة واحدة، وأخيرًا يُدفَع للراكب مباشرة عبر خادم Socket ثانٍ.</p><p class="why"><b>ليش مهم:</b> تتبع لحظي حقيقي بأقل تكلفة خادم ممكنة، دون المرور بقاعدة بيانات في كل خطوة.</p></div>
<div class="card"><h4>مطابقة "أقرب سائق" عبر Redis الجغرافي</h4><p>بحث نصف قطر جغرافي (GEORADIUS) على آلاف السائقين المتصلين لحظيًا — بديل خاص عن أي SDK خرائط جاهز لأن لا أحد يوفر "أقرب سائق متاح مرتب بالتقييم" كخدمة جاهزة.</p><p class="why"><b>ليش مهم:</b> سرعة مطابقة فائقة حتى مع عدد ضخم من السائقين.</p></div>
<div class="card"><h4>نقاط بحث موقع مخصصة لكل فئة ركوب</h4><p>لكل من Balash وComfort وElectric وPinkBike والسائقات والتوصيل — استعلام SQL مختلف تمامًا (مثلاً Balash يختار أقدم السيارات فعليًا، وElectric يفلتر على نوع الوقود "كهربائي").</p><p class="why"><b>ليش مهم:</b> منطق عمل مخصص بالكامل لكل منتج، مستحيل تنفيذه بخدمة خرائط عامة جاهزة.</p></div>
<div class="card"><h4>تسجيل ساعات عمل السائق الفعلية</h4><p>يُحسب من فروقات نقاط GPS الفعلية (مع تجاهل فجوات أكثر من 5 دقائق كـ"توقف حقيقي")، ويُبنى منه ملخص يومي لساعات العمل.</p><p class="why"><b>ليش مهم:</b> بيانات دقيقة لحساب أرباح/حوافز السائق بدل الاعتماد على تقدير تقريبي.</p></div>
<div class="card"><h4>خرائط حرارية للطلب (Heatmaps)</h4><p>لوحتان تفاعليتان: خريطة حرارية لتاريخ الطلبات، وشاشة تتبع أسطول حي بأيقونات سيارات تدور حسب اتجاه الحركة.</p><p class="why"><b>ليش مهم:</b> "رؤية إلهية" لفريق العمليات لتخطيط تموضع السائقين وأسعار الذروة دون شراء أداة BI مكلفة.</p></div>
<div class="card"><h4>تجزئة جغرافية للتوسع (Geo-Sharding)</h4><p>جدول يربط كل نطاق إحداثيات (مدينة/منطقة) بخادم خلفي مختلف.</p><p class="why"><b>ليش مهم:</b> يسمح بتوزيع الحمل جغرافيًا مع كل مدينة/دولة جديدة تُضاف دون إعادة هندسة كاملة.</p></div>
</div>
</section>
<!-- 07 BOTS -->
<section id="bots">
<div class="chapter-head">
<span class="chapter-num">07</span>
<div>
<h2>البوتات والذكاء الاصطناعي التسويقي</h2>
<p class="thesis">هذا الجزء الأكثر إثارة للانتباه بكامل المنصة — منظومة مغلقة: بوت يسحب أسعار المنافسين مباشرة من تطبيقاتهم ← محرك يفكّك معادلة تسعيرهم ← كرون جوبز تُعدّل سعر Siro تلقائيًا ← بوتات سوشيال ميديا تصنع "نقاشات عضوية" مزيّفة لصالح Siro. ميزة تنافسية حقيقية، لكنها تحمل مخاطر قانونية وسمعية واضحة يجب ذكرها بصراحة.</p>
</div>
</div>
<h4 class="group">قراءة أسعار المنافسين وإعادة التسعير الآلي</h4>
<div class="grid">
<div class="card"><h4>بوت أندرويد يقرأ تطبيقات المنافسين مباشرة</h4><p>بوت (Accessibility Service) يفتح فعليًا تطبيقات كريم وأوبر وياللاّ-جو وTaxiF وزاكن وTufaddal، يدخل نقطتي انطلاق ووصول، ويقرأ السعر المعروض على الشاشة رقميًا.</p><p class="why"><b>ليش مهم:</b> لا حاجة لأي API عام من المنافس — البيانات تُجلَب مباشرة من واجهتهم، وهذا صعب اكتشافه أو منعه من طرفهم.</p></div>
<div class="card"><h4>محرك فك تشفير معادلة تسعير المنافس (Node.js)</h4><p>يشتق معادلة كل منافس (سعر أساس + سعر لكل كم + سعر لكل دقيقة) بانحدار إحصائي حقيقي، ويكتشف حتى "الحد الأدنى للأجرة" الخفي.</p><p class="why"><b>ليش مهم:</b> يحوّل خوارزمية تسعير المنافس "الصندوق الأسود" لمعادلة صريحة قابلة للاستغلال.</p></div>
<div class="card"><h4>إعادة تسعير تلقائية بخصم 6.5%</h4><p>كرون جوب يقرأ أفضل تصنيف سعري للمنافس ويُحدّث سعر Siro تلقائيًا ليكون أرخص بـ 6.5% بدون تدخل بشري.</p><p class="why"><b>ليش مهم:</b> ميزة تنافسية سعرية حقيقية بالزمن الحي، مش قرار يدوي بطيء.</p></div>
<div class="card"><h4>"وضع الظل" لحماية الهامش</h4><p>طبقة حوكمة تفرّق بين انخفاض سعر مؤقت للمنافس (يُقترح له كود خصم بدل تغيير السعر الأساسي) وانخفاض دائم (يُسمح بتغيير حقيقي محدود بسقف 3% وفترة تهدئة 3 أيام).</p><p class="why"><b>ليش مهم:</b> يمنع المحرك الآلي من ملاحقة عرض ترويجي مؤقت للمنافس وحرق الهامش بلا داعٍ.</p></div>
</div>
<h4 class="group">بوتات التواصل الاجتماعي</h4>
<div class="grid">
<div class="card"><h4>شبكة حسابات وهمية بتدوير IP</h4><p>حسابات فيسبوك/إنستغرام/تيليجرام تُدار آليًا، كل جهاز يُربط بحساب وبروكسي مختلف، مع تدوير الحسابات لتفادي الحظر.</p><p class="why"><b>ليش مهم تجاريًا:</b> نمو "عضوي" شبه مجاني عبر منصات لا تكلّف شيئًا مقارنة بالإعلانات المدفوعة.</p></div>
<div class="card"><h4>تعليقات مولّدة بالذكاء الاصطناعي بلهجة كل بلد</h4><p>Gemini يكتب تعليقات بلهجة سورية/مصرية/أردنية مميزة حسب المنشور، بنيّات مختلفة: ترويج مباشر، ترويج خفي، رد على سؤال، أو "نقاش" مفتعل.</p><p class="why"><b>ليش مهم تجاريًا:</b> محتوى مقنع محليًا بدل رسائل تسويقية عامة.</p></div>
<div class="card"><h4>"دراما الحوار" المفتعلة</h4><p>بعد أي تعليق ترويجي، يُجدوَل حساب وهمي ثانٍ ليعلّق بشك ("هل الأسعار حقيقية؟")، ثم حساب ثالث يرد بدعم Siro — بتأخير عشوائي يحاكي التفاعل البشري.</p><p class="why"><b>ليش مهم تجاريًا:</b> يصنع انطباع نقاش حقيقي بين مستخدمين حقيقيين تحت منشورات فعلية.</p></div>
</div>
<div class="alert alert-critical">
<span class="tag">⚠️ خطر قانوني وسمعي حقيقي</span>
<p>سحب أسعار تطبيقات المنافسين آليًا عبر محاكاة واجهتهم يخالف على الأغلب شروط استخدام تلك التطبيقات ويعرّض الشركة لإجراء قانوني إذا اكتُشف. أما "دراما الحوار" المفتعلة والحسابات الوهمية المنسّقة، فهذا سلوك يُصنَّف كـ"تلاعب منسّق غير أصيل" (Coordinated Inauthentic Behavior) ويخالف صراحة سياسات فيسبوك/إنستغرام/تيليجرام — يحمل خطر حظر جماعي للحسابات وضررًا سمعيًا حقيقيًا إذا انكشف، بصرف النظر عن فعاليته التسويقية الحالية. هذه نقطة يجب أن يقرر فيها صاحب القرار وعيًا كاملًا بالمخاطرة، لا فقط بالعائد.</p>
</div>
</section>
<!-- 08 NABEH -->
<section id="nabeh">
<div class="chapter-head">
<span class="chapter-num">08</span>
<div>
<h2>نبيه، المحفظة، ومنصات الاستثمار</h2>
<p class="thesis">تصحيح مهم أولًا: "نبيه" ليست منصة استثمار مالي بأي شكل — لا فوائد ولا حصص ولا فترات قفل أموال في الكود. هي مزوّد خدمة خارجي للأتمتة عبر واتساب. أما الاستثمار الحقيقي، فموجود في وثائق المستثمرين ونموذج تمويل مبدئي حقيقي — مع نقطة تتطلب انتباهك الفوري.</p>
</div>
</div>
<div class="twocol">
<div class="grid">
<div class="card"><h4>ما هي "نبيه" فعليًا؟</h4><p>مزوّد خارجي بالذكاء الاصطناعي وواتساب يقوم بـ: تسجيل سائقين جدد عبر محادثة واتساب، توثيق حالة السائق، الإجابة عن استفسارات الأرباح، فحص الشكاوى بالذكاء الاصطناعي (Gemini يحدد المسؤولية)، والتحقق من إيصالات الدفع بصريًا.</p><p class="why"><b>ليش مهم:</b> يقلّل تكلفة التشغيل البشري لخدمة العملاء عبر أتمتة كاملة بالمحادثة، لا أنه منتج مالي للمستخدم النهائي.</p></div>
<div class="card"><h4>محفظة Siro (البنية التحتية المالية)</h4><p>خدمة منفصلة (268 ملف) تربط: MTN موني، Syriatel Cash، ShamCash، Cliq، PayMob، eCash — لكل دولة قنواتها. تشمل تحويل فعلي بين محافظ السائقين برسوم تذهب لمحفظة الشركة.</p><p class="why"><b>ليش مهم:</b> بنية دفع محلية حقيقية توفّرها Siro داخليًا بدل الاعتماد الكامل على بوابات دفع عالمية غير متوفرة بكل الأسواق.</p></div>
</div>
<div class="grid">
<div class="card"><h4>طلب تمويل مبدئي حقيقي وموثّق</h4><p>وثيقة مستثمرين داخلية تطلب 200,000 دولار مقابل 22% من الشركة (تقييم ضمني ~909 ألف دولار)، مع أربع طبقات إيراد مخطط لها: عمولة كازان، اشتراك Prime، إعلانات جغرافية داخل الخريطة، وترخيص خرائط Siro لتطبيقات أخرى كبديل أرخص من Google Maps.</p><p class="why"><b>ليش مهم:</b> رؤية واضحة لتنويع مصادر الدخل تتجاوز عمولة الرحلات فقط.</p></div>
<div class="card"><h4>عقد استثماري منفصل خاص بسوريا</h4><p>اتفاقية حصة أرباح بقيمة 180,000 دولار مخصصة لتشغيل سوريا فقط (25%/25%/50%)، منفصلة عن جولة التمويل العامة أعلاه — الرقمان غير متطابقين ويحتاجان توفيقًا واضحًا قبل استخدام أي منهما رسميًا.</p><p class="why"><b>ليش مهم:</b> وجود سرديتين تمويليتين مختلفتين قد يربك أي مستثمر جديد يراجع الوثائق.</p></div>
</div>
</div>
<div class="alert alert-critical">
<span class="tag">⚠️ تسريب بيانات شخصية حساسة — يحتاج إجراء فوري</span>
<p>ملف <code>siromove.com/contract.html</code> — وهو على النطاق العام للموقع التسويقي — يحتوي على نص العقد الاستثماري الخاص بسوريا كاملًا، بما فيه <b>أرقام هوية وطنية/جواز سفر حقيقية</b> لشخصين مؤسسين ومستثمر واحد. أي زائر للرابط المباشر يقدر يصل لهذه البيانات دون أي حماية. هذا نُقل لك فور اكتشافه أثناء هذا البحث، ويستحق معالجة سريعة (إزالة الملف من الوصول العام أو حمايته بمصادقة) بغض النظر عن أي شيء آخر بهذا التقرير.</p>
</div>
</section>
<!-- 09 LEGACY -->
<section id="legacy">
<div class="chapter-head">
<span class="chapter-num">09</span>
<div>
<h2>الإرث الرقمي: القيمة الفكرية والمادية</h2>
<p class="thesis">السؤال الحقيقي المطروح: لو حل نموذج ذكاء اصطناعي مثلي محل الفريق، هل كان يقدر يبني هذا من الصفر؟ الجواب الصادق: جزء كبير من الكود نعم، لكن الجزء الأكثر قيمة فعليًا — لأ، وهذا بالضبط ما يحدد قيمة المشروع الحقيقية.</p>
</div>
</div>
<div class="verdict">
<h3>الحكم المباشر</h3>
<p>نموذج ذكاء اصطناعي متقدم يقدر يعيد إنتاج <b>الشكل البرمجي</b> لمعظم هذا النظام — واجهات CRUD، شاشات فليتر، تكامل بوابات دفع قياسية، حتى استدعاءات OCR بالذكاء الاصطناعي — بسرعة كبيرة نسبيًا (أشهر بدل سنوات) لو تم تزويده بنفس المتطلبات بالضبط. لكن أغلى ما في هذا المشروع مش الكود نفسه — هو المعرفة التي لا يمكن أن تُستنبط من مجرد "طلب/Prompt"، لأنها جاءت من تشغيل حقيقي بالسوق لفترة، ومخاطرة مالية حقيقية، وعلاقات فعلية مع جهات دفع وحكومات محلية.</p>
<div class="split">
<div class="side can">
<h4>✅ ما يقدر نموذج ذكاء اصطناعي ينتجه بسرعة</h4>
<ul>
<li>كل شاشات الفليتر القياسية (تسجيل، ملف شخصي، محفظة، تقييم).</li>
<li>تكامل بوابات دفع معروفة (PayMob، Stripe) وربط APIs جاهزة (Gemini، Firebase).</li>
<li>منطق CRUD الإداري: قوائم، فلاتر، لوحات تحكم.</li>
<li>هيكلة أمان قياسية (JWT، تشفير، Rate Limiting) — نمط معروف يمكن تطبيقه بسرعة.</li>
<li>واجهات الخرائط والتتبع نفسها (Socket + Redis Geo) كتصميم هندسي — النمط معروف بالصناعة.</li>
</ul>
</div>
<div class="side cannot">
<h4>❌ ما لا يمكن لأي نموذج أن "يخترعه" بمجرد طلب</h4>
<ul>
<li><b>معادلات التسعير الفعلية للمنافسين</b> — نتجت عن أشهر من سحب بيانات حقيقية من السوق، لا حسابًا نظريًا.</li>
<li><b>القيم المضبوطة تشغيليًا</b> (حد 12 ساعة قيادة، 3 إلغاءات، مهلة 90 ثانية للمفاوض الذكي) — هذه أرقام نتجت عن حوادث وتجربة فعلية موثقة بسجل الأخطاء، لا افتراضًا نظريًا.</li>
<li><b>العلاقات التنظيمية والمالية المحلية</b> — ترخيص النقل بسوريا (قانون 16 لعام 2021)، اتفاقيات MTN وSyriatel وShamCash وCliq، وحتى حل توزيع تطبيق (APK) خارج متجر جوجل بسبب العقوبات — هذه علاقات بشرية وقانونية حقيقية لا كود.</li>
<li><b>القاعدة الفعلية من السائقين والركاب</b> — التجربة التجريبية وثّقت 1,447 سائقًا و2,891 راكبًا خلال 45 يومًا فقط بميزانية تسويق محدودة — هذا أصل حقيقي (Network Effect) لا يُشترى بطلب ذكاء اصطناعي.</li>
<li><b>قرار المخاطرة الأخلاقية/القانونية</b> بتشغيل بوتات سحب الأسعار والتسويق الوهمي — قرار عمل وتحمّل مخاطرة، وليس قرارًا تقنيًا بالأساس.</li>
</ul>
</div>
</div>
</div>
<div class="grid">
<div class="card"><h4>القيمة الفكرية</h4><p>الأصل الفكري الحقيقي هو تراكم "الضبط" (Tuning) عبر وقت فعلي: كل حد رقمي في هذا الكود (نسب الخصم، مهلة إعادة المحاولة، سقوف التسعير) هو نتاج تجربة وخطأ حقيقيين موثّقين بسجلات الأخطاء وملاحظات المطورين — وهذا نوع معرفة لا يظهر إلا بالتشغيل الفعلي، ليس بكتابة كود جديد.</p></div>
<div class="card"><h4>القيمة المادية</h4><p>الوثائق الداخلية نفسها تقدّر تقييمًا ضمنيًا يقارب 909 ألف دولار عند جولة تمويل 200 ألف دولار مقابل 22%. هذا رقم "قيمة الأعمال الجارية" (Going Concern) يشمل المستخدمين والبيانات والعلاقات — وهو مختلف تمامًا عن "كلفة إعادة بناء الكود من الصفر" فقط، والتي تكون أقل بكثير مهما كانت دقيقة الكود.</p></div>
<div class="card"><h4>الخلاصة الصريحة</h4><p>هذا المشروع تحديدًا هو مثال حيّ على الفرق بين "الكود" و"الشركة". الذكاء الاصطناعي (بما فيه هذا التقرير نفسه) يسرّع كتابة الكود بشكل حقيقي، لكنه لا يستطيع أن يحل محل الوقت الفعلي والمخاطرة الفعلية والعلاقات الفعلية التي بُني عليها هذا المشروع — وهذه، لا الكود، هي القيمة الحقيقية غير القابلة للنسخ.</p></div>
</div>
</section>
<!-- 10 RISKS -->
<section id="risks">
<div class="chapter-head">
<span class="chapter-num">10</span>
<div>
<h2>المخاطر والفجوات المجمّعة</h2>
<p class="thesis">تجميع لكل نقطة تحتاج قرارًا أو إجراءً، مرتّبة من الأشد إلحاحًا للأقل.</p>
</div>
</div>
<div class="alert alert-critical">
<span class="tag">حرج — يحتاج إجراء الآن</span>
<p>أرقام هوية حقيقية لمؤسسين ومستثمر منشورة بدون حماية على <code>siromove.com/contract.html</code> — راجع القسم 08.</p>
</div>
<div class="alert alert-warn">
<span class="tag">قانوني وسمعي</span>
<p>بوتات سحب أسعار المنافسين والتلاعب المنسّق بالسوشيال ميديا (دراما الحوار المفتعلة) — راجع القسم 07 — مخاطرة حظر ومساءلة قانونية محتملة.</p>
</div>
<div class="alert alert-warn">
<span class="tag">حوكمة تمويل</span>
<p>سرديتان تمويليتان متضاربتان (180 ألف دولار حصة أرباح سوريا فقط مقابل 200 ألف دولار/22% على مستوى الشركة كلها) تحتاجان توحيدًا قبل عرضهما على أي مستثمر جديد.</p>
</div>
<div class="alert alert-warn">
<span class="tag">تشغيلي</span>
<p>تطبيق خدمة العملاء يفتقر لأداة عرض/حل شكوى حقيقية، ولا يوجد أداة استرجاع مبلغ، ولا تتبع مهلة زمنية — راجع القسم 04.</p>
</div>
<div class="alert alert-note">
<span class="tag">أمني (موثّق داخليًا مسبقًا)</span>
<p>تقرير التدقيق الأمني الداخلي يذكر بنودًا لم تُغلق بعد: تحديد معدل معطّل بأماكن التسجيل، ملفات اختبار/تشخيص منسية بالإنتاج، وتشفير قديم بنمط IV ثابت في بعض المسارات.</p>
</div>
</section>
</main>
</div>
<div style="padding:0 6vw 56px; max-width:1400px; margin:0 auto;">
<footer class="endnote">
<span>تقرير أُعدّ بفحص مباشر لكود المشروع — لا تخمين ولا محتوى نموذجي عام.</span>
<span>2026-07-09 · Siro Digital Legacy Report</span>
</footer>
</div>
</div>
+534
View File
@@ -0,0 +1,534 @@
<meta charset="utf-8">
<title>سيرو — التقرير الشامل للمنظومة</title>
<style>
:root{
--bg:#F6F7F5; --surface:#FFFFFF; --surface2:#EEF1EE;
--ink:#1A241F; --muted:#5B6862; --faint:#8B968F;
--line:#E1E5E1; --line2:#D2D8D3;
--brand:#0E7A5F; --brand-ink:#0A5945; --brand-soft:#E4F0EB;
--amber:#9A6B12; --amber-soft:#F6EDDA;
--red:#B3362B; --red-soft:#F7E5E2;
--good:#2E7D4F; --good-soft:#E4F1E8;
--sans:"SF Arabic","Segoe UI",system-ui,-apple-system,"Noto Sans Arabic",Tahoma,sans-serif;
--mono:ui-monospace,"SF Mono",Consolas,monospace;
}
@media (prefers-color-scheme: dark){
:root{
--bg:#0F1512; --surface:#161E19; --surface2:#1C2620;
--ink:#E8EDEA; --muted:#9BA8A1; --faint:#6E7B74;
--line:#26302B; --line2:#32403A;
--brand:#3FBF97; --brand-ink:#8FE0C5; --brand-soft:#15342A;
--amber:#E0AE55; --amber-soft:#33290F;
--red:#E07065; --red-soft:#361A16;
--good:#57C287; --good-soft:#14301F;
}
}
:root[data-theme="dark"]{
--bg:#0F1512; --surface:#161E19; --surface2:#1C2620;
--ink:#E8EDEA; --muted:#9BA8A1; --faint:#6E7B74;
--line:#26302B; --line2:#32403A;
--brand:#3FBF97; --brand-ink:#8FE0C5; --brand-soft:#15342A;
--amber:#E0AE55; --amber-soft:#33290F;
--red:#E07065; --red-soft:#361A16;
--good:#57C287; --good-soft:#14301F;
}
:root[data-theme="light"]{
--bg:#F6F7F5; --surface:#FFFFFF; --surface2:#EEF1EE;
--ink:#1A241F; --muted:#5B6862; --faint:#8B968F;
--line:#E1E5E1; --line2:#D2D8D3;
--brand:#0E7A5F; --brand-ink:#0A5945; --brand-soft:#E4F0EB;
--amber:#9A6B12; --amber-soft:#F6EDDA;
--red:#B3362B; --red-soft:#F7E5E2;
--good:#2E7D4F; --good-soft:#E4F1E8;
}
html{ scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }
.page{
background:var(--bg); color:var(--ink);
font-family:var(--sans); font-size:16px; line-height:1.85;
min-height:100%;
}
.page *{ box-sizing:border-box; }
.wrap{ max-width:840px; margin:0 auto; padding:0 22px; }
.page h1,.page h2,.page h3,.page h4{ margin:0; color:var(--ink); text-wrap:balance; line-height:1.35; }
.page p{ margin:0; }
.page a{ color:var(--brand); }
.page a:focus-visible, .page summary:focus-visible{ outline:2px solid var(--brand); outline-offset:2px; border-radius:4px; }
code{
direction:ltr; unicode-bidi:isolate; font-family:var(--mono); font-size:.82em;
background:var(--surface2); border:1px solid var(--line); border-radius:5px; padding:.08em .4em;
}
.num{ font-variant-numeric:tabular-nums; }
/* ===== Hero ===== */
.hero{ padding:64px 0 36px; border-bottom:1px solid var(--line); }
.hero .kicker{
display:inline-block; font-size:.78rem; font-weight:700; letter-spacing:.04em;
color:var(--brand-ink); background:var(--brand-soft); border-radius:99px; padding:4px 14px;
margin-bottom:18px;
}
.hero h1{ font-size:clamp(1.7rem, 4.5vw, 2.5rem); font-weight:800; }
.hero .lede{ margin-top:14px; font-size:1.05rem; color:var(--muted); max-width:60ch; }
.hero .meta{ margin-top:16px; font-size:.8rem; color:var(--faint); }
.stats{ display:grid; grid-template-columns:repeat(6,1fr); gap:0; margin-top:30px;
border:1px solid var(--line); border-radius:14px; background:var(--surface); overflow:hidden; }
.stat{ padding:14px 10px; text-align:center; border-inline-start:1px solid var(--line); }
.stat:first-child{ border-inline-start:none; }
.stat b{ display:block; font-size:1.35rem; font-weight:800; color:var(--brand-ink); font-variant-numeric:tabular-nums; }
.stat span{ font-size:.72rem; color:var(--muted); line-height:1.4; display:block; margin-top:2px; }
@media (max-width:700px){
.stats{ grid-template-columns:repeat(3,1fr); }
.stat:nth-child(4){ border-inline-start:none; }
.stat:nth-child(-n+3){ border-bottom:1px solid var(--line); }
}
/* ===== Sticky TOC ===== */
.tocbar{
position:sticky; top:0; z-index:10; background:var(--bg);
border-bottom:1px solid var(--line); padding:10px 0;
}
.tocbar .row{ display:flex; gap:8px; overflow-x:auto; scrollbar-width:none; padding:2px; }
.tocbar .row::-webkit-scrollbar{ display:none; }
.tocbar a{
flex:none; text-decoration:none; font-size:.8rem; font-weight:700; color:var(--muted);
border:1px solid var(--line); background:var(--surface); border-radius:99px; padding:5px 13px;
white-space:nowrap;
}
.tocbar a b{ color:var(--brand); font-weight:800; margin-inline-end:4px; font-variant-numeric:tabular-nums; }
.tocbar a:hover{ border-color:var(--brand); color:var(--ink); }
/* ===== Sections ===== */
section{ padding:46px 0 8px; }
.sec-head{ margin-bottom:20px; }
.sec-head .eyebrow{
font-size:.75rem; font-weight:800; color:var(--brand); letter-spacing:.08em;
font-variant-numeric:tabular-nums;
}
.sec-head h2{ font-size:1.45rem; font-weight:800; margin-top:4px; }
.sec-head .thesis{ margin-top:8px; color:var(--muted); font-size:.95rem; max-width:66ch; }
.subhead{
font-size:.82rem; font-weight:800; color:var(--faint); letter-spacing:.03em;
margin:26px 0 10px; display:flex; align-items:center; gap:10px;
}
.subhead::after{ content:""; flex:1; height:1px; background:var(--line); }
/* compact feature rows */
.rows{ border:1px solid var(--line); border-radius:14px; background:var(--surface); overflow:hidden; }
.row-item{ padding:13px 18px; border-top:1px solid var(--line); }
.row-item:first-child{ border-top:none; }
.row-item h4{ font-size:.95rem; font-weight:800; display:inline; }
.row-item p{ display:inline; color:var(--muted); font-size:.9rem; }
.row-item h4::after{ content:" — "; color:var(--faint); font-weight:400; }
.row-item .why{ display:block; margin-top:3px; font-size:.83rem; color:var(--brand-ink); }
/* alerts */
.alert{ border-radius:12px; padding:14px 18px; margin:16px 0; font-size:.9rem; border:1px solid; }
.alert p{ color:var(--ink); }
.alert .tag{ display:inline-block; font-size:.72rem; font-weight:800; border-radius:6px; padding:1px 9px; margin-bottom:6px; }
.alert.crit{ background:var(--red-soft); border-color:color-mix(in srgb, var(--red) 35%, transparent); }
.alert.crit .tag{ background:var(--red); color:var(--bg); }
.alert.warn{ background:var(--amber-soft); border-color:color-mix(in srgb, var(--amber) 35%, transparent); }
.alert.warn .tag{ background:var(--amber); color:var(--bg); }
.alert.good{ background:var(--good-soft); border-color:color-mix(in srgb, var(--good) 35%, transparent); }
.alert.good .tag{ background:var(--good); color:var(--bg); }
/* ===== Ride flow timeline ===== */
.flow{ position:relative; padding-inline-start:26px; margin-top:8px; }
.flow::before{ content:""; position:absolute; inset-inline-start:8px; top:8px; bottom:8px; width:2px;
background:linear-gradient(var(--brand), var(--line2)); border-radius:2px; }
.step{ position:relative; padding:0 0 26px; }
.step::before{
content:""; position:absolute; inset-inline-start:-24px; top:7px; width:12px; height:12px;
border-radius:50%; background:var(--bg); border:3px solid var(--brand);
}
.step h4{ font-size:1rem; font-weight:800; }
.step h4 .t{ font-size:.72rem; font-weight:700; color:var(--brand-ink); background:var(--brand-soft);
border-radius:99px; padding:2px 10px; margin-inline-start:8px; vertical-align:2px; white-space:nowrap; }
.step p{ color:var(--muted); font-size:.9rem; margin-top:4px; max-width:62ch; }
/* ===== two-col mini grid ===== */
.duo{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
@media (max-width:640px){ .duo{ grid-template-columns:1fr; } }
.panel{ border:1px solid var(--line); border-radius:14px; background:var(--surface); padding:16px 18px; }
.panel h4{ font-size:.95rem; font-weight:800; margin-bottom:6px; }
.panel p, .panel li{ color:var(--muted); font-size:.88rem; }
.panel ul{ margin:6px 0 0; padding-inline-start:18px; display:flex; flex-direction:column; gap:5px; }
.panel.can h4{ color:var(--good); }
.panel.cannot h4{ color:var(--red); }
/* ===== tutorial modules ===== */
.mods{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
@media (max-width:640px){ .mods{ grid-template-columns:1fr; } }
.mod{ border:1px solid var(--line); border-radius:14px; background:var(--surface); padding:16px 18px; position:relative; }
.mod .shots{ position:absolute; top:14px; inset-inline-end:16px; font-size:.7rem; font-weight:800;
color:var(--brand-ink); background:var(--brand-soft); border-radius:99px; padding:2px 10px; font-variant-numeric:tabular-nums; }
.mod h4{ font-size:.95rem; font-weight:800; padding-inline-end:70px; }
.mod ol{ margin:8px 0 0; padding-inline-start:18px; color:var(--muted); font-size:.85rem; display:flex; flex-direction:column; gap:4px; }
.mod .note{ margin-top:8px; font-size:.8rem; color:var(--brand-ink); }
/* transit actors */
.actors{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin:14px 0 4px; }
@media (max-width:760px){ .actors{ grid-template-columns:1fr 1fr; } }
.actor{ border:1px solid var(--line); border-radius:12px; background:var(--surface); padding:12px 14px; text-align:center; }
.actor .ic{ font-size:1.4rem; }
.actor b{ display:block; font-size:.85rem; margin-top:4px; }
.actor span{ font-size:.74rem; color:var(--muted); display:block; line-height:1.5; }
footer.end{ margin-top:56px; border-top:1px solid var(--line); padding:22px 0 60px;
font-size:.8rem; color:var(--faint); display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px; }
</style>
<div class="page" dir="rtl" lang="ar">
<header class="hero"><div class="wrap">
<span class="kicker">التقرير الشامل — نسخة محدّثة تشمل مواصلاتي وسير الرحلة والتوتوريال</span>
<h1>سيرو — الإرث الرقمي لمنظومة التنقّل المتكاملة</h1>
<p class="lede">
جرد كامل لكل ما بُني في منصة Siro ولماذا بُني: تطبيقات الراكب والسائق والإدارة وخدمة العملاء،
البنية الخلفية ومحرك التسعير، الخرائط والتتبع الحي، نظام «مواصلاتي» لباصات الجامعات،
البوتات والذكاء الاصطناعي، والمنظومة المالية — مع سير الرحلة خطوة بخطوة وخطة التوتوريال الكاملة.
</p>
<p class="meta">أُعدّ بفحص مباشر للكود المصدري — كل رقم ومسار ملف تمّ التحقق منه فعلياً · آخر تحديث 2026-07-14</p>
<div class="stats">
<div class="stat"><b>4</b><span>تطبيقات موبايل</span></div>
<div class="stat"><b>9</b><span>فئات مركبات</span></div>
<div class="stat"><b>3</b><span>دول تشغيل</span></div>
<div class="stat"><b>13+</b><span>لغة مدعومة</span></div>
<div class="stat"><b>10+</b><span>طرق دفع محلية</span></div>
<div class="stat"><b>2</b><span>خطا أعمال: مشاوير + مواصلاتي</span></div>
</div>
</div></header>
<nav class="tocbar" aria-label="فهرس التقرير"><div class="wrap"><div class="row">
<a href="#overview"><b>00</b>نظرة عامة</a>
<a href="#rideflow"><b>01</b>سير الرحلة</a>
<a href="#rider"><b>02</b>الراكب</a>
<a href="#driver"><b>03</b>السائق</a>
<a href="#ops"><b>04</b>الإدارة والدعم</a>
<a href="#backend"><b>05</b>البنية والتسعير</a>
<a href="#maps"><b>06</b>الخرائط</a>
<a href="#transit"><b>07</b>مواصلاتي</a>
<a href="#bots"><b>08</b>البوتات</a>
<a href="#finance"><b>09</b>المالية والاستثمار</a>
<a href="#legacy"><b>10</b>القيمة</a>
<a href="#risks"><b>11</b>المخاطر</a>
<a href="#tutorial"><b>12</b>التوتوريال</a>
</div></div></nav>
<main class="wrap">
<!-- 00 -->
<section id="overview">
<div class="sec-head">
<span class="eyebrow">00</span>
<h2>نظرة عامة: منصة واحدة، تسعة أنظمة متكاملة</h2>
<p class="thesis">سيرو ليست «تطبيق طلب سيارة» — هي منظومة من 4 تطبيقات Flutter، وباك اند PHP/Node ضخم، وخوادم Socket خاصة للتتبع الحي، ومحرك تسعير بالذكاء الاصطناعي، ونظام نقل جماعي للجامعات، وبنية مالية متعددة الدول — كلها مبنية داخلياً وتعمل في الأردن ومصر وسوريا.</p>
</div>
<div class="rows">
<div class="row-item"><h4>🚕 أربعة تطبيقات Flutter</h4><p>الراكب (226 ملف)، السائق (275 ملف — الأكبر)، الإدارة (131)، خدمة العملاء (66) — تشترك بنفس الباك اند.</p></div>
<div class="row-item"><h4>🗄️ باك اند PHP مقسّم بأمان مركزي</h4><p>كل وحدة (مصادقة، رحلات، تسعير، تأمين…) تمر إجبارياً عبر طبقة JWT + تشفير + تحديد معدل طلبات واحدة.</p></div>
<div class="row-item"><h4>📍 خوادم Socket خاصة للموقع</h4><p>خادم سائق وخادم راكب منفصلان — تتبع لحظي دون الاعتماد على Google Maps، بتوفير تكلفة ضخم.</p></div>
<div class="row-item"><h4>🤖 محرك تسعير ذكي</h4><p>بوت يقرأ أسعار المنافسين من تطبيقاتهم، محرك يفكّك معادلاتهم، وكرون جوبز تُبقي سيرو أرخص بـ 6.5% آلياً.</p></div>
<div class="row-item"><h4>🚌 مواصلاتي</h4><p>نظام نقل جماعي للجامعات والمؤسسات (SaaS مجاني) بقاعدة بيانات معزولة ولوحة تحكم ويب مستقلة — القسم 07.</p></div>
<div class="row-item"><h4>💳 محفظة ودفع متعدد الدول</h4><p>خدمة منفصلة (268 ملف) تربط MTN وSyriatel Cash وShamCash وCliq وPayMob وeCash.</p></div>
</div>
</section>
<!-- 01 RIDE FLOW -->
<section id="rideflow">
<div class="sec-head">
<span class="eyebrow">01</span>
<h2>سير الرحلة — من فتح التطبيق حتى التقييم</h2>
<p class="thesis">الدورة الكاملة كما تعمل فعلياً في الكود: كل خطوة لها شاشة وحالة (State) وقناة تواصل حي. هذه الدورة نفسها هي أساس التوتوريال في القسم 12.</p>
</div>
<div class="flow">
<div class="step"><h4>الدخول والتحقق <span class="t">أقل من دقيقة</span></h4><p>رقم الهاتف + رمز OTP (واتساب/SMS حسب الدولة) — لا بريد إلكتروني إجباري ولا بطاقة. الجلسة تُربط ببصمة الجهاز فلا يعمل الرمز المسروق على جهاز آخر.</p></div>
<div class="step"><h4>تحديد الوجهة والسعر <span class="t">فوري</span></h4><p>بحث عن المكان، اختيار فئة من 9 فئات، والسعر يُحسب بالكامل على الخادم ويُختم برمز موقّت صالح 7 دقائق — لا يمكن التلاعب به بين شاشة العرض والتأكيد.</p></div>
<div class="step"><h4>البحث عن كابتن <span class="t">حتى 90 ثانية</span></h4><p>مطابقة «أقرب سائق» عبر Redis الجغرافي. إذا لم يقبل أحد خلال 90 ثانية يقترح «المفاوض الذكي» رفع السعر ~5% بدل إلغاء الطلب.</p></div>
<div class="step"><h4>قبول الكابتن والتوجه إليك <span class="t">تتبع حي</span></h4><p>بطاقة الكابتن (اسم، تقييم، سيارة، لوحة) ومسار أصفر يتحرك لحظياً عبر WebSocket، مع إشعار FCM وLive Activity على iOS.</p></div>
<div class="step"><h4>الوصول والانتظار <span class="t">مهلة 5 دقائق</span></h4><p>إشعار «الكابتن وصل» ويبدأ عداد انتظار. الإلغاء قبل القبول مجاني دائماً؛ بعد الوصول قد تُطبَّق رسوم.</p></div>
<div class="step"><h4>الرحلة الجارية <span class="t">مسار أزرق + SOS</span></h4><p>عداد حي، كشف انحراف عن المسار (50م)، تنبيه تجاوز سرعة 100كم/س، زر طوارئ يعمل بهزّ الهاتف، ومشاركة الرحلة مع الأهل برابط حي.</p></div>
<div class="step"><h4>التسوية والدفع <span class="t">من الخادم</span></h4><p>السعر النهائي يُعاد حسابه من المسافة والزمن الفعليين بسقوف أمان (≤1.6× المعروض)، ثم الدفع: كاش، محفظة، PayMob، MTN، Syriatel، Cliq.</p></div>
<div class="step"><h4>التقييم والإكرامية <span class="t">اختياري</span></h4><p>تقييم الكابتن بالنجوم مع إكرامية اختيارية، وتُحفظ الرحلة في السجل مع الفاتورة.</p></div>
</div>
</section>
<!-- 02 RIDER -->
<section id="rider">
<div class="sec-head">
<span class="eyebrow">02</span>
<h2>تطبيق الراكب</h2>
<p class="thesis">واجهة المستخدم النهائي — أعمق بكثير من «اطلب وادفع»، وفيها ميزات ثقة وسلامة نادرة حتى عند منافسين أكبر.</p>
</div>
<div class="subhead">الحجز والتسعير</div>
<div class="rows">
<div class="row-item"><h4>9 فئات ركوب</h4><p>اقتصادية (Balash/Awfar)، Comfort، كهربائية، Lady نسائية، Van عائلية، VIP/مشوار (اختيار سائق بالاسم لموعد لاحق)، توصيل، ورايح-جاي بين المدن (+23 كم).</p><span class="why">كل فئة تفتح شريحة سوق مختلفة — من الطالب حتى العائلة والراكبات.</span></div>
<div class="row-item"><h4>شارة مقارنة أسعار</h4><p>«أنت توفّر X% مقارنة بكريم/أوبر/يلا-جو» بالاسم صراحة على شاشة الطلب.</p></div>
<div class="row-item"><h4>المفاوض الذكي</h4><p>اقتراح آلي لرفع السعر عند عدم توفر كابتن — يقلل الطلبات الفاشلة.</p></div>
</div>
<div class="subhead">الدفع والولاء</div>
<div class="rows">
<div class="row-item"><h4>Siro Prime</h4><p>اشتراك ~4$ شهرياً: بلا تسعير ذروة، أولوية مطابقة، شارة تزيد قبول السائقين — إيراد شهري متكرر.</p></div>
<div class="row-item"><h4>مكافآت شحن المحفظة</h4><p>«ادفع 20 خذ 21» — يشجع الرصيد المسبق ويقلل الكاش.</p></div>
<div class="row-item"><h4>تنبيه الرصيد السالب</h4><p>بانر دائم + قراءة صوتية عند وجود دين من رحلة كاش سابقة — تحصيل استباقي.</p></div>
<div class="row-item"><h4>إحالة ثنائية</h4><p>دعوة أصدقاء كركاب أو سائقين عبر واتساب، والمكافأة تُفتح بعد رحلتين فعليتين.</p></div>
</div>
<div class="subhead">السلامة والثقة</div>
<div class="rows">
<div class="row-item"><h4>زر الطوارئ SOS</h4><p>واتساب فوري لجهة طوارئ مع الموقع الحي واسم السائق واللوحة — ويتفعّل بهزّ الهاتف 5 مرات.</p></div>
<div class="row-item"><h4>مراقبة حية لطرف ثالث</h4><p>رابط يتيح لولي الأمر متابعة الموقع والسرعة دون تثبيت التطبيق — تمايز حقيقي لشريحة الطالبات.</p></div>
<div class="row-item"><h4>مكالمات WebRTC داخلية</h4><p>اتصال راكب↔سائق دون كشف الأرقام، ببنية ذاتية بدل Agora المدفوعة.</p></div>
<div class="row-item"><h4>تسجيل صوتي للرحلة + تنبيه سرعة</h4><p>دليل عند النزاع، وتنبيه فوري عند تجاوز 100 كم/س.</p></div>
<div class="row-item"><h4>حماية تقنية</h4><p>بصمة جهاز، كشف Root/Jailbreak، تثبيت SSL ضد اعتراض البيانات.</p></div>
</div>
<div class="subhead">تجربة مصممة للمنطقة</div>
<div class="rows">
<div class="row-item"><h4>13+ لغة بثلاث لهجات عربية</h4><p>مصري/أردني/سوري بملفات منفصلة + RTL كامل — جاهزية توسع حقيقية.</p></div>
<div class="row-item"><h4>خرائط دون اتصال + كشف نوعية الجهاز</h4><p>تحميل مسبق للبلاطات، وتخفيف الرسوميات آلياً على الأجهزة الاقتصادية.</p></div>
<div class="row-item"><h4>قراءة صوتية TTS</h4><p>وصف الرحلات والتنبيهات صوتياً — يشمل ضعاف البصر، سوق مهمَل من المنافسين.</p></div>
</div>
</section>
<!-- 03 DRIVER -->
<section id="driver">
<div class="sec-head">
<span class="eyebrow">03</span>
<h2>تطبيق السائق</h2>
<p class="thesis">أكبر تطبيق في المنظومة (275 ملف) — محرك تشغيل الأسطول: مكافحة احتيال، نظام تدرّج بخصومات عمولة فعلية، وذكاء تشغيلي يوجّه السائق للربح.</p>
</div>
<div class="alert good"><span class="tag">✅ مؤكد في الكود</span>
<p>ميزة «أرباحك أعلى بـ X مقارنة بالتطبيقات الأخرى» موجودة ومفعّلة: <code>driver_earnings_badge.dart</code> يعرض شارة خضراء على شاشة قبول الطلب مبنية على حقل <code>driver_earnings_extra</code> من الخادم.</p>
</div>
<div class="rows">
<div class="row-item"><h4>تدرّج بخصم عمولة حقيقي</h4><p>برونزي ← فضي (−1%) ← ذهبي (−2%) ← ماسي (−5% + أولوية) — ولاء بمكافأة مالية ملموسة.</p></div>
<div class="row-item"><h4>سلسلة رحلات بلا إلغاء</h4><p>5 رحلات متتالية = عمولة 0% لبقية اليوم؛ أي إلغاء يصفّر السلسلة.</p></div>
<div class="row-item"><h4>خارطة طلب تنبؤية</h4><p>أين سيرتفع الطلب خلال الساعة القادمة، من بيانات الرحلات التاريخية.</p></div>
<div class="row-item"><h4>حد 12 ساعة قيادة + حظر بعد 3 إلغاءات</h4><p>راحة إجبارية 6 ساعات، وحماية موثوقية السوق من الإلغاء المتكرر.</p></div>
<div class="row-item"><h4>تحقق مسافة قبل إنهاء الرحلة</h4><p>مقارنة إزاحة GPS الفعلية بالمتوقعة — يمنع تزوير إتمام الرحلات.</p></div>
<div class="row-item"><h4>توثيق بالذكاء الاصطناعي</h4><p>Gemini يقرأ الهوية والرخصة، ومطابقة وجه (سيلفي↔هوية) قبل قبول التسجيل، وكشف «الرحلة الذاتية» بمقارنة بصمتي الجهازين.</p></div>
<div class="row-item"><h4>Android Auto / CarPlay</h4><p>جسر ملاحة مخصص لشاشة السيارة — تجربة مكافئة لأوبر/كريم.</p></div>
<div class="row-item"><h4>سحب أرباح متعدد القنوات</h4><p>PayMob، MTN، Cliq، eCash، حساب بنكي، وحتى SMS في سوريا.</p></div>
</div>
</section>
<!-- 04 OPS -->
<section id="ops">
<div class="sec-head">
<span class="eyebrow">04</span>
<h2>الإدارة وخدمة العملاء</h2>
<p class="thesis">لوحة تشغيل داخلية حقيقية بطبقتين (قديمة + V2 تحليلية)، وتطبيق دعم ميداني سريع — مع فجوات تشغيلية يجب قولها بصراحة.</p>
</div>
<div class="rows">
<div class="row-item"><h4>مركز عمليات حي (V2)</h4><p>رحلات نشطة، سائقون متصلون، إيراد اليوم مقابل الأمس، شكاوى — يتحدث كل دقيقتين.</p></div>
<div class="row-item"><h4>محرر تسعير «كازان»</h4><p>عمولة كل دولة، سعر الكيلومتر لكل فئة، وتسعير الدقيقة حسب الوقت — أهم رافعة إيراد في المنصة.</p></div>
<div class="row-item"><h4>مساعد تسجيل بالذكاء الاصطناعي</h4><p>Gemini + Claude Haiku يقرآن الوثائق المصرية ويكشفان الانتهاء وعدم تطابق الأسماء آلياً.</p></div>
<div class="row-item"><h4>بطاقة جودة السائق + سجل تدقيق</h4><p>قرارات حظر مبنية على بيانات، وكل إجراء موظف حساس مسجّل بالاسم والوقت.</p></div>
<div class="row-item"><h4>دعم ميداني سريع</h4><p>بحث برقم هاتف/رحلة، تفعيل سائقين، وقوالب واتساب عربية جاهزة — بدون CRM مكلف.</p></div>
</div>
<div class="alert warn"><span class="tag">فجوات تشغيلية</span>
<p>شاشة عرض الشكوى في تطبيق خدمة العملاء ما زالت فارغة (stub) رغم جاهزية قاعدة البيانات لسير تحقيق كامل · لا توجد أداة استرجاع مبلغ (Refund) في كامل النظام · لا يوجد تتبع SLA أو تصعيد للشكاوى الحرجة.</p>
</div>
</section>
<!-- 05 BACKEND -->
<section id="backend">
<div class="sec-head">
<span class="eyebrow">05</span>
<h2>البنية الخلفية ومحرك التسعير</h2>
<p class="thesis">قلب المنصة: كل طلب يمر عبر طبقة أمان مركزية قبل أي منطق عمل، ومحرك رحلات (202 ملف) يتخذ قرارات تجارية آلياً.</p>
</div>
<div class="rows">
<div class="row-item"><h4>JWT مربوط ببصمة الجهاز</h4><p>الرمز المسروق لا يعمل على جهاز آخر.</p></div>
<div class="row-item"><h4>تشفير AES-256 للبيانات الحساسة</h4><p>أسماء، هواتف، هويات، لوحات — مشفّرة حتى لو تسربت القاعدة.</p></div>
<div class="row-item"><h4>Rate Limiting مخصص لكل نوع طلب</h4><p>حدود أشد للشكاوى لأن كل شكوى تستدعي Gemini + واتساب.</p></div>
<div class="row-item"><h4>رمز سعر موقّع (7 دقائق)</h4><p>يغلق ثغرة التلاعب بالسعر بين العرض والتأكيد.</p></div>
<div class="row-item"><h4>تسوية أجرة آمنة</h4><p>إعادة حساب من الخادم بسقوف (≤1.6× السعر، ≤1.5× المسافة) قبل التحويل للمحفظة.</p></div>
<div class="row-item"><h4>مطابقة الوجهة (Destination Matching)</h4><p>سائق متجه للبيت يأخذ أولوية الطلبات القريبة من وجهته، والراكب يخصم 14%.</p></div>
<div class="row-item"><h4>تسعير ديناميكي متكامل</h4><p>ذروة حسب العرض/الطلب لكل قطعة جغرافية، مطابقة ذروة المنافسين، مضاعفات رمضان/الأعياد، وخصم مسافات طويلة.</p></div>
</div>
<div class="alert good"><span class="tag">وثيقة موجودة فعلاً</span>
<p>يوجد تدقيق أمني داخلي بأسلوب اختبار اختراق يصنّف النتائج من حرج لمنخفض — نقاط قوة موثقة (لا SQL Injection، AES-256) مقابل بنود مفتوحة (Rate limiting معطّل بأماكن، ملفات اختبار في الإنتاج، تشفير CBC بـ IV ثابت). راجع <code>docs/08_security</code>.</p>
</div>
</section>
<!-- 06 MAPS -->
<section id="maps">
<div class="sec-head">
<span class="eyebrow">06</span>
<h2>الخرائط والموقع الجغرافي</h2>
<p class="thesis">القرار الأهم: لا اعتماد على Google Maps للتتبع الحي أو المطابقة — خادما WebSocket خاصان وفهرسة Redis جغرافية، بتحكم كامل وتوفير ضخم.</p>
</div>
<div class="rows">
<div class="row-item"><h4>تتبع حي مُفلتر ومُجمّع</h4><p>موقع السائق كل 1–3 ثوانٍ، يُرسل فقط عند تحرك حقيقي (10م)، يُجمَّع ويُكتب لـ Redis كل نصف ثانية دفعة واحدة ثم يُدفع للراكب.</p></div>
<div class="row-item"><h4>أقرب سائق عبر GEORADIUS</h4><p>بحث نصف قطر على آلاف السائقين لحظياً، مرتب بالتقييم — لا توجد خدمة جاهزة تقدم هذا.</p></div>
<div class="row-item"><h4>استعلام مخصص لكل فئة</h4><p>Balash يختار أقدم السيارات فعلياً، وElectric يفلتر وقود «كهربائي» — منطق عمل مستحيل بخدمة عامة.</p></div>
<div class="row-item"><h4>خرائط حرارية + تتبع أسطول حي</h4><p>«رؤية إلهية» لفريق العمليات دون شراء أداة BI.</p></div>
<div class="row-item"><h4>تجزئة جغرافية (Geo-Sharding)</h4><p>كل نطاق إحداثيات يمكن ربطه بخادم مختلف — توسع مدينة-بمدينة دون إعادة هندسة.</p></div>
</div>
</section>
<!-- 07 TRANSIT -->
<section id="transit">
<div class="sec-head">
<span class="eyebrow">07</span>
<h2>مواصلاتي — النقل الجماعي للجامعات والمؤسسات</h2>
<p class="thesis">خط الأعمال الثاني: رقمنة أساطيل الجامعات والمدارس والشركات مجاناً (SaaS)، مقابل استحواذ سيرو على المستخدمين وتحويلهم لركاب مدفوعين — بعزل تقني كامل عن نظام المشاوير (قاعدة <code>siro_transit</code> مستقلة + سوكيتات خاصة).</p>
</div>
<div class="actors">
<div class="actor"><span class="ic">🏛️</span><b>فريق سيرو</b><span>ينشئ المؤسسة، يضيف مشرفيها، ويعتمد الخطوط المرسومة قبل ظهورها للطلاب</span></div>
<div class="actor"><span class="ic">🧑‍💼</span><b>مشرف المؤسسة</b><span>لوحة ويب: باصات، سائقون، رسم الخطوط والمحطات، الجداول، ورفع كشف الطلاب CSV</span></div>
<div class="actor"><span class="ic">🚌</span><b>سائق الباص</b><span>تطبيق السائق بوضع Bus Mode مبسّط: زر ابدأ/أنهِ فقط، والمحطات تمرّ آلياً بالـ Geofencing</span></div>
<div class="actor"><span class="ic">🎓</span><b>الطالب</b><span>تفعيل فوري بالرقم الجامعي، تتبع حي للباص، وإشعارات اقتراب ذكية</span></div>
</div>
<div class="subhead">كيف تسير رحلة الباص</div>
<div class="flow">
<div class="step"><h4>الإعداد <span class="t">مرة واحدة</span></h4><p>المشرف يرسم المسار على خريطة تفاعلية ويحدد المحطات بمحيط جغرافي (150م افتراضياً)، والخط يبقى «مسودة» حتى يعتمده فريق سيرو، ثم تُحدد أوقات الانطلاق وأيام العمل.</p></div>
<div class="step"><h4>بدء الرحلة <span class="t">زر واحد</span></h4><p>السائق يضغط «ابدأ الرحلة» ويبدأ بث موقعه عبر السوكيت كل عدة ثوانٍ — مع إشعار انطلاق للمشتركين.</p></div>
<div class="step"><h4>المرور بالمحطات <span class="t">آلي بالكامل</span></h4><p>دخول الباص محيط أي محطة يحدّث شريط التقدم تلقائياً دون تدخل السائق، ويُرسل «الباص يبعد محطة واحدة عنك» للطلاب التاليين. زر «تأخير» متاح عند الزحام.</p></div>
<div class="step"><h4>التتبع الحي للطالب <span class="t">Socket</span></h4><p>الطالب يرى الباص يتحرك على المسار لحظياً — ولا يُسمح له بالانضمام لغرفة البث إلا بعضوية نشطة في المؤسسة المالكة للخط.</p></div>
<div class="step"><h4>نقطة التحويل الربحية <span class="t">جوهر النموذج</span></h4><p>إذا فات الطالبَ الباصُ يظهر زر بارز: «فاتك الباص؟ اطلب سيارة الآن» — يحوّله لرحلة مدفوعة عادية من سيرو. هذا هو العائد الأساسي لخط الأعمال كله.</p></div>
</div>
<div class="duo" style="margin-top:14px;">
<div class="panel"><h4>ضوابط أمنية مبنية</h4><ul>
<li>حماية IDOR: لا يستطيع سائق إنهاء رحلة سائق آخر.</li>
<li>تشفير أرقام الهواتف والأرقام الجامعية في القاعدة.</li>
<li>Rate Limiting على OTP وتسجيل الدخول.</li>
<li>تفعيل الطالب فوري بمطابقة الكشف — دون OTP إضافي لتوفير التكلفة.</li>
</ul></div>
<div class="panel"><h4>نمطان تشغيليان</h4><ul>
<li><b>أسطول المؤسسة:</b> الجامعة تملك باصاتها وسائقيها.</li>
<li><b>الناقل المتعاقد:</b> شركة نقل طرف ثالث تشغّل خطوط مؤسسة بلا أسطول، بنفس برمجيات التتبع.</li>
<li>سائق الباص منفصل تماماً عن كابتن المشاوير ولا يتلقى طلبات عادية.</li>
</ul></div>
</div>
<div class="alert warn"><span class="tag">فجوات معروفة قيد المعالجة</span>
<p>المراجعة الفنية الكاملة في <code>docs/05_transit_mawasalati</code> توثّق بنوداً مفتوحة: نواقص في ربط السائق، واعتماد الخطوط، وحالات IDOR إضافية — يجب إغلاقها قبل أول إطلاق جامعي واسع.</p>
</div>
</section>
<!-- 08 BOTS -->
<section id="bots">
<div class="sec-head">
<span class="eyebrow">08</span>
<h2>البوتات والذكاء الاصطناعي التسويقي</h2>
<p class="thesis">منظومة مغلقة: بوت يسحب أسعار المنافسين من تطبيقاتهم ← محرك يفكّك معادلاتهم ← إعادة تسعير آلية ← بوتات سوشيال تصنع «نقاشات» لصالح سيرو. ميزة تنافسية حقيقية، بمخاطر قانونية وسمعية واضحة.</p>
</div>
<div class="rows">
<div class="row-item"><h4>بوت أندرويد يقرأ تطبيقات المنافسين</h4><p>Accessibility Service يفتح كريم/أوبر/يلا-جو/TaxiF/زاكن فعلياً، يدخل نقطتين، ويقرأ السعر من الشاشة.</p></div>
<div class="row-item"><h4>فك معادلة تسعير المنافس</h4><p>انحدار إحصائي يشتق (أساس + لكل كم + لكل دقيقة) ويكشف حتى الحد الأدنى الخفي للأجرة.</p></div>
<div class="row-item"><h4>إعادة تسعير آلية −6.5%</h4><p>كرون جوب يُبقي سيرو أرخص تلقائياً، مع «وضع الظل»: العروض المؤقتة للمنافس تُقابل بكود خصم بدل حرق السعر الأساسي (سقف تغيير 3% وتهدئة 3 أيام).</p></div>
<div class="row-item"><h4>بوتات سوشيال بلهجات محلية</h4><p>حسابات مُدارة بتدوير IP، تعليقات Gemini بلهجة كل بلد، و«دراما حوار» مفتعلة (تشكيك ثم رد داعم) بتأخير عشوائي.</p></div>
</div>
<div class="alert crit"><span class="tag">⚠️ خطر قانوني وسمعي</span>
<p>سحب الأسعار آلياً يخالف غالباً شروط استخدام تطبيقات المنافسين، والحسابات المنسّقة الوهمية تُصنَّف «تلاعباً منسّقاً غير أصيل» يخالف سياسات المنصات صراحة — خطر حظر جماعي وضرر سمعي إذا انكشف. قرار يجب اتخاذه بوعي كامل بالمخاطرة، لا بالعائد فقط.</p>
</div>
</section>
<!-- 09 FINANCE -->
<section id="finance">
<div class="sec-head">
<span class="eyebrow">09</span>
<h2>نبيه، المحفظة، والاستثمار</h2>
<p class="thesis">تصحيح مهم: «نبيه» ليست منصة استثمار — لا فوائد ولا حصص في الكود. هي مزوّد أتمتة خارجي عبر واتساب. الاستثمار الحقيقي في وثائق المستثمرين، مع نقطة تحتاج انتباهاً فورياً.</p>
</div>
<div class="rows">
<div class="row-item"><h4>نبيه فعلياً</h4><p>أتمتة واتساب بالذكاء الاصطناعي: تسجيل سائقين بالمحادثة، استفسارات أرباح، فحص شكاوى بـ Gemini، وتحقق بصري من إيصالات الدفع.</p></div>
<div class="row-item"><h4>محفظة سيرو</h4><p>خدمة منفصلة (268 ملف): MTN، Syriatel Cash، ShamCash، Cliq، PayMob، eCash — مع تحويل فعلي بين محافظ السائقين برسوم للشركة.</p></div>
<div class="row-item"><h4>طلب تمويل موثّق</h4><p>200,000$ مقابل 22% (تقييم ضمني ~909K$) بأربع طبقات إيراد: عمولة، Prime، إعلانات جغرافية، وترخيص خرائط سيرو كبديل أرخص من Google Maps.</p></div>
<div class="row-item"><h4>عقد سوريا المنفصل</h4><p>اتفاقية حصة أرباح 180,000$ لسوريا فقط — سرديتان تمويليتان تحتاجان توحيداً قبل أي عرض رسمي.</p></div>
</div>
<div class="alert crit"><span class="tag">⚠️ تسريب بيانات — إجراء فوري</span>
<p><code>siromove.com/contract.html</code> على النطاق العام يحتوي نص العقد الاستثماري كاملاً مع <b>أرقام هوية/جواز حقيقية</b> لمؤسسَين ومستثمر — متاح لأي زائر. يجب إزالته من الوصول العام أو حمايته بمصادقة فوراً.</p>
</div>
</section>
<!-- 10 LEGACY -->
<section id="legacy">
<div class="sec-head">
<span class="eyebrow">10</span>
<h2>الإرث الرقمي: القيمة الفكرية والمادية</h2>
<p class="thesis">لو حلّ نموذج ذكاء اصطناعي محل الفريق، هل كان يبني هذا من الصفر؟ جزء كبير من الكود: نعم. الجزء الأكثر قيمة: لا — وهذا ما يحدد قيمة المشروع.</p>
</div>
<div class="duo">
<div class="panel can"><h4>✅ ما يُنتجه الذكاء الاصطناعي بسرعة</h4><ul>
<li>شاشات Flutter القياسية والتكاملات الجاهزة (PayMob، Gemini، Firebase).</li>
<li>منطق CRUD الإداري والأمان القياسي (JWT، تشفير، Rate Limiting).</li>
<li>نمط Socket + Redis Geo كتصميم هندسي معروف بالصناعة.</li>
</ul></div>
<div class="panel cannot"><h4>❌ ما لا يُخترع بمجرد Prompt</h4><ul>
<li><b>معادلات تسعير المنافسين الفعلية</b> — أشهر من بيانات سوق حقيقية.</li>
<li><b>القيم المضبوطة تشغيلياً</b> (12 ساعة، 3 إلغاءات، 90 ثانية) — نتاج حوادث وتجربة موثقة.</li>
<li><b>العلاقات المحلية</b>: ترخيص سوريا (قانون 16/2021)، اتفاقيات MTN وSyriatel وCliq، وتوزيع APK خارج المتجر بسبب العقوبات.</li>
<li><b>القاعدة الفعلية</b>: 1,447 سائقاً و2,891 راكباً في 45 يوماً بميزانية محدودة — أصل شبكي لا يُشترى.</li>
</ul></div>
</div>
<div class="alert good" style="margin-top:14px;"><span class="tag">الخلاصة</span>
<p>هذا المشروع مثال حي على الفرق بين «الكود» و«الشركة»: الذكاء الاصطناعي يسرّع كتابة الكود فعلاً، لكنه لا يعوّض الوقت الفعلي والمخاطرة الفعلية والعلاقات الفعلية — وهذه، لا الكود، هي القيمة غير القابلة للنسخ. القيمة المادية الموثقة داخلياً: تقييم ضمني ~909 ألف دولار.</p>
</div>
</section>
<!-- 11 RISKS -->
<section id="risks">
<div class="sec-head">
<span class="eyebrow">11</span>
<h2>المخاطر والفجوات المجمّعة</h2>
<p class="thesis">كل ما يحتاج قراراً أو إجراءً، من الأشد إلحاحاً للأقل.</p>
</div>
<div class="alert crit"><span class="tag">حرج — الآن</span><p>أرقام هوية حقيقية منشورة بلا حماية على <code>siromove.com/contract.html</code> — القسم 09.</p></div>
<div class="alert warn"><span class="tag">قانوني وسمعي</span><p>بوتات سحب الأسعار والتلاعب المنسّق بالسوشيال — القسم 08.</p></div>
<div class="alert warn"><span class="tag">حوكمة تمويل</span><p>سرديتان تمويليتان متضاربتان (180K$ سوريا مقابل 200K$/22% عامة) تحتاجان توحيداً.</p></div>
<div class="alert warn"><span class="tag">تشغيلي</span><p>لا أداة عرض/حل شكوى فعلية، لا Refund، لا SLA — القسم 04. وفجوات مواصلاتي المفتوحة — القسم 07.</p></div>
<div class="alert warn"><span class="tag">أمني</span><p>بنود التدقيق الأمني غير المغلقة: Rate limiting معطّل بأماكن، ملفات اختبار في الإنتاج، تشفير CBC بـ IV ثابت.</p></div>
</section>
<!-- 12 TUTORIAL -->
<section id="tutorial">
<div class="sec-head">
<span class="eyebrow">12</span>
<h2>خطة التوتوريال داخل الموقع — «كيف تستخدم سيرو»</h2>
<p class="thesis">صفحة <code>siromove.com/tutorial</code> بسبع وحدات تشرح كل عملية خطوة بخطوة بلقطات شاشة حقيقية داخل إطار هاتف. المطلوب تصويره: <b class="num">34 لقطة</b> في جلسة واحدة (~ساعتين) على بيئة تجريبية. الخطة التفصيلية بأسماء الشاشات في الكود: <code>docs/02_journeys_and_tutorials/TUTORIAL_PLAN_AR.md</code>.</p>
</div>
<div class="mods">
<div class="mod"><span class="shots">5 لقطات</span><h4>1 · التسجيل</h4>
<ol><li>شاشة البداية بالشعار</li><li>شرائح التعريف</li><li>رقم الهاتف واختيار الدولة</li><li>رمز التحقق OTP</li><li>إكمال الاسم والبدء</li></ol>
<p class="note">الرسالة: رقم هاتف فقط — أقل من دقيقة حتى الخريطة.</p></div>
<div class="mod"><span class="shots">6 لقطات</span><h4>2 · طلب الرحلة</h4>
<ol><li>الخريطة والسيارات القريبة</li><li>البحث عن الوجهة</li><li>دبوس الانطلاق</li><li>الفئات التسع مع شارة التوفير</li><li>كود الخصم</li><li>تأكيد الطلب بالسعر النهائي</li></ol>
<p class="note">الرسالة: السعر نهائي ومحسوب من الخادم — لا مفاجآت.</p></div>
<div class="mod"><span class="shots">4 لقطات</span><h4>3 · الانتظار والمطابقة</h4>
<ol><li>نافذة البحث مع المؤقّت</li><li>اقتراح المفاوض الذكي (بعد 90 ثانية)</li><li>بطاقة الكابتن</li><li>الكابتن في الطريق مع المسار</li></ol></div>
<div class="mod"><span class="shots">5 لقطات</span><h4>4 · أثناء الرحلة والسلامة</h4>
<ol><li>إشعار «الكابتن وصل» ومهلة 5 دقائق</li><li>المسار الأزرق والعداد</li><li>مشاركة الرحلة مع الأهل</li><li>زر SOS وهزّ الهاتف</li><li>المكالمة داخل التطبيق</li></ol></div>
<div class="mod"><span class="shots">3 لقطات</span><h4>5 · الإلغاء</h4>
<ol><li>مكان زر الإلغاء</li><li>اختيار السبب</li><li>التأكيد وسياسة الرسوم</li></ol>
<p class="note">قبل قبول الكابتن: مجاني دائماً. بعد وصوله: قد تُطبَّق رسوم.</p></div>
<div class="mod"><span class="shots">6 لقطات</span><h4>6 · الدفع والتقييم</h4>
<ol><li>الفاتورة النهائية</li><li>قائمة طرق الدفع</li><li>تأكيد الكاش</li><li>المحفظة والشحن بمكافأة</li><li>التقييم والإكرامية</li><li>سجل الرحلات</li></ol></div>
<div class="mod"><span class="shots">5 لقطات</span><h4>7 · مواصلاتي للطلاب</h4>
<ol><li>اختيار الجامعة</li><li>تفعيل الرقم الجامعي</li><li>الخطوط والجداول</li><li>التتبع الحي للباص</li><li>زر «فاتك الباص؟ اطلب سيارة»</li></ol></div>
<div class="mod"><span class="shots">التنفيذ</span><h4>خطوات الإطلاق</h4>
<ol><li>بناء الصفحة بتبويبات RTL بنفس هوية هذا التقرير</li><li>صور Placeholder بأسماء الملفات النهائية حتى تجهز اللقطات</li><li>جلسة تصوير واحدة للـ 34 لقطة بترتيب الوحدات</li><li>لاحقاً: فيديوهات 30–60 ثانية + Coach Marks داخل التطبيق</li></ol></div>
</div>
</section>
<footer class="end">
<span>أُعدّ بفحص مباشر لكود المشروع — لا تخمين ولا محتوى عام.</span>
<span class="num">آخر تحديث 2026-07-14 · Siro Digital Legacy Report</span>
</footer>
</main>
</div>
+253
View File
@@ -0,0 +1,253 @@
import json
units = [
{
"id": 1,
"title": "التسجيل وإنشاء الحساب",
"desc": "التسجيل يحتاج رقم هاتف فقط — لا بريد إلكتروني إجباري ولا بطاقة دفع. أقل من دقيقة من التحميل حتى أول شاشة خريطة.",
"steps": [
{"title": "تحميل التطبيق وفتحه", "desc": "شاشة البداية بشعار Siro", "img": "tutorial/registration/01_splash_screen.png"},
{"title": "شاشات التعريف", "desc": "شريحة الـ Onboarding الأولى", "img": "tutorial/registration/02_onboarding.png"},
{"title": "إدخال رقم الهاتف", "desc": "حقل الهاتف مع اختيار الدولة", "img": "tutorial/registration/03_phone_number.png"},
{"title": "رمز التحقق OTP", "desc": "شاشة إدخال الرمز (يصل واتساب/SMS)", "img": "tutorial/registration/04_otp.png"},
{"title": "إكمال البيانات", "desc": "الاسم + البريد (اختياري) ثم «ابدأ»", "img": "tutorial/registration/05_complete_profile.png"}
]
},
{
"id": 2,
"title": "طلب الرحلة",
"desc": "السعر المعروض نهائي ومحسوب من الخادم — لا مفاجآت عند الدفع (ما لم تتغير الوجهة أو يزد الانتظار).",
"steps": [
{"title": "الخريطة الرئيسية", "desc": "الخريطة مع السيارات القريبة تتحرك", "img": "tutorial/booking/01_map_main.png"},
{"title": "تحديد الوجهة", "desc": "شريط البحث + النتائج", "img": "tutorial/booking/02_search_destination.png"},
{"title": "تأكيد نقطة الانطلاق", "desc": "دبوس الانطلاق قابل للسحب", "img": "tutorial/booking/03_pickup_pin.png"},
{"title": "اختيار فئة السيارة", "desc": "قائمة الفئات التسع مع السعر وشارة التوفير", "img": "tutorial/booking/04_select_car_type.png"},
{"title": "كود الخصم", "desc": "حقل البرومو مطبّق على السعر", "img": "tutorial/booking/05_promo_code.png"},
{"title": "تأكيد الطلب", "desc": "زر «اطلب الآن» مع السعر النهائي", "img": "tutorial/booking/06_confirm_order.png"}
]
},
{
"id": 3,
"title": "الانتظار والمطابقة",
"desc": "متوسط زمن المطابقة أقل من 90 ثانية. إذا لم يقبل أحد، النظام يقترح تعديلاً بسيطاً على السعر بدل إلغاء طلبك.",
"steps": [
{"title": "البحث عن كابتن", "desc": "نافذة البحث مع المؤقّت", "img": "tutorial/matching/01_searching_captain.png"},
{"title": "اقتراح المفاوض الذكي", "desc": "حوار رفع السعر بعد 90 ثانية", "img": "tutorial/matching/02_smart_negotiator.png"},
{"title": "قبول الكابتن", "desc": "بطاقة الكابتن: الاسم، الصورة، التقييم، اللوحة", "img": "tutorial/matching/03_captain_card.png"},
{"title": "الكابتن في الطريق", "desc": "الخريطة مع المسار الأصفر والوقت المتوقع", "img": "tutorial/matching/04_captain_on_way.png"}
]
},
{
"id": 4,
"title": "أثناء الرحلة والسلامة",
"desc": "تتبع حي للرحلة مع خيارات أمان متقدمة واتصال آمن بالكابتن.",
"steps": [
{"title": "وصول الكابتن", "desc": "إشعار «الكابتن وصل» ومهلة انتظار 5 دقائق", "img": "tutorial/ride/01_captain_arrived.png"},
{"title": "بدء الرحلة", "desc": "المسار الأزرق + العداد الحي", "img": "tutorial/ride/02_ride_started.png"},
{"title": "مشاركة الرحلة", "desc": "رابط متابعة لطرف ثالث (للأهل)", "img": "tutorial/ride/03_share_ride.png"},
{"title": "زر الطوارئ SOS", "desc": "زر الطوارئ (وهزّ الهاتف 5 مرات)", "img": "tutorial/ride/04_sos_button.png"},
{"title": "الاتصال بالكابتن", "desc": "شاشة المكالمة داخل التطبيق", "img": "tutorial/ride/05_in_app_call.png"}
]
},
{
"id": 5,
"title": "الإلغاء",
"desc": "الإلغاء قبل القبول مجاني، وبعد الوصول قد تُطبّق رسوم. السائق يواجه إيقافاً بعد 3 إلغاءات.",
"steps": [
{"title": "زر الإلغاء", "desc": "مكان الزر أثناء البحث/الانتظار", "img": "tutorial/cancel/01_cancel_button.png"},
{"title": "اختيار السبب", "desc": "قائمة أسباب الإلغاء", "img": "tutorial/cancel/02_cancel_reason.png"},
{"title": "تأكيد الإلغاء", "desc": "رسالة التأكيد + سياسة الرسوم", "img": "tutorial/cancel/03_cancel_confirm.png"}
]
},
{
"id": 6,
"title": "الدفع والتقييم",
"desc": "دفع مرن مع نقاط مكافأة للمحفظة، وتقييم يعزز جودة الخدمة.",
"steps": [
{"title": "نهاية الرحلة", "desc": "شاشة الفاتورة النهائية", "img": "tutorial/payment/01_ride_finished.png"},
{"title": "طرق الدفع", "desc": "كاش/محفظة/بطاقة ووسائل الدفع المحلية", "img": "tutorial/payment/02_payment_methods.png"},
{"title": "الدفع كاش", "desc": "حوار تأكيد الكاش", "img": "tutorial/payment/03_cash_confirm.png"},
{"title": "الدفع بالمحفظة", "desc": "الخصم من الرصيد وعروض الشحن", "img": "tutorial/payment/04_wallet_pay.png"},
{"title": "تقييم الكابتن", "desc": "النجوم + الإكرامية", "img": "tutorial/payment/05_rate_captain.png"},
{"title": "سجل الرحلات", "desc": "قائمة الرحلات السابقة والفواتير", "img": "tutorial/payment/06_ride_history.png"}
]
},
{
"id": 7,
"title": "مواصلاتي — للطلاب",
"desc": "خدمة تتبع باصات الجامعات مجاناً مع إمكانية تحويل الطالب لرحلة مدفوعة إذا فاته الباص.",
"steps": [
{"title": "اختيار الجامعة", "desc": "تبويب مواصلاتي واختيار الجامعة", "img": "tutorial/transit/01_select_university.png"},
{"title": "تفعيل العضوية", "desc": "إدخال الرقم الجامعي للتفعيل الفوري", "img": "tutorial/transit/02_activate_student_id.png"},
{"title": "استعراض الخطوط", "desc": "قائمة الخطوط المعتمدة وجداولها", "img": "tutorial/transit/03_transit_lines.png"},
{"title": "التتبع الحي", "desc": "الباص يتحرك على المسار والمحطات", "img": "tutorial/transit/04_live_tracking.png"},
{"title": "فاتك الباص؟", "desc": "الزر البارز لطلب سيارة بديلة", "img": "tutorial/transit/05_missed_bus.png"}
]
}
]
html_template = """<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>كيف تستخدم سيرو — التوتوريال الشامل</title>
<style>
:root{
--bg:#F6F7F5; --surface:#FFFFFF; --surface2:#EEF1EE;
--ink:#1A241F; --muted:#5B6862; --faint:#8B968F;
--line:#E1E5E1; --line2:#D2D8D3;
--brand:#0E7A5F; --brand-ink:#0A5945; --brand-soft:#E4F0EB;
--amber:#9A6B12; --amber-soft:#F6EDDA;
--red:#B3362B; --red-soft:#F7E5E2;
--good:#2E7D4F; --good-soft:#E4F1E8;
--sans:"SF Arabic","Segoe UI",system-ui,-apple-system,"Noto Sans Arabic",Tahoma,sans-serif;
--mono:ui-monospace,"SF Mono",Consolas,monospace;
}
@media (prefers-color-scheme: dark){
:root{
--bg:#0F1512; --surface:#161E19; --surface2:#1C2620;
--ink:#E8EDEA; --muted:#9BA8A1; --faint:#6E7B74;
--line:#26302B; --line2:#32403A;
--brand:#3FBF97; --brand-ink:#8FE0C5; --brand-soft:#15342A;
--amber:#E0AE55; --amber-soft:#33290F;
--red:#E07065; --red-soft:#361A16;
--good:#57C287; --good-soft:#14301F;
}
}
body { margin: 0; padding: 0; background: var(--bg); color: var(--ink); font-family: var(--sans); font-size: 16px; line-height: 1.85; }
* { box-sizing: border-box; }
.wrap { max-width: 1060px; margin: 0 auto; padding: 0 22px; }
h1, h2, h3, h4 { margin: 0; color: var(--ink); line-height: 1.35; text-wrap: balance; }
p { margin: 0; }
.hero { padding: 64px 0 36px; border-bottom: 1px solid var(--line); }
.hero .kicker {
display: inline-block; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.04em;
color: var(--brand-ink); background: var(--brand-soft); border-radius: 99px; padding: 4px 14px;
margin-bottom: 18px;
}
.hero h1 { font-size: clamp(1.7rem, 4.5vw, 2.5rem); font-weight: 800; }
.hero .lede { margin-top: 14px; font-size: 1.05rem; color: var(--muted); max-width: 60ch; }
.hero .meta { margin-top: 16px; font-size: 0.8rem; color: var(--faint); }
.tabs {
display: flex; gap: 8px; overflow-x: auto; padding: 20px 0 10px;
margin-top: 10px; scrollbar-width: none;
}
.tabs::-webkit-scrollbar { display: none; }
.tab-btn {
background: var(--surface); border: 1px solid var(--line); color: var(--muted);
font-family: var(--sans); font-size: 0.95rem; font-weight: 700; padding: 10px 20px;
border-radius: 99px; cursor: pointer; white-space: nowrap; transition: all 0.2s;
}
.tab-btn:hover { border-color: var(--brand); color: var(--ink); }
.tab-btn.active { background: var(--brand-soft); color: var(--brand-ink); border-color: var(--brand-ink); font-weight: 800; }
.tab-content { display: none; animation: fadeIn 0.3s ease; padding: 30px 0 80px; }
.tab-content.active { display: block; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
.sec-head { margin-bottom: 40px; text-align: center; }
.sec-head h2 { font-size: 1.8rem; font-weight: 800; margin-bottom: 12px; }
.sec-head .thesis { color: var(--muted); font-size: 1.1rem; max-width: 66ch; margin: 0 auto; }
.steps-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 40px; margin-top: 20px; }
.step-card {
display: flex; flex-direction: column; gap: 20px; align-items: center;
background: var(--surface); border: 1px solid var(--line); border-radius: 24px; padding: 30px 20px;
}
.step-info { text-align: center; }
.step-num {
display: inline-flex; align-items: center; justify-content: center;
width: 32px; height: 32px; background: var(--brand); color: #fff;
border-radius: 50%; font-size: 1rem; font-weight: 800; margin-bottom: 12px; font-variant-numeric: tabular-nums;
}
.step-info h4 { font-size: 1.1rem; font-weight: 800; margin-bottom: 6px; }
.step-info p { font-size: 0.9rem; color: var(--muted); }
.phone-frame {
width: 260px; height: 540px; border: 12px solid #1a1a1a; border-radius: 36px;
overflow: hidden; position: relative; box-shadow: 0 10px 25px rgba(0,0,0,0.05); background: #f1f3f2;
}
.phone-notch {
position: absolute; top: 0; left: 50%; transform: translateX(-50%);
width: 110px; height: 26px; background: #1a1a1a;
border-bottom-left-radius: 16px; border-bottom-right-radius: 16px; z-index: 2;
}
.phone-screen {
width: 100%; height: 100%; display: flex; align-items: center; justify-content: center;
text-align: center; padding: 20px; color: var(--faint); font-family: var(--mono);
font-size: 0.75rem; word-break: break-all; background-color: var(--surface2);
}
</style>
</head>
<body>
<header class="hero"><div class="wrap">
<span class="kicker">خطة التوتوريال — 34 لقطة</span>
<h1>كيف تستخدم سيرو</h1>
<p class="lede">صفحات شرح تفاعلية تشرح للمستخدم الجديد كل عملية خطوة بخطوة، مدعومة بلقطات شاشة حقيقية من التطبيق.</p>
<p class="meta">تم بناء هذه الصفحة حسب التقرير الشامل — في انتظار إدراج اللقطات النهائية</p>
</div></header>
<div class="wrap">
<div class="tabs">
{tabs_html}
</div>
<div class="tab-contents">
{contents_html}
</div>
</div>
<script>
function showTab(id) {
document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active'));
document.querySelectorAll('.tab-content').forEach(content => content.classList.remove('active'));
document.getElementById('btn-' + id).classList.add('active');
document.getElementById('tab-' + id).classList.add('active');
}
</script>
</body>
</html>
"""
tabs_html = ""
contents_html = ""
for unit in units:
active_class = " active" if unit["id"] == 1 else ""
tabs_html += f'<button id="btn-{unit["id"]}" class="tab-btn{active_class}" onclick="showTab({unit["id"]})">{unit["id"]}. {unit["title"]}</button>\n '
steps_html = ""
for i, step in enumerate(unit["steps"]):
steps_html += f"""
<div class="step-card">
<div class="step-info">
<span class="step-num">{i+1}</span>
<h4>{step['title']}</h4>
<p>{step['desc']}</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">{step['img']}</div>
</div>
</div>"""
contents_html += f"""
<div id="tab-{unit['id']}" class="tab-content{active_class}">
<div class="sec-head">
<h2>الوحدة {unit['id']}: {unit['title']}</h2>
<p class="thesis">{unit['desc']}</p>
</div>
<div class="steps-grid">
{steps_html}
</div>
</div>
"""
final_html = html_template.replace('{tabs_html}', tabs_html).replace('{contents_html}', contents_html)
with open("/Users/hamzaaleghwairyeen/development/App/Siro/siromove.com/tutorial/index.html", "w", encoding="utf-8") as f:
f.write(final_html)
print("Generated HTML successfully.")
+574
View File
@@ -0,0 +1,574 @@
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>كيف تستخدم سيرو — التوتوريال الشامل</title>
<style>
:root{
--bg:#F6F7F5; --surface:#FFFFFF; --surface2:#EEF1EE;
--ink:#1A241F; --muted:#5B6862; --faint:#8B968F;
--line:#E1E5E1; --line2:#D2D8D3;
--brand:#0E7A5F; --brand-ink:#0A5945; --brand-soft:#E4F0EB;
--amber:#9A6B12; --amber-soft:#F6EDDA;
--red:#B3362B; --red-soft:#F7E5E2;
--good:#2E7D4F; --good-soft:#E4F1E8;
--sans:"SF Arabic","Segoe UI",system-ui,-apple-system,"Noto Sans Arabic",Tahoma,sans-serif;
--mono:ui-monospace,"SF Mono",Consolas,monospace;
}
@media (prefers-color-scheme: dark){
:root{
--bg:#0F1512; --surface:#161E19; --surface2:#1C2620;
--ink:#E8EDEA; --muted:#9BA8A1; --faint:#6E7B74;
--line:#26302B; --line2:#32403A;
--brand:#3FBF97; --brand-ink:#8FE0C5; --brand-soft:#15342A;
--amber:#E0AE55; --amber-soft:#33290F;
--red:#E07065; --red-soft:#361A16;
--good:#57C287; --good-soft:#14301F;
}
}
body { margin: 0; padding: 0; background: var(--bg); color: var(--ink); font-family: var(--sans); font-size: 16px; line-height: 1.85; }
* { box-sizing: border-box; }
.wrap { max-width: 1060px; margin: 0 auto; padding: 0 22px; }
h1, h2, h3, h4 { margin: 0; color: var(--ink); line-height: 1.35; text-wrap: balance; }
p { margin: 0; }
.hero { padding: 64px 0 36px; border-bottom: 1px solid var(--line); }
.hero .kicker {
display: inline-block; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.04em;
color: var(--brand-ink); background: var(--brand-soft); border-radius: 99px; padding: 4px 14px;
margin-bottom: 18px;
}
.hero h1 { font-size: clamp(1.7rem, 4.5vw, 2.5rem); font-weight: 800; }
.hero .lede { margin-top: 14px; font-size: 1.05rem; color: var(--muted); max-width: 60ch; }
.hero .meta { margin-top: 16px; font-size: 0.8rem; color: var(--faint); }
.tabs {
display: flex; gap: 8px; overflow-x: auto; padding: 20px 0 10px;
margin-top: 10px; scrollbar-width: none;
}
.tabs::-webkit-scrollbar { display: none; }
.tab-btn {
background: var(--surface); border: 1px solid var(--line); color: var(--muted);
font-family: var(--sans); font-size: 0.95rem; font-weight: 700; padding: 10px 20px;
border-radius: 99px; cursor: pointer; white-space: nowrap; transition: all 0.2s;
}
.tab-btn:hover { border-color: var(--brand); color: var(--ink); }
.tab-btn.active { background: var(--brand-soft); color: var(--brand-ink); border-color: var(--brand-ink); font-weight: 800; }
.tab-content { display: none; animation: fadeIn 0.3s ease; padding: 30px 0 80px; }
.tab-content.active { display: block; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
.sec-head { margin-bottom: 40px; text-align: center; }
.sec-head h2 { font-size: 1.8rem; font-weight: 800; margin-bottom: 12px; }
.sec-head .thesis { color: var(--muted); font-size: 1.1rem; max-width: 66ch; margin: 0 auto; }
.steps-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 40px; margin-top: 20px; }
.step-card {
display: flex; flex-direction: column; gap: 20px; align-items: center;
background: var(--surface); border: 1px solid var(--line); border-radius: 24px; padding: 30px 20px;
}
.step-info { text-align: center; }
.step-num {
display: inline-flex; align-items: center; justify-content: center;
width: 32px; height: 32px; background: var(--brand); color: #fff;
border-radius: 50%; font-size: 1rem; font-weight: 800; margin-bottom: 12px; font-variant-numeric: tabular-nums;
}
.step-info h4 { font-size: 1.1rem; font-weight: 800; margin-bottom: 6px; }
.step-info p { font-size: 0.9rem; color: var(--muted); }
.phone-frame {
width: 260px; height: 540px; border: 12px solid #1a1a1a; border-radius: 36px;
overflow: hidden; position: relative; box-shadow: 0 10px 25px rgba(0,0,0,0.05); background: #f1f3f2;
}
.phone-notch {
position: absolute; top: 0; left: 50%; transform: translateX(-50%);
width: 110px; height: 26px; background: #1a1a1a;
border-bottom-left-radius: 16px; border-bottom-right-radius: 16px; z-index: 2;
}
.phone-screen {
width: 100%; height: 100%; display: flex; align-items: center; justify-content: center;
text-align: center; padding: 20px; color: var(--faint); font-family: var(--mono);
font-size: 0.75rem; word-break: break-all; background-color: var(--surface2);
}
</style>
</head>
<body>
<header class="hero"><div class="wrap">
<span class="kicker">خطة التوتوريال — 34 لقطة</span>
<h1>كيف تستخدم سيرو</h1>
<p class="lede">صفحات شرح تفاعلية تشرح للمستخدم الجديد كل عملية خطوة بخطوة، مدعومة بلقطات شاشة حقيقية من التطبيق.</p>
<p class="meta">تم بناء هذه الصفحة حسب التقرير الشامل — في انتظار إدراج اللقطات النهائية</p>
</div></header>
<div class="wrap">
<div class="tabs">
<button id="btn-1" class="tab-btn active" onclick="showTab(1)">1. التسجيل وإنشاء الحساب</button>
<button id="btn-2" class="tab-btn" onclick="showTab(2)">2. طلب الرحلة</button>
<button id="btn-3" class="tab-btn" onclick="showTab(3)">3. الانتظار والمطابقة</button>
<button id="btn-4" class="tab-btn" onclick="showTab(4)">4. أثناء الرحلة والسلامة</button>
<button id="btn-5" class="tab-btn" onclick="showTab(5)">5. الإلغاء</button>
<button id="btn-6" class="tab-btn" onclick="showTab(6)">6. الدفع والتقييم</button>
<button id="btn-7" class="tab-btn" onclick="showTab(7)">7. مواصلاتي — للطلاب</button>
</div>
<div class="tab-contents">
<div id="tab-1" class="tab-content active">
<div class="sec-head">
<h2>الوحدة 1: التسجيل وإنشاء الحساب</h2>
<p class="thesis">التسجيل يحتاج رقم هاتف فقط — لا بريد إلكتروني إجباري ولا بطاقة دفع. أقل من دقيقة من التحميل حتى أول شاشة خريطة.</p>
</div>
<div class="steps-grid">
<div class="step-card">
<div class="step-info">
<span class="step-num">1</span>
<h4>تحميل التطبيق وفتحه</h4>
<p>شاشة البداية بشعار Siro</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/registration/01_splash_screen.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">2</span>
<h4>شاشات التعريف</h4>
<p>شريحة الـ Onboarding الأولى</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/registration/02_onboarding.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">3</span>
<h4>إدخال رقم الهاتف</h4>
<p>حقل الهاتف مع اختيار الدولة</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/registration/03_phone_number.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">4</span>
<h4>رمز التحقق OTP</h4>
<p>شاشة إدخال الرمز (يصل واتساب/SMS)</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/registration/04_otp.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">5</span>
<h4>إكمال البيانات</h4>
<p>الاسم + البريد (اختياري) ثم «ابدأ»</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/registration/05_complete_profile.png</div>
</div>
</div>
</div>
</div>
<div id="tab-2" class="tab-content">
<div class="sec-head">
<h2>الوحدة 2: طلب الرحلة</h2>
<p class="thesis">السعر المعروض نهائي ومحسوب من الخادم — لا مفاجآت عند الدفع (ما لم تتغير الوجهة أو يزد الانتظار).</p>
</div>
<div class="steps-grid">
<div class="step-card">
<div class="step-info">
<span class="step-num">1</span>
<h4>الخريطة الرئيسية</h4>
<p>الخريطة مع السيارات القريبة تتحرك</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/booking/01_map_main.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">2</span>
<h4>تحديد الوجهة</h4>
<p>شريط البحث + النتائج</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/booking/02_search_destination.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">3</span>
<h4>تأكيد نقطة الانطلاق</h4>
<p>دبوس الانطلاق قابل للسحب</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/booking/03_pickup_pin.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">4</span>
<h4>اختيار فئة السيارة</h4>
<p>قائمة الفئات التسع مع السعر وشارة التوفير</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/booking/04_select_car_type.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">5</span>
<h4>كود الخصم</h4>
<p>حقل البرومو مطبّق على السعر</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/booking/05_promo_code.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">6</span>
<h4>تأكيد الطلب</h4>
<p>زر «اطلب الآن» مع السعر النهائي</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/booking/06_confirm_order.png</div>
</div>
</div>
</div>
</div>
<div id="tab-3" class="tab-content">
<div class="sec-head">
<h2>الوحدة 3: الانتظار والمطابقة</h2>
<p class="thesis">متوسط زمن المطابقة أقل من 90 ثانية. إذا لم يقبل أحد، النظام يقترح تعديلاً بسيطاً على السعر بدل إلغاء طلبك.</p>
</div>
<div class="steps-grid">
<div class="step-card">
<div class="step-info">
<span class="step-num">1</span>
<h4>البحث عن كابتن</h4>
<p>نافذة البحث مع المؤقّت</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/matching/01_searching_captain.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">2</span>
<h4>اقتراح المفاوض الذكي</h4>
<p>حوار رفع السعر بعد 90 ثانية</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/matching/02_smart_negotiator.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">3</span>
<h4>قبول الكابتن</h4>
<p>بطاقة الكابتن: الاسم، الصورة، التقييم، اللوحة</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/matching/03_captain_card.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">4</span>
<h4>الكابتن في الطريق</h4>
<p>الخريطة مع المسار الأصفر والوقت المتوقع</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/matching/04_captain_on_way.png</div>
</div>
</div>
</div>
</div>
<div id="tab-4" class="tab-content">
<div class="sec-head">
<h2>الوحدة 4: أثناء الرحلة والسلامة</h2>
<p class="thesis">تتبع حي للرحلة مع خيارات أمان متقدمة واتصال آمن بالكابتن.</p>
</div>
<div class="steps-grid">
<div class="step-card">
<div class="step-info">
<span class="step-num">1</span>
<h4>وصول الكابتن</h4>
<p>إشعار «الكابتن وصل» ومهلة انتظار 5 دقائق</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/ride/01_captain_arrived.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">2</span>
<h4>بدء الرحلة</h4>
<p>المسار الأزرق + العداد الحي</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/ride/02_ride_started.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">3</span>
<h4>مشاركة الرحلة</h4>
<p>رابط متابعة لطرف ثالث (للأهل)</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/ride/03_share_ride.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">4</span>
<h4>زر الطوارئ SOS</h4>
<p>زر الطوارئ (وهزّ الهاتف 5 مرات)</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/ride/04_sos_button.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">5</span>
<h4>الاتصال بالكابتن</h4>
<p>شاشة المكالمة داخل التطبيق</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/ride/05_in_app_call.png</div>
</div>
</div>
</div>
</div>
<div id="tab-5" class="tab-content">
<div class="sec-head">
<h2>الوحدة 5: الإلغاء</h2>
<p class="thesis">الإلغاء قبل القبول مجاني، وبعد الوصول قد تُطبّق رسوم. السائق يواجه إيقافاً بعد 3 إلغاءات.</p>
</div>
<div class="steps-grid">
<div class="step-card">
<div class="step-info">
<span class="step-num">1</span>
<h4>زر الإلغاء</h4>
<p>مكان الزر أثناء البحث/الانتظار</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/cancel/01_cancel_button.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">2</span>
<h4>اختيار السبب</h4>
<p>قائمة أسباب الإلغاء</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/cancel/02_cancel_reason.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">3</span>
<h4>تأكيد الإلغاء</h4>
<p>رسالة التأكيد + سياسة الرسوم</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/cancel/03_cancel_confirm.png</div>
</div>
</div>
</div>
</div>
<div id="tab-6" class="tab-content">
<div class="sec-head">
<h2>الوحدة 6: الدفع والتقييم</h2>
<p class="thesis">دفع مرن مع نقاط مكافأة للمحفظة، وتقييم يعزز جودة الخدمة.</p>
</div>
<div class="steps-grid">
<div class="step-card">
<div class="step-info">
<span class="step-num">1</span>
<h4>نهاية الرحلة</h4>
<p>شاشة الفاتورة النهائية</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/payment/01_ride_finished.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">2</span>
<h4>طرق الدفع</h4>
<p>كاش/محفظة/بطاقة ووسائل الدفع المحلية</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/payment/02_payment_methods.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">3</span>
<h4>الدفع كاش</h4>
<p>حوار تأكيد الكاش</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/payment/03_cash_confirm.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">4</span>
<h4>الدفع بالمحفظة</h4>
<p>الخصم من الرصيد وعروض الشحن</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/payment/04_wallet_pay.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">5</span>
<h4>تقييم الكابتن</h4>
<p>النجوم + الإكرامية</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/payment/05_rate_captain.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">6</span>
<h4>سجل الرحلات</h4>
<p>قائمة الرحلات السابقة والفواتير</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/payment/06_ride_history.png</div>
</div>
</div>
</div>
</div>
<div id="tab-7" class="tab-content">
<div class="sec-head">
<h2>الوحدة 7: مواصلاتي — للطلاب</h2>
<p class="thesis">خدمة تتبع باصات الجامعات مجاناً مع إمكانية تحويل الطالب لرحلة مدفوعة إذا فاته الباص.</p>
</div>
<div class="steps-grid">
<div class="step-card">
<div class="step-info">
<span class="step-num">1</span>
<h4>اختيار الجامعة</h4>
<p>تبويب مواصلاتي واختيار الجامعة</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/transit/01_select_university.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">2</span>
<h4>تفعيل العضوية</h4>
<p>إدخال الرقم الجامعي للتفعيل الفوري</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/transit/02_activate_student_id.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">3</span>
<h4>استعراض الخطوط</h4>
<p>قائمة الخطوط المعتمدة وجداولها</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/transit/03_transit_lines.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">4</span>
<h4>التتبع الحي</h4>
<p>الباص يتحرك على المسار والمحطات</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/transit/04_live_tracking.png</div>
</div>
</div>
<div class="step-card">
<div class="step-info">
<span class="step-num">5</span>
<h4>فاتك الباص؟</h4>
<p>الزر البارز لطلب سيارة بديلة</p>
</div>
<div class="phone-frame">
<div class="phone-notch"></div>
<div class="phone-screen">tutorial/transit/05_missed_bus.png</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
function showTab(id) {
document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active'));
document.querySelectorAll('.tab-content').forEach(content => content.classList.remove('active'));
document.getElementById('btn-' + id).classList.add('active');
document.getElementById('tab-' + id).classList.add('active');
}
</script>
</body>
</html>