Skip to Content

حزم التدخل

عندما يكون للطالب ملف تعليمي نشط، تقوم وحدة modules/bundle بخطوة واحدة: تبحث عن الملف في خريطة حتمية من 21 صفًا وتُعيد إمّا حزمة تدخل واحدة محدَّدة بالاسم أو ناتج توجيه/إجراء من غير الحزم. وفق R12 Tier-D، فإن 7 من صفوف الخريطة الـ 21 (MAP-000/001/002/003/018/019/020) تُحَلّ إلى كائن من غير الحزم بقيمة recommended_bundle_id = NULL — عملية مراقبة، أو خيار صيانة/إثراء، أو إجراء دعم خفيف، أو وحدة دعم، أو حارس توجيه، أو كائن غير نشط مستقبلًا. وحدها صفوف MAP-004..017 تُعيد حزمة حقيقية تكتب bundle_assignment. ثم يقرر المعلم ما إذا كان سيُفعِّلها. لا يصل شيء إلى الطالب حتى يتصرف المعلم (V-12).

الكتالوج

كتالوج الحزم هو 14 حزمة تدخل + 7 كائنات مُعاد تصنيفها من غير الحزم = 23 صفًا فعليًا في bundle_definition (16 صفًا من نوع الحزمة — بما فيها صفوف متغيّرات VOCAB_SYNTAX_MORPH الثلاثة — إضافةً إلى 7 كائنات من غير الحزم). يحمل كل صف تعداد BundleObjectType (9 قيم)؛ وحدها صفوف INTERVENTION_BUNDLE / COMPOSITE_SEQUENCE_PLAN / COMPOSITE_INTERVENTION_BUNDLE تكتب bundle_assignment عند التفعيل. الحزم هي عناصر كتالوج مغلق محدَّدة بـ bundleId نصي. فهي ليست مُولَّدة، وليست حرة الشكل، وليست خاصة بطالب. ما يتغير لكل طالب هو مستوى السقالة المعيَّن لكل مهارة ضمن تلك الحزمة.

الكتالوج مُصدَر بإصدارات وفق مبدأ النشر ثم التجميد: بمجرد نشر إصدار الكتالوج لا يُعدَّل أبدًا. نقطة نهاية إعادة التشغيل الجافة V-6 تتيح معاينة تأثير تغيير الكتالوج على التوصيات الموجودة قبل النشر.

من الملف إلى الحزمة: الخريطة

خريطة profile_bundle_map ذات الـ 21 صفًا مُفهرَسة على (primary_profile_code, access_driver | comprehension_subprofile | modifier_driver). عمود المحرِّك الإضافي يُضيق الحزمة المختارة للملفات التي لها أنواع فرعية تعليمية متمايزة.

الصف MAP-000 هو حالة التوقف. صف الحزمة الحارسة NO_BUNDLE_SYSTEM_GUARD مُلغى (D-015، GAP-021)؛ وقد صار MAP-000 كائن ROUTING_GUARD. عندما لا يكون للطالب ملف نشط، أو حالة حارس DATA_INCOMPLETE، أو مهارة محور بنتيجة do_not_decide_yet، تُعيد الخريطة recommended_bundle_id = NULL، وobject_type = ROUTING_GUARD، وrouting_state = BLOCKED_MISSING_EVIDENCE، وrecommendation_status = blocked_insufficient_evidence، مع next_recommended_data_action يُسمِّي إجراء البيانات المطلوب تحديدًا. لا تُوصى أي حزمة ولا يوجد مسار تجاوز.

MAP-000 هو توقف صارم. لم يعد صف حزمة بديلة، بل صار ناتج توجيه بحزمة قابلة للإبطال (NULL). يُظهر فقط الإجراء التالي للبيانات، وليس حزمة. لا يتجاوزه أي رمز تجاوز. إجراء المعلم هو إكمال خطوة جمع البيانات المحددة، وليس تفعيل خطة بديلة.

نموذج المسار المترابط

كل حزمة موصى بها تتكون من ثلاثة أجزاء:

الجزءالدورالقاعدة
المحورمحور التركيز الأساسي للدورةيعالج مجموعة المهارة الأساسية؛ دائمًا أكبر نطاق تخصيص
الخيوط الداعمة (1–2)مرتبطة بالمحورتعالج مهارات مرتبطة بالمحور؛ 2 كحد أقصى
جسر الأصولجسر قائم على نقطة قوةيبني على قوة موثَّقة؛ not_enough_evidence عند غياب بيانات الدعم

R12 Tier-D (D-003) — تغيّر نموذج الجرعة. أُلغيت التقسيمات ذات النسب المئوية الثابتة لكل جلسة. صارت الجرعة تُعبَّر عنها بـ نطاقات تخصيص تراكمية عبر الدورة على امتداد دورة التدخل (وصفتان رئيسيتان في ورقة Q11 رقم 07)، وتُخزَّن عبر عمود cycle_allocation_model في bundle_definition. النسب الثابتة القديمة 40–60% / 25–35% / 10–15% هي النموذج القديم — للتوضيح فقط.

قيد CHECK القديم على dosageSplit JSONB (المجموع == 100 + كون المحور الأكبر صارمًا) في قاعدة البيانات مُسقَط. صار المحرك (threaded-path.ts) يتحقق من أن نطاق المحور هو الأكبر (dosageSplitWellFormed القائم على النطاقات)، لا من قيد CHECK يفرض أكبرية نسبة ثابتة. واختبار CI test:ibc:weights (= test:qa:020) صار يتحقق من ثابت “نطاق المحور هو الأكبر تراكميًا عبر الدورة”، لا من المجموع == 100.

مستوى السقالة

يُعيَّن مستوى السقالة لكل (طالب × مهارة × حزمة × نوع مهمة) وليس لكل طالب وليس لكل حزمة. قد يكون للطالب Level_1_Foundation على مهارة واحدة ضمن حزمة وLevel_2_Targeted على مهارة أخرى.

المستوىالمعرِّف
أساسيLevel_1_Foundation
مستهدَفLevel_2_Targeted
استقلاليةLevel_3_Independence

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

تعديلات مستوى السقالة تستخدم قاعدة التجاوز OVR_SCAFFOLD مع reasonCode من كتالوج الـ 9 رموز. مستوى RTI موجود في forbidden_fields لكل تجاوز ولا يُكتب أبدًا من خلال أي نقطة نهاية للحزمة.

دورة حياة تعيين الحزمة

يُكتب bundle_assignment فقط لأنواع كائنات الحزم (INTERVENTION_BUNDLE / COMPOSITE_SEQUENCE_PLAN / COMPOSITE_INTERVENTION_BUNDLE — MAP-004..017). أما أنواع النواتج الأربعة من غير الحزم فتُسجِّلها وحدة TAW كرموز توجيه/إجراء دون كتابة أي صف bundle_assignment.

بمجرد تفعيل المعلم للحزمة، يتبع التعيين آلة حالات من 17 حالة (بما فيها paused كحالة تعليق انتقالية) تعكس حلقة المراقبة:

recommended → in_review → activated → monitoring ├─ paused ├─ reviewed → continued | adjusted | modified ├─ escalated → immediate_review ├─ data_completion_required ├─ met_criteria → exited ├─ teacher_modified ├─ regression_review └─ rescinded

القائمة التفصيلية لـ BundleAssignmentStatus هي المرجع القانوني المُعاد في ActivateBundleResponse والمكشوف على نقطة نهاية توزيع ملفات الفصل.

تعديلات المعلم (رموز التجاوز)

يُعدِّل المعلمون معاملات الحزمة (وضع التسليم، والجدول، وأعلام السياق) من خلال عمليات تجاوز مضبوطة. كل تعديل يختار reasonCode من OverrideCodeCatalog ذي الـ 9 رموز:

الرمزالنطاق المنطبق
Override_Contextual_01الكل
Override_Procedural_02الكل
Override_Scheduled_03الكل
Override_DataGap_04الكل
Gam_Award_Invalid_05إلغاء المكافأة فقط
Bundle_Met_Criteria_06الخروج من الحزمة
Bundle_Teacher_Modify_07الخروج من الحزمة
Bundle_Acute_Regression_08الخروج من الحزمة
Bundle_Data_Incomplete_09الخروج من الحزمة

لا توجد حقول سبب نصية حرة في أي مكان في وحدة الحزمة. جميع نقاط نهاية التعديل تقبل فقط reasonCode FK في هذا الكتالوج. يُطبَّق هذا على مستوى فحص CI (pnpm lint:bundle).

أعلام السياق (مثل CTX_SESSION_INTERRUPTED) قد ترافق التعديل اختياريًا. القيم الـ 7 المسموح بها لـ ContextFlagId هي الأعلام الوحيدة القابلة للتمثيل؛ الأعلام الـ 3 المحجوبة غير قابلة للبناء من خلال API.

نقاط النهاية الرئيسية

نقطة النهايةالغرض
POST /api/bundles/recommendاحتساب وكتابة توصية حزمة للطالب
GET /api/bundles/catalogجميع صفوف الكتالوج الـ 22 (14 حزمة تدخل + 7 كائنات من غير الحزم؛ 23 صفًا فعليًا في bundle_definition، والحارس الداخلي NO_BUNDLE_SYSTEM_GUARD مُستثنى من هذه الاستجابة)
GET /api/bundles/:id/definitionحزمة واحدة مع خيارات التسليم وقاعدة المجموعة
GET /api/bundles/profile-mapجميع صفوف الخريطة الـ 21 وقواعد التكامل
POST /api/students/:id/activate-bundleتفعيل المعلم لتوصية
PATCH /api/students/:id/scaffold-assignmentتعديل OVR_SCAFFOLD
PATCH /api/assignments/:id/deliveryتعديل OVR_DELIVERY
PATCH /api/assignments/:id/scheduleتعديل OVR_SCHEDULE
POST /api/assignments/:id/context-flagOVR_CONTEXT_FLAG (7 معرفات أعلام مسموح بها)
POST /api/admin/bundle-config-setsنشر إصدار كتالوج جديد
POST /api/admin/bundle-replayإعادة تشغيل جافة V-6؛ لا تكتب شيئًا

نقاط نهاية المجموعة الذكية والتفعيل الجماعي موجودة في التجميع الذكي.

الارتباطات

  • المصدر: ملفات الطلاب: الملف النشط هو المدخل لخريطة الملف إلى الحزمة.
  • المصبّ: التجميع الذكي: منطق المجموعة يُجمِّع الطلاب الذين يتشاركون الحزمة والمحور والمستوى ووضع التسليم.
  • المراقبة: مراقبة التقدم: قواعد سلامة GSR الـ 5 ومعايير النجاح الـ 19 لكل حزمة التي تحكم انتقالات الحزمة.
  • سير العمل: سير عمل تفعيل المعلم: سير العمل المكوَّن من 17 خطوة الذي يُحرِّك تأكيد المعلم والتعديل والمراجعة.
  • تسليم المهام: تسليم المهام: بمجرد أن تكون الحزمة نشطة، يختار تسليم المهام ويُقدِّم عناصر مخزَّنة باستخدام مستوى السقالة.