Update: 2026-07-02 05:27:04

This commit is contained in:
Hamza-Ayed
2026-07-02 05:27:05 +03:00
parent d2ce4bdb16
commit 05d047d871
25 changed files with 1625 additions and 85 deletions
+57 -1
View File
@@ -72,6 +72,62 @@ class SiroGeminiService {
}
";
return $this->callGemini($prompt, $model);
}
/**
* يُولّد إشعاراً مخصصاً لحدث دخول الجيوفينس بناءً على بيانات أسعار حقيقية.
*
* @param string $zoneName اسم منطقة السياج الجغرافي
* @param string $countryCode رمز الدولة (SY, JO, EG, IQ)
* @param float $savingsPct نسبة التوفير (مثال: 8.5)
* @param string $topCompetitor اسم أبرز منافس في المنطقة
* @param string $model
* @return array|null
*/
public function generateGeofenceMessage(
string $zoneName,
string $countryCode,
float $savingsPct,
string $topCompetitor = 'كريم',
string $model = 'gemini-flash-lite-latest'
): ?array {
if (!$this->apiKey) return null;
$dialect = match (strtoupper($countryCode)) {
'SY' => 'السورية الشامية',
'JO' => 'الأردنية',
'EG' => 'المصرية العامية',
'IQ' => 'العراقية',
default => 'العربية الفصحى'
};
$savingsFormatted = number_format($savingsPct, 1);
$prompt = "
أنت كاتب إشعارات تسويقية ذكية لتطبيق Siro لخدمات نقل الركاب.
المستخدم الآن موجود بالقرب من '$zoneName'.
سعر سيرو أقل بـ $savingsFormatted% من $topCompetitor وبقية التطبيقات في هذه المنطقة.
المطلوب: اكتب إشعاراً push قصيراً جداً (عنوان + جسم) باللهجة $dialect.
- العنوان: لا يتجاوز 5 كلمات، مثير للاهتمام
- الجسم: لا يتجاوز 12 كلمة، يذكر التوفير الفعلي ويحفّز على الطلب الآن
- اجعله طبيعياً كأنه يكتبه شخص حقيقي وليس روبوت
الخرج (JSON فقط، بدون أي شرح):
{
\"push_title\": \"...\",
\"push_body\": \"...\"
}
";
return $this->callGemini($prompt, $model);
}
/**
* Helper: يُرسل prompt لـ Gemini ويُعيد JSON مُفكَّك
*/
private function callGemini(string $prompt, string $model): ?array {
$apiUrl = $this->baseUrl . $model . ":generateContent?key=" . $this->apiKey;
$payload = [
@@ -95,7 +151,7 @@ class SiroGeminiService {
]);
$response = curl_exec($ch);
$curlErr = curl_error($ch);
$curlErr = curl_error($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);