Files
Siro/backend/bot/cron_seasonal_pricing.php
2026-06-22 00:31:29 +03:00

77 lines
2.3 KiB
PHP

<?php
/**
* cron_seasonal_pricing.php
* يضبط الأسعار بشكل موسمي (مثال: وقت الإفطار في رمضان، الأعياد)
* ويقارن سرعة وصول السائقين (ETA Benchmark) إذا توفرت بيانات
*/
require_once __DIR__ . '/../core/bootstrap.php';
require_once __DIR__ . '/../functions.php';
try {
$con = Database::get('main');
$redis = getRedisConnection();
} catch (Exception $e) {
die("Connection failed: " . $e->getMessage() . "\n");
}
$countries = ['SY' => 'Asia/Damascus', 'JO' => 'Asia/Amman', 'EG' => 'Africa/Cairo', 'IQ' => 'Asia/Baghdad'];
// Simulated Calendar of Events
$seasons = [
'ramadan_iftar' => [
'is_active' => true,
'start_hour' => 18,
'end_hour' => 20,
'modifier' => 1.25 // 25% surge during Iftar
],
'eid' => [
'is_active' => false,
'start_hour' => 0,
'end_hour' => 24,
'modifier' => 1.15
],
'severe_weather' => [
'is_active' => false, // Can be toggled manually or via Weather API
'start_hour' => 0,
'end_hour' => 24,
'modifier' => 1.30
]
];
foreach ($countries as $code => $timezone) {
date_default_timezone_set($timezone);
$currentHour = (int)date('H');
$activeMultiplier = 1.0;
$activeReason = null;
foreach ($seasons as $seasonName => $rules) {
if ($rules['is_active'] && $currentHour >= $rules['start_hour'] && $currentHour < $rules['end_hour']) {
$activeMultiplier = max($activeMultiplier, $rules['modifier']);
$activeReason = $seasonName;
}
}
$seasonalKey = "surge:seasonal:{$code}";
if ($activeMultiplier > 1.0) {
$data = [
'multiplier' => $activeMultiplier,
'reason' => $activeReason,
'timestamp' => date('Y-m-d H:i:s')
];
$redis->setex($seasonalKey, 3600, json_encode($data)); // Expires in 1 hour
echo "[$code] Applied Seasonal Pricing: $activeMultiplier x ($activeReason)\n";
} else {
$redis->del($seasonalKey);
echo "[$code] No active seasonal pricing.\n";
}
// --- Point 16: ETA Benchmarking Placeholder ---
// If we had a cron that pulled Google Distance Matrix ETAs vs Competitor ETAs, we'd log it here.
// echo "[$code] ETA Benchmark recorded.\n";
}
echo "Done.\n";