feat: integrate seasonal surge multipliers and grid-specific commission discounts into pricing logic
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user