Compare commits

2 Commits
Author SHA1 Message Date
Hamza-Ayed d7f723c735 Update: 2026-07-05 17:49:26 2026-07-05 17:49:26 +03:00
Hamza-Ayed bc44c1cd82 Update: 2026-07-05 17:46:21 2026-07-05 17:46:21 +03:00
2 changed files with 62 additions and 1 deletions
@@ -312,4 +312,65 @@ class SiroGeminiService {
return null;
}
public function evaluateTelegramForReporting(array $messages, string $model = 'gemini-flash-lite-latest'): ?string {
if (!$this->apiKey || empty($messages)) return null;
$messagesJson = json_encode($messages, JSON_UNESCAPED_UNICODE);
$prompt = "
أنت محلل بيانات استخباراتية للسوق لتطبيق 'سيرو' لنقل الركاب.
إليك مجموعة من الرسائل التي جمعها الروبوت الخاص بنا من قنوات ومجموعات السائقين على تليغرام اليوم:
$messagesJson
المطلوب منك:
1. قراءة جميع هذه الرسائل واستخراج أي شكاوى، أسئلة، أو نقاشات تتعلق بـ (تطبيقات النقل الذكي مثل كريم، أوبر، جيني، يلاغو، تكسي إف، أسعار المحروقات، مشاكل التطبيقات، الإضرابات).
ملاحظة هامة عن بنية البيانات:
- كل رسالة تبدأ بـ [TELEGRAM]: هي عبارة عن رسالة مرسلة في مجموعة تليغرام.
2. تلخيص أهم هذه النقاشات في تقرير قصير ومفيد (News Report).
3. تجاهل رسائل الانضمام للمجموعات، الملصقات، الإعلانات العشوائية، أو الرسائل القصيرة جداً التي لا تحتوي على معنى مفيد للسوق.
هام جداً:
- يجب أن يكون التقرير باللغة العربية بالكامل.
- يجب أن تغلف التقرير بالكامل بوسم <div dir=\"rtl\" align=\"right\"> في البداية و </div> في النهاية لضمان القراءة من اليمين لليسار.
- استخدم <h3> للعناوين و <ul> للقوائم داخل التقرير.
- لا تقم بتضمين علامات ```html في المخرجات.
إذا لم يكن هناك أي شيء مفيد، اكتب فقط: <div dir=\"rtl\" align=\"right\"><p>لا توجد بيانات مفيدة في هذه الدفعة.</p></div>
";
$url = $this->baseUrl . "{$model}:generateContent?key={$this->apiKey}";
$postData = [
'contents' => [
[
'parts' => [
['text' => $prompt]
]
]
],
'generationConfig' => [
'temperature' => 0.5,
'maxOutputTokens' => 1500
]
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
$data = json_decode($response, true);
$text = $data['candidates'][0]['content']['parts'][0]['text'] ?? '';
return trim(preg_replace('/```html|```/', '', $text));
}
return null;
}
}
@@ -78,7 +78,7 @@ if (empty($allMessages)) {
echo "[+] Collected " . count($allMessages) . " messages. Sending to Gemini AI for analysis...\n";
$gemini = new SiroGeminiService();
$reportHtml = $gemini->evaluatePostsForReporting($allMessages);
$reportHtml = $gemini->evaluateTelegramForReporting($allMessages);
if ($reportHtml && strpos($reportHtml, 'لا توجد بيانات مفيدة') === false) {
echo "[+] AI generated a useful report. Saving to DB...\n";