Skip to Content

الإحماء الذهني

الإحماء الذهني هو نشاط قائم على قواعد محددة وحتمي النتائج تماماً، يمارسه الطالب لمدة ثابتة قدرها 60 ثانية في بداية جلسة تدريب. هدفه الوحيد هو تهيئة الانتباه والتحكم في الاندفاعية والتعرف على الأنماط والذاكرة العاملة، وهي الموارد المعرفية التي تعتمد عليها القراءة. لا يتصل الإحماء بأي شكل بقياس مهارات القراءة.

للتدريب فقط (R12 Q10، تغيير جذري). لم يعد الإحماء بوابةً تسبق كل جلسة قراءة، وهو ممنوع قبل أي تقييم (BOY/MOY/EOY/الفحص/ORF/CBM/التأكيدي). لا يعمل إلا داخل جلسة TRAINING أو INTERVENTION_PRACTICE. تفشل دالة createWarmupSession بإغلاق آمن — يُعيد POST /api/warmup/sessions رمز 422 لأي sessionType آخر (session_scope=TRAINING_SESSION_ONLY، assessment_allowed=false). الوحدة ثابتة عند 60 ثانية؛ وقد طُويت خطة الـ3 إلى 5 دقائق متعددة المراحل السابقة.

ما الإحماء وما ليس إحماءً

الإحماء الذهني معزول تماماً عن حلقة القياس. لا يحسب قيمة θ (تقدير قدرة الطالب) ولا يلمسها، ولا يُصدر حدث إتقان، ولا يمنح نقاط XP، ولا يكتب في أي جدول قياس أو قرار. هذه قاعدة معمارية صارمة (V-5 + G-ISO). يُسمح للإحماء بالظهور في تجربة الطالب تحديداً لأنه قائم على قواعد وحتمي النتائج؛ وهو الاستثناء الصريح من مبدأ “لا ذكاء اصطناعي توليدي في تجربة الطالب”.

يرى الطالب أشكالاً وألواناً ومسارات وأنماطاً، ولا يرى أحرفاً أو كلمات أو أرقاماً قط. يتحقق اختبار lint:no-llm-in-measurement واختبار عزل الاستيراد test:isolation:warmup في بيئة CI من أنه لا يوجد أي مسار كودي من وحدة الإحماء يصل إلى جداول القياس.

بيانات الجاهزية التي يُنتجها الإحماء (معدل الدقة، أوقات الاستجابة، مدى الذاكرة) مُخزَّنة في جداول إحماء معزولة وتُستخدم فقط بوصفها إشارة جاهزية، ولا تُغذَّى أبداً في محرك القرار.

عشرة قوالب واثنان وثلاثون إعداداً للصف

يمتلك الإحماء طبقتين من الإعداد:

الطبقةالمحتوى
10 قوالب من المستوى الأول (COG-01..COG-10)مخططات تمارين عامة تُتحقَّق منها عبر JSON Schema 2020-12: مطابقة مكانية، وتسلسل ألوان، ومدى ذاكرة، وإكمال أنماط، وتتبع بصري، وغيرها
32 إعداداً للصف من المستوى الثاني (24 إعداداً أساسياً عبر 8 قوالب × الصفوف 1-4، بالإضافة إلى 8 إعدادات نهائية لـCOG-05/06 أضافها R12 Q10)حدود الصعوبة ووسوم الأصول ومدة دورات الجلسة لكل صف: القيم التي تجعل تمرين COG-03 مناسباً لطالب الصف الأول مقارنةً بطالب الصف الرابع

تُقرأ الإعدادات من قاعدة البيانات عند إنشاء الجلسة؛ المحرك نقي (لا وصول إلى قاعدة البيانات، لا ساعة، لا مصدر عشوائية سوى PRNG المُبذَّر). جميع القوالب العشرة نشطة الآن. أغلق R12 Q10 البند FU-41: سُلِّمت الإعدادات النهائية لكل صف لقالبَي COG-05 (المطابقة) وCOG-06 (التتبع البصري) — فأصبح كلا القالبين isActive=true مع إضافة 8 إعدادات صف جديدة (COG-G{1..4}-MATCHING / -VISUAL-TRACKING) تحمل أعداد العناصر القابلة للقراءة آلياً (numberOfVisualElements، pairCount، movingObjectsCount، targetCount، distractorCount، pathNodesCount، crossingCount، occlusionCount، speedChangeCount) وعقود القوالب TPL-COG05-* / TPL-COG06-*. يُبذِّر catalog-seed.ts الآن 10 قوالب + 32 إعداد صف نشط (24 سابقاً + 8 جديدة).

الحتمية والبذرة

تحصل كل جلسة إحماء على عدد صحيح seed لحظة الإنشاء. هذه البذرة هي مصدر العشوائية الوحيد الذي يُمرَّر إلى المحرك. PRNG الداخلي (mulberry32) يُبذَّر بـmixSeed(seed, sequenceIndex) بحيث:

  • يُنتج نفس (templateId, grade, difficulty, seed, sequenceIndex) دائماً مخرجات متطابقة بايت بايت،
  • يمكن لنقطة نهاية الإعادة (POST /api/admin/warmup/dry-run-replay) التحقق من هذه الخاصية عند الطلب (V-6).

لا يُستدعى Date.now() ولا Math.random() داخل المحرك إطلاقاً.

دورة حياة الجلسة والقابلية للاستئناف

الخطوةنقطة النهايةما يحدث
الفتحPOST /api/warmup/sessionsإنشاء جلسة لـ(studentId, sessionType, grade)؛ يجب أن يكون sessionType إما TRAINING | INTERVENTION_PRACTICE (إغلاق آمن R12 Q10 — وإلا 422)؛ يُعيد أول نموذج تمرين وstateToken
تسجيل حدثPOST /api/warmup/sessions/{id}/eventsتسجيل started / submitted / advanced؛ الخادم يُكمل الجلسة تلقائياً عند بلوغ حد الـ60 ثانية
الاستئنافGET /api/warmup/sessions/{id}/resumeإعادة تمرين sequenceIndex المحفوظ حتمياً؛ يُعيد المحرك توليده من البذرة ذاتها، ولا تُعدَّل أي حالة (FR-WARM-6 / Q-SYNC-10)
الإكمالPOST /api/warmup/sessions/{id}/completeالإغلاق بـcompleted أو skipped؛ كتابة بيانات الجاهزية النهائية؛ إشارة cacheClear: true للواجهة
قراءات مرجعيةGET /api/warmup/templates/{templateId}، GET /api/warmup/grade-configs?grade=قراءات كتالوج لعرض الواجهة

مرونة ذاكرة المتصفح

يُخزِّن stateToken (وهو رمز HMAC) في استجابة الجلسة في localStorage من قِبل الواجهة. إذا أعاد متصفح الطالب التحميل، أو تبدَّل التطبيق، أو قُفل الجهاز، يمكن للواجهة استدعاء GET /api/warmup/sessions/{id}/resume بالرمز المُخزَّن لإعادة توليد التمرين الدقيق عند sequenceIndex الحالي دون أي انتقال. يُنفِّذ هذا متطلب مرونة ذاكرة المتصفح Q-SYNC-10 لجميع تدفقات الطالب.

حد الـ60 ثانية

MAX_WARMUP_MS = 60_000 ms (60 ثانية، R12 Q10). يُطبَّق هذا الحد من جانب الخادم وبصمت؛ لا يرى الطالب عداد تنازلياً. عند اكتشاف الخادم بلوغ الحد أثناء معالجة حدث submitted، يُكمِّل الجلسة تلقائياً. هذا هو السقف الصارم للوحدة غير اللغوية الواحدة — وقد طُويت خطة المراحل المتعددة السابقة (إحماء/أساسي/إعادة ضبط/إغلاق ذات الخمس دقائق) في هذا الحد الواحد عند 60 ثانية.

التخطي مجاني دائماً من العقوبة

نتيجة skipped في POST /api/warmup/sessions/{id}/complete لا تكتب أي علامة تخلٍّ، ولا تُفعِّل متطلب إعادة محاولة، ولا تؤثر على أي شيء في قياس الطالب أو حالة التلعيب (FR-WARM-1).

لا نص في بيانات التمرين

وحدة no-text-guard داخل المحرك تفحص كل سلسلة مُعرَّضة في حمولة data للتمرين. إذا ظهر أي حرف عربي أو لاتيني، أو أي رقم، يفشل الطلب بإغلاق (500) بدلاً من تقديم الحمولة الملوَّثة. بيانات التمرين تحمل مراجع معرِّفات أصول فقط؛ ملفات SVG/الصور الفعلية يُحلِّلها مُصيِّر الواجهة، لا الخادم.

الإلحاق الحصري

صفوف warmup_session_event وwarmup_telemetry للإنشاء فقط. رأس الجلسة (warmup_session) قابل للتعديل مع ظل تاريخي. يتبع هذا اتفاقية الإلحاق الحصري على مستوى المنصة التي يُطبِّقها lint:no-update-on-audit-tables.

الصلاحيات

مسارات دورة الحياة (create / resume / events / complete) يخدمها الطالب نفسه: يحمل STUDENT صلاحية USE_DIAGNOSTIC_ENGINE ولا يجوز له تشغيل إلا إحماءه هو فقط (تقييد نطاق الطالب نفسه — body.studentId === ctx.userId). يحتفظ المعلمون والإداريون بنطاق ClassTeacher / RUN_BACKOFFICE (مثلاً جلسة يقودها المعلم أو تُنسَّق متزامنةً وتُعرَض على شاشة الطفل). أما القراءات المرجعية (GET .../templates/{templateId}، GET .../grade-configs) فتبقى للمعلم/الإداري فقط. تتطلب نقطة النهاية الإدارية dry-run-replay صلاحية RUN_BACKOFFICE. جميع المسارات مُقيَّدة بالمستأجر: تُعيد قراءات المنظمات الأخرى 404.

صفحات ذات صلة