Implement multi-teacher video selector, in-app curriculum document reader, 15-question Unit 1 exam bank, and interactive science simulation engine

This commit is contained in:
Hamza-Ayed
2026-09-03 15:16:46 +03:00
parent 7e0aae023a
commit c9c03892d1
7 changed files with 1219 additions and 40 deletions
@@ -69,6 +69,29 @@ class AiLessonEnhancerService
محتوى الدرس: {$content}";
}
/**
* Builds an expert AI prompt to generate standalone HTML5/Canvas interactive lab simulations
* for science and physics lessons.
*/
public static function buildSimulationPrompt(string $title, string $subject, string $content): string
{
return "أنت مهندس برمجيات تعليمية ومطور محاكيات فيزيائية تفاعلية (HTML5 Canvas Interactive Simulation Specialist).
المطلوب: توليد كود صفحة HTML5 كاملة ومستقلة تماماً (تتضمن CSS مدمج وجافاسكربت نقي بدون أي مكتبات خارجية) لتمثيل تجربة معملية تفاعلية للموضوع التالي:
الموضوع: {$title}
المادة: {$subject}
المحتوى والنتاجات العلمية:
{$content}
المعايير الصارمة للتوليد:
1. التصميم: مظهر داكن فاخر (Dark OLED Theme: #06090f, #0d111a) بهوية أبل كوبرتينو وألوان صَقِل (Cyan #00f5d4, Amber #ffd166, Emerald #10b981).
2. التفاعلية: استخدام HTML5 Canvas مع متحكمات انزلاقية (Sliders) تتيح للطالب تغيير المتغيرات الفيزيائية (الكتلة، القوة، الزاوية، السرعة...).
3. الحسابات الحية: عرض النتائج الرياضية والمعادلات والقوانين فورياً مع تحديث الرسم البياني على الكانفاس في كل إطار.
4. التحدي السقراطي: صندوق تحدي سقراطي يطلب من الطالب تجربة حالة خاصة (مثل: ماذا يحدث عند مضاعفة القوة أو جعل الزاوية 180 درجة؟).
5. اللغة: واجهة عربية كاملة من اليمين إلى اليسار (dir='rtl').
6. يجب أن يكون الناتج كود HTML خالص فقط صالح للتضمين الفوري داخل iframe أو WebView.";
}
private static function callGemini(string $prompt): ?array
{
$apiKey = Env::get('GEMINI_API_KEY') ?: getenv('GEMINI_API_KEY');