Fix curriculum grounding for Grade 10: replace calculus fallback with authentic Systems of Equations questions and add self-healing guard

This commit is contained in:
Hamza-Ayed
2026-09-03 13:49:45 +03:00
parent db9004c9ed
commit b41db82537
4 changed files with 120 additions and 8 deletions
@@ -374,8 +374,47 @@ class AiVideoAnalyzerService
];
}
// Safe generic fallback: never inject unrelated advanced topics when
// Gemini is unavailable.
// Grade 10 Mathematics: Systems of Equations (أنظمة المعادلات)
$isEquations = (str_contains($title, 'معادلات') || str_contains($title, 'أنظمة') || str_contains($curriculum['unit'] ?? '', 'معادلات'));
if ($isEquations) {
return [
'timeline_chapters' => [
['start_seconds' => 0, 'end_seconds' => $c1, 'title' => 'مفهوم أنظمة المعادلات ونماذجها الحياتية', 'summary' => 'التعريف بنظام المعادلات واستخدام النماذج الحياتية مثل الأرصاد والفيزياء.'],
['start_seconds' => $c1, 'end_seconds' => $c2, 'title' => 'طرائق الحل الجبري والبياني وبرمجية جيوجبرا', 'summary' => 'حل أنظمة المعادلات بالتعويض والتحليل وتعيين نقاط التقاطع عبر برمجية GeoGebra.'],
['start_seconds' => $c2, 'end_seconds' => $duration, 'title' => 'تطبيقات عملية والتحقق من صحة الحل', 'summary' => 'حل مسائل المنهاج والتأكد من تحقيق قيم x و y لكافة معادلات النظام.']
],
'socratic_checkpoints' => [
[
'timestamp_seconds' => $cp1,
'question_text' => 'ماذا تمثّل نقطة تقاطع منحنيين في المستوى الإحداثي لنظام معادلات؟',
'options' => [
'حل مشترك يُحقق كِلا المعادلتين معاً في آن واحد',
'المسافة الرأسية بين المنحنيين',
'معادلة خط التقارب الأفقي فقط',
'المقطع الصادي لأحد المنحنيين دون الآخر'
],
'correct_index' => 0,
'rewind_seconds' => $rewind,
'explanation' => 'نقطة تقاطع أي منحنيين هندسياً تمثل الزوج المرتب (x, y) الذي يحقق كلتا المعادلتين في آن واحد، وهو حل النظام.'
],
[
'timestamp_seconds' => $cp2,
'question_text' => 'عند حل نظام مكوّن من معادلة خطية ومعادلة تربيعية، ما هو أقصى عدد ممكن من الحلول الحقيقية؟',
'options' => [
'حلّان حقيقيان (نقطتا تقاطع)',
'ثلاثة حلول حقيقية دائماً',
'أربعة حلول حقيقية',
'لا يمكن أن يتقاطعا أبداً'
],
'correct_index' => 0,
'rewind_seconds' => $rewind,
'explanation' => 'المستقيم يقطع القطع المكافئ في نقطتين كحد أقصى (حلان)، أو يمسه في نقطة واحدة (حل واحد)، أو لا يقطعه (لا يوجد حل حقيقي).'
]
]
];
}
// Safe generic fallback: never inject unrelated advanced topics when Gemini is unavailable.
$topics = array_values(array_filter(array_map('strval', $curriculum['core_topics'] ?? [])));
$topic = $topics[0] ?? $title;
$topicTwo = $topics[1] ?? $topic;