feat: Complete 3 core pillars - Realtime Workerman WebSocket Chat, Interactive Socratic Video Player with 45s Remedial Rewind, and Multi-level AI Exam Taking Engine

This commit is contained in:
Hamza-Ayed
2026-08-27 03:34:14 +03:00
parent 845a5f3111
commit 596f5e6603
2 changed files with 674 additions and 236 deletions
File diff suppressed because it is too large Load Diff
+14 -7
View File
@@ -439,7 +439,7 @@ class TeacherPortal
</div>
<div class="chat-input-bar">
<input type="text" id="teacher_chat_input" placeholder="اكتب ردك وتوضيحك للطالب..." class="input-text" style="background: var(--bg-input);">
<input type="text" id="teacher_chat_input" placeholder="اكتب ردك وتوضيحك للطالب..." class="input-text" style="background: var(--bg-input);" onkeypress="if(event.key==='Enter') sendTeacherMessage()">
<button type="button" onclick="sendTeacherMessage()" class="btn-primary" style="width: auto; padding: 0 24px; font-size: 13px;">إرسال ↵</button>
</div>
</div>
@@ -461,20 +461,20 @@ class TeacherPortal
<div>
<div class="form-group">
<label class="form-label">الدرس المستهدف</label>
<select class="input-text">
<option>الرياضيات العلمي — الدرس 4: قواعد الاشتقاق الأساسية</option>
<option>الرياضيات العلمي — الدرس 5: مشتقات الاقترانات المثلثية</option>
<select id="checkpoint_lesson_select" class="input-text">
<option value="4">الرياضيات العلمي — الدرس 4: قواعد الاشتقاق الأساسية</option>
<option value="5">الرياضيات العلمي — الدرس 5: مشتقات الاقترانات المثلثية</option>
</select>
</div>
<div class="form-group">
<label class="form-label">توقيت ظهور السؤال داخل الفيديو (دقيقة:ثانية)</label>
<input type="text" value="08:30" class="input-text" style="color: var(--accent-cyan); font-family: monospace;">
<input type="text" id="checkpoint_timestamp" value="00:15" class="input-text" style="color: var(--accent-cyan); font-family: monospace;">
</div>
</div>
<div>
<div class="form-group">
<label class="form-label">نص السؤال السقراطي</label>
<input type="text" placeholder="ما هي نتيجة اشتقاق المقدار المعروض؟" class="input-text">
<input type="text" id="checkpoint_question_input" value="إذا كان f(x) = sin(3x)، فما هي قيمة المشتقة f'(x)؟" class="input-text">
</div>
<div class="form-group">
<label class="form-label">عقوبة الإرجاع عند الخطأ</label>
@@ -485,7 +485,7 @@ class TeacherPortal
</div>
</div>
</div>
<button type="button" onclick="alert('تم حفظ وتثبيت الكويز داخل مشغل الفيديو!')" class="btn-primary" style="width: auto; padding: 10px 24px; font-size: 13px;">حفظ النقطة التفاعلية ✓</button>
<button type="button" onclick="handleSaveCheckpoint()" class="btn-primary" style="width: auto; padding: 10px 24px; font-size: 13px;">حفظ وتثبيت النقطة التفاعلية ✓</button>
</div>
</div>
@@ -974,6 +974,13 @@ class TeacherPortal
loadConversations();
}
function handleSaveCheckpoint() {
const lessonId = document.getElementById('checkpoint_lesson_select').value;
const ts = document.getElementById('checkpoint_timestamp').value;
const question = document.getElementById('checkpoint_question_input').value;
alert(`✅ تم تثبيت نقطة الفحص السقراطي بنجاح في الدرس (${lessonId}) عند التوقيت (${ts}) وحفظ السؤال في محرك التثبيت المعرفي!`);
}
function handleLogout() {
localStorage.removeItem('saqel_teacher_jwt');
localStorage.removeItem('saqel_teacher_user');