Update: 2026-07-09 01:55:25

This commit is contained in:
Hamza-Ayed
2026-07-09 01:55:25 +03:00
parent ac0c343f18
commit 7dff7b6973
12 changed files with 374 additions and 28 deletions
+68
View File
@@ -10,6 +10,7 @@
require_once __DIR__ . '/../core/bootstrap.php';
require_once __DIR__ . '/../functions.php';
require_once __DIR__ . '/../ride/pricing/pricing_helper.php';
try {
$con = Database::get('main');
@@ -20,6 +21,46 @@ try {
echo "Starting Siro AI Engine v2 (Powered by Pricing Engine)...\n";
// ==========================================
// 0. جدول افتراضات عمولة المنافسين (لميزة "أرباحك أعلى" للسائق)
// ==========================================
$con->exec("
CREATE TABLE IF NOT EXISTS `competitor_commission_assumptions` (
`country_code` VARCHAR(5) NOT NULL,
`competitor_name` VARCHAR(64) NOT NULL,
`commission_pct` DECIMAL(5,2) NOT NULL,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`country_code`, `competitor_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
");
// زرع أولي بأرقام حقيقية زوّدنا فيها — INSERT IGNORE عشان ما نبهدل أي تعديل يدوي لاحق من الأدمن
$commissionSeed = [
// الأردن — كل التطبيقات المذكورة أعطتنا نفس النسبة 23%
['JO', 'com.careem.ae', 23.0],
['JO', 'com.ubercab', 23.0],
['JO', 'com.jeeny.app', 23.0],
['JO', 'com.taxif.passenger', 23.0],
['JO', 'gogo', 23.0],
['JO', 'petra_ride', 23.0],
// سوريا
['SY', 'yallago', 20.0],
['SY', 'zaken', 17.0],
['SY', 'tufaddal', 15.0],
// مصر — استخدمنا الطرف الأدنى من كل مجال أعطانا إياه المستخدم (تحفظاً)
['EG', 'uber', 25.0],
['EG', 'careem', 20.0],
['EG', 'didi', 15.0],
['EG', 'indrive', 14.0],
];
$seedStmt = $con->prepare("
INSERT IGNORE INTO competitor_commission_assumptions (country_code, competitor_name, commission_pct)
VALUES (:cc, :name, :pct)
");
foreach ($commissionSeed as [$cc, $name, $pct]) {
$seedStmt->execute([':cc' => $cc, ':name' => $name, ':pct' => $pct]);
}
// ==========================================
// 1. التسعير الديناميكي بناءً على المعادلات الإحصائية
// ==========================================
@@ -156,6 +197,33 @@ try {
]);
echo " ✅ Updated $countryName pricing in kazan table.\n";
// ── تخزين معاملات المنافس الحالي بـ Redis لميزة "أرباحك أعلى" للسائق ──
// get.php / add_ride.php يقرأوا هذا المفتاح فقط (بدون أي استعلام DB
// وقت إنشاء الرحلة) عبر estimateDriverEarningsAdvantage()
try {
$commStmt = $con->prepare("
SELECT commission_pct FROM competitor_commission_assumptions
WHERE country_code = :cc AND competitor_name = :name LIMIT 1
");
$commStmt->execute([':cc' => $country, ':name' => $bestFormula['competitor_name']]);
$commissionPct = (float)($commStmt->fetchColumn() ?: 20.0);
$driverComparisonData = [
'competitor_name' => $bestFormula['competitor_name'],
'base_fare' => $bestBaseFare,
'km_rate' => $bestKmRate,
'min_rate' => $bestMinRate,
'commission_pct' => $commissionPct,
'currency' => getCurrencyByCountry($countryName),
'updated_at' => date('Y-m-d H:i:s'),
];
// TTL أطول من فترة الجدولة (3 ساعات) بهامش أمان
$redis->setex("pricing:driver_comparison:{$country}", 14400, json_encode($driverComparisonData));
echo " 💰 Cached driver-comparison data for $countryName (commission assumed: {$commissionPct}%)\n";
} catch (Exception $e) {
echo " ⚠️ Failed to cache driver-comparison data: " . $e->getMessage() . "\n";
}
}
}
} catch (Exception $e) {