From f9b55ddf944da107d4c77d38c9cc09e1f303c3c1 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Fri, 24 Jul 2026 05:37:13 +0300 Subject: [PATCH] docs: update siro audit documentation with recent findings --- docs/21-siro-audit.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/21-siro-audit.md b/docs/21-siro-audit.md index f7633d3..e6c9457 100644 --- a/docs/21-siro-audit.md +++ b/docs/21-siro-audit.md @@ -30,8 +30,8 @@ | S2 حجز الرصيد | ✅ **مُصلَح** | `beginTransaction` + `SELECT … FOR UPDATE` + حالة `payout_reserved` + `rollBack` | | S3 رسم 3500 | ✅ **مُصلَح** | الرقم اختفى من مسار السحب كلياً | | S6 OTP على السحب | ✅ **مُصلَح** | `request_payout.php:28,60–72` — OTP إلزامي ويُتحقق من `token_verification_driver` | -| **S4 معاملة في الإنهاء** | 🔴 **ما زال مفتوحاً** | `finalize_payout.php` فيه **صفر `beginTransaction`** مقابل ~6 كتابات متتابعة. الاستثناء يُرمى بلا تراجع → فشل في الخطوة 5 يترك محفظة السائق مخصومة و`siroWallet` بلا قيد عمولة | -| **S5 `varchar(10)`** | 🔴 **ما زال مفتوحاً** | `payment_server/WalletDB.sql:121` + `schema_primary.sql:1486` + `schema_ride.sql:1388` | +| **S4 معاملة في الإنهاء** | ✅ **مُصلَح (2026-07-24)** | `finalize_payout.php` — الكتابات 2–6 داخل `beginTransaction`/`commit` واحدة، مع `rollBack` في `catch`. فُحصت أثناء الإصلاح: `$encryptionHelper` كان يُستعمل داخل الدالة بلا `global` (متغيّر غير مُعرَّف في نطاق الدالة) → كل استدعاء كان يفشل عند الخطوة 1 قبل أي كتابة. أُصلح بإضافة `global $encryptionHelper;` | +| **S5 `varchar(10)`** | ✅ **مُصلَح (2026-07-24)** | `driverWallet`/`siroWallet` في `WalletDB.sql` + `seferWallet` (جدول ثالث لم يكن مذكوراً صراحة، وُجد أثناء الإصلاح) في `schema_primary.sql` + `schema_ride.sql` (نسختان) ← `DECIMAL(12,3)`. هجرتان في `payment_server/migrations/` و`backend/migrations/`. **لم يُصلَح:** `backend/ride/seferWallet/add.php:28` يُدخل `$amount` بلا `is_numeric()` — بند منفصل جديد | | **S7 الجدولان** | 🟡 **ما زال مفتوحاً** | `driver_withdrawal_requests` قائم بجانب `payout_requests` (`WalletDB.sql:132`) | #### ✅ S18 — ليست مشكلة (توضيح تصميمي، 2026-07-24) @@ -47,7 +47,7 @@ UPDATE payments SET isGiven = TRUE WHERE driverID = :driverId AND isGiven = FALS الافتراض المقيِّد: النظام يفرض السحب الكامل فقط. إذا تغيّر هذا لاحقاً (السماح بسحب جزئي)، عندها يجب ربط `payments` بـ `payout_id`. -> ⛔ **بوابة (محدّثة):** S4 و S5 تُصلَح **قبل** أول استنساخ ([docs/34](34-siro-backend-multitenancy.md) §7). +> ✅ **البوابة اجتيزت (2026-07-24):** S4 و S5 مُصلَحان. **بند جديد قبل أول استنساخ:** إضافة `is_numeric($amount)` في `backend/ride/seferWallet/add.php` — لم يكن جزءاً من S4/S5 الأصليين، اكتُشف أثناء إصلاحهما. ## المصادقة وكلمة المرور (`auth/`)