feat: integrate seasonal surge multipliers and grid-specific commission discounts into pricing logic

This commit is contained in:
Hamza-Ayed
2026-07-08 23:23:44 +03:00
parent 21877153eb
commit d452f9baa9
3 changed files with 67 additions and 12 deletions
+25
View File
@@ -89,6 +89,7 @@ try {
// 3. تحديد فرص الذروة
$opportunities = [];
$gridSurgeZones = [];
$gridSurgeZonesByCountry = [];
foreach ($zones as $key => &$zone) {
$zone['opportunity'] = (
@@ -118,6 +119,15 @@ try {
// حفظ المنطقة مع المضاعف المقترح في Redis (للقراءة من get.php بعدين)
$gridSurgeZones[$key] = $suggestedMultiplier;
// نفس البيانات مجمّعة حسب الدولة — يقرأها get_surge_heatmap.php،
// winback_hotspot_targets.php، و cron_kazan_adjuster.php كخريطة
// grid_id → multiplier لكل دولة على حدة
$countryCode = $zone['country_code'];
if (!isset($gridSurgeZonesByCountry[$countryCode])) {
$gridSurgeZonesByCountry[$countryCode] = [];
}
$gridSurgeZonesByCountry[$countryCode][$key] = $suggestedMultiplier;
}
}
unset($zone);
@@ -137,6 +147,21 @@ try {
}
}
// 5. تخزين/مسح النسخة المقسّمة حسب الدولة — نفس مفتاح surge:opportunities:{CC}
// اللي يقرأه get_surge_heatmap.php و winback_hotspot_targets.php و cron_kazan_adjuster.php
if (isset($redis) && $redis !== null) {
$knownCountries = ['SY', 'JO', 'EG', 'IQ'];
foreach ($knownCountries as $cc) {
$countryKey = "surge:opportunities:{$cc}";
if (!empty($gridSurgeZonesByCountry[$cc])) {
$redis->setex($countryKey, 600, json_encode($gridSurgeZonesByCountry[$cc]));
echo "[".date('Y-m-d H:i:s')."] [$cc] Stored ".count($gridSurgeZonesByCountry[$cc])." surge zones.\n";
} else {
$redis->del($countryKey);
}
}
}
echo "[".date('Y-m-d H:i:s')."] cron_surge_opportunity completed successfully.\n";
} catch (Exception $e) {