diff --git a/backend/bot/cron_ai_engine.php b/backend/bot/cron_ai_engine.php index a181d44a..888d3f9c 100644 --- a/backend/bot/cron_ai_engine.php +++ b/backend/bot/cron_ai_engine.php @@ -73,9 +73,15 @@ try { $newAwfarPrice = round($newSpeedPrice * 0.85, 3); // أسعار الدقائق - $newNormalMin = round($newSpeedPrice / 4, 3); - $newPeakMin = round($newNormalMin * 1.15, 3); - $newLateMin = round($newNormalMin * 1.25, 3); + if ($country === 'JO') { + $newNormalMin = 0.06; + $newPeakMin = 0.07; + $newLateMin = 0.08; + } else { + $newNormalMin = round($newSpeedPrice / 4, 3); + $newPeakMin = round($newNormalMin * 1.15, 3); + $newLateMin = round($newNormalMin * 1.25, 3); + } $updateSql = "UPDATE kazan SET speedPrice = :speedPrice, diff --git a/backend/bot/cron_empty_results_to_db.php b/backend/bot/cron_empty_results_to_db.php index a9f47a60..4e2826c9 100644 --- a/backend/bot/cron_empty_results_to_db.php +++ b/backend/bot/cron_empty_results_to_db.php @@ -91,11 +91,12 @@ foreach ($data as $row) { $startLng = $resultData['start_lng'] ?? null; $endLat = $resultData['end_lat'] ?? null; $endLng = $resultData['end_lng'] ?? null; - + $countryCode = $row['country_code'] ?? 'JO'; // Default + // --- OSRM Integration (Dynamic Distance & Duration) --- require_once __DIR__ . '/../core/osrm_routing.php'; if ($startLat && $endLat && (!$durationMin || $durationMin <= 0)) { - $osrmResult = getOsrmRouteDetails($startLat, $startLng, $endLat, $endLng); + $osrmResult = getOsrmRouteDetails($startLat, $startLng, $endLat, $endLng, $countryCode); if ($osrmResult) { $distanceKm = $osrmResult['distance_km']; // Override with accurate OSRM distance $durationMin = $osrmResult['duration_min']; diff --git a/backend/bot/worker.php b/backend/bot/worker.php index 4984cb73..a2b2b171 100644 --- a/backend/bot/worker.php +++ b/backend/bot/worker.php @@ -135,7 +135,7 @@ if ($method === 'GET') { require_once __DIR__ . '/../core/osrm_routing.php'; $duration_min = 0; if ($start_lat != 0 && $end_lat != 0) { - $osrmResult = getOsrmRouteDetails($start_lat, $start_lng, $end_lat, $end_lng); + $osrmResult = getOsrmRouteDetails($start_lat, $start_lng, $end_lat, $end_lng, $country_code); if ($osrmResult) { $distance_km = $osrmResult['distance_km']; // Override with accurate OSRM distance $duration_min = $osrmResult['duration_min']; diff --git a/backend/core/osrm_routing.php b/backend/core/osrm_routing.php index 9d380510..e4dc0845 100644 --- a/backend/core/osrm_routing.php +++ b/backend/core/osrm_routing.php @@ -13,15 +13,27 @@ * @param float $startLng * @param float $endLat * @param float $endLng + * @param string $countryCode (e.g. 'JO', 'SY', 'EG') * @return array|null Returns ['distance_km' => float, 'duration_min' => float] or null on failure. */ -function getOsrmRouteDetails($startLat, $startLng, $endLat, $endLng) { +function getOsrmRouteDetails($startLat, $startLng, $endLat, $endLng, $countryCode = 'JO') { // Format: longitude,latitude $coordinates = "{$startLng},{$startLat};{$endLng},{$endLat}"; - // Using public demo server. Note: Has rate limits. - // For production, highly recommended to use: "http://your-own-osrm-server.com:5000" - $osrmBaseUrl = "http://router.project-osrm.org"; + // Select Intaleq/Siro OSRM server based on country + switch (strtoupper($countryCode)) { + case 'SY': + $osrmBaseUrl = "https://routes-syria.siromove.com"; + break; + case 'EG': + $osrmBaseUrl = "https://routes-egypt.siromove.com"; + break; + case 'JO': + default: + $osrmBaseUrl = "https://routesjo.intaleq.xyz"; + break; + } + $url = "{$osrmBaseUrl}/route/v1/driving/{$coordinates}?overview=false"; $ch = curl_init();