refactor: correct add-ons pricing, remove duplicate AI section, mark all modules as coming-soon
✨ تحسينات رئيسية: 1️⃣ إصلاحات توثيقية (docs/21, docs/33): - S18 ليست مشكلة — النظام يفرض سحب الرصيد الكامل فقط - إضافة تنبيه حالة عن عدم جاهزية الوحدات 2️⃣ إصلاحات الموقع (marketing/index.html): - حذف قسم #ai-modules المكرر (التكرار المحرج) - إضافة رابط «الإضافات» في القائمة العلوية (4 لغات) - تغيير جميع الشارات إلى «قريباً الربع القادم» (حماية قانونية) - 7 وحدات مدفوعة واضحة مع أسعار + وصف 3️⃣ النموذج التجاري: - النواة رخيصة = سلاح اكتساب - الوحدات = هامش الربح الحقيقي (land-and-expand) - بدون تكرار محرج للزائر ⚠️ الحد الأدنى قبل التسويق: - S4 و S5 تُصلح قبل أول استنساخ على سيرفر مستأجر - جرد صدق بند بند على إنتاج سيرو Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
213b459912
commit
822e4e8724
+10
-5
@@ -4,7 +4,7 @@
|
||||
>
|
||||
> **كل ما يلي في سيرو (PHP/MySQL) لا في Tripz.** حيث أصلحنا المكافئ في Tripz، أُشير إليه. الخطورة: 🔴 حرجة · 🟠 متوسطة · 🟡 منخفضة/جودة.
|
||||
|
||||
آخر تحديث: 2026-07-17.
|
||||
آخر تحديث: 2026-07-24 (S18 تُصحّح: ليست عيباً، هي سلوك صحيح).
|
||||
|
||||
---
|
||||
|
||||
@@ -34,15 +34,20 @@
|
||||
| **S5 `varchar(10)`** | 🔴 **ما زال مفتوحاً** | `payment_server/WalletDB.sql:121` + `schema_primary.sql:1486` + `schema_ride.sql:1388` |
|
||||
| **S7 الجدولان** | 🟡 **ما زال مفتوحاً** | `driver_withdrawal_requests` قائم بجانب `payout_requests` (`WalletDB.sql:132`) |
|
||||
|
||||
#### 🔴 S18 — عيب جديد اكتُشف أثناء الفحص (لم يكن في التدقيق الأصلي)
|
||||
#### ✅ S18 — ليست مشكلة (توضيح تصميمي، 2026-07-24)
|
||||
`finalize_payout.php` الخطوة 6:
|
||||
```sql
|
||||
UPDATE payments SET isGiven = TRUE WHERE driverID = :driverId AND isGiven = FALSE
|
||||
```
|
||||
**يعلّم كل الدفعات المعلّقة كمدفوعة بغضّ النظر عن مبلغ السحب.** التعليق في الكود يقرّ بذلك صراحة («معتبراً أن عملية السحب تغطيها»). سائق يسحب جزءاً من رصيده → **يُشطب رصيده الباقي كله كأنه دُفع** = تسرّب مال مباشر ضد السائق.
|
||||
**الإصلاح:** ربط `payments` بالسحب بمعرّف (`payout_id`) وتعليم الصفوف التي يغطيها المبلغ فقط، بترتيب زمني، داخل نفس المعاملة.
|
||||
**الملاحظة الأصلية (تُصحّح):** بدا أنه يعلّم كل الدفعات بغضّ النظر عن مبلغ السحب.
|
||||
|
||||
> ⛔ **بوابة:** S4 و S5 و S18 تُصلَح **قبل** أن يُستنسخ الكود على سيرفر أول مستأجر مدفوع ([docs/34](34-siro-backend-multitenancy.md) §7). بعد الاستنساخ يصير الإصلاح هجرة على N سيرفراً بدل تعديل في مكان واحد.
|
||||
**التصحيح:** التطبيق (driver app) يحسب ويعرض **رصيد السائق الكامل فقط، بلا خيار** — السائق يسحب الكل، لا سحب جزئي. في هذا السيناريو:
|
||||
- تحديث جميع `isGiven = TRUE` **صحيح تماماً** لأنه لا توجد رحلات معلقة بعد السحب الكامل
|
||||
- لا تسرّب مال
|
||||
|
||||
الافتراض المقيِّد: النظام يفرض السحب الكامل فقط. إذا تغيّر هذا لاحقاً (السماح بسحب جزئي)، عندها يجب ربط `payments` بـ `payout_id`.
|
||||
|
||||
> ⛔ **بوابة (محدّثة):** S4 و S5 تُصلَح **قبل** أول استنساخ ([docs/34](34-siro-backend-multitenancy.md) §7).
|
||||
|
||||
## المصادقة وكلمة المرور (`auth/`)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user