---
title: "متتبّع أمانة تنفيذ التدخل"
url: https://docs.growamal.com/ar/guides/fidelity-tracker/
language: ar
---

# متتبّع أمانة تنفيذ التدخل

يجيب متتبّع أمانة التنفيذ (WP-FID-BE) عن سؤال واحد قبل أي تصعيد للمستوى: **هل نُفِّذت الخطة فعلاً؟**
يحسب نسبة الأمانة (الجلسات المنفَّذة ÷ المخطَّطة) لإسناد حزمة نشط، ويربطها بتصنيف، ويراجع إشارة
النمو من مراقبة التقدم، ويعيد حكماً مع علم `escalationBlocked`. يقرأ محرك RTI هذه البوابة مباشرةً
قبل أي انتقال من المستوى الثاني إلى الثالث.

> **ملاحظة:** المغزى التربوي: الخطة التي لم تنجح مختلفة عن الخطة التي لم تُنفَّذ. التنفيذ الأمين (≥80٪) مع نمو
> ضعيف *قد* يُصعِّد (فالخطة جُرِّبت ولم تنجح) — **لكن ≥80٪ وحدها لم تعد كافية** (انظر
> [دورة الخروج عن المسار](#دورة-الخروج-عن-المسار-وصلاحية-الأثر-r12-fr-fid-13) أدناه): فعَلَم
> `major_fidelity_issue_flag` (جلسات قصيرة جداً / مواد ناقصة / تنفيذ غير مطابق) يجعل النتيجة غير
> قابلة للبتّ بعد، حتى عند ≥0.80. ودون 80٪ مع نمو ضعيف يُحظر، إذ لا يمكن إدانة خطة لم تُنفَّذ قط.
> وغياب بيانات الجلسات يعيد `cannot_evaluate_yet`، لا تمريراً بالتخمين أبداً. وفي كل حالة "غير قابلة
> للبتّ" تكون الفجوة في **التنفيذ**، لا في عدم استجابة الطالب أبداً.

## المسارات

| الطريقة | المسار | الصلاحية |
|---|---|---|
| `GET` | `/api/fidelity/{bundleAssignmentId}/check` | `VIEW_OWN_CLASSES` (ClassTeacher) أو `RUN_BACKOFFICE` |
| `GET` | `/api/fidelity/{bundleAssignmentId}` | `VIEW_OWN_CLASSES` (ClassTeacher) أو `RUN_BACKOFFICE` |
| `POST` | `/api/fidelity/{bundleAssignmentId}/recompute` | `VIEW_OWN_CLASSES` (ClassTeacher) أو `RUN_BACKOFFICE` |
| `POST` | `/api/fidelity/{bundleAssignmentId}/session` | `VIEW_OWN_CLASSES` (ClassTeacher) أو `RUN_BACKOFFICE` |
| `GET` | `/api/students/{id}/fidelity-tracker` | `VIEW_OWN_CLASSES` (ClassTeacher) أو `RUN_BACKOFFICE` |
| `GET` | `/api/fidelity/admin/low-fidelity-cohort` | `RUN_BACKOFFICE` (للمشرف فقط) |

كل من `bundleAssignmentId` ومعرّف الطالب `id` عددٌ صحيح موجب. تُقيِّد مسارات المعلم الوصول بصف
الطالب عبر حارس ClassTeacher داخل المعالج؛ ويعيد المعرّف خارج المؤسسة أو خارج النطاق `404` (عدم
الكشف عن الوجود). ولا توجد عمداً **أي نقطة وصول للطالب**؛ فالطلاب لا يرون الأمانة أبداً.

`POST /api/fidelity/{bundleAssignmentId}/session` هو مسار الكتابة الأساسي: يسجّل جلسةً واحدة منفَّذة
(أو مجدولة لم تُنفَّذ)، ويُشغِّل إعادة حساب، ويعيد إسقاطاً حديثاً. انظر دليل
[تسجيل جلسة التدخل](https://docs.growamal.com/ar/guides/log-intervention-session/) للاطلاع على حقول جسم الطلب.

## ‏`GET /check`: بوابة التصعيد

هذا هو الحكم المتزامن الذي يستدعيه محرك RTI مباشرةً قبل التصعيد. يعيد آخر إسقاط مخزَّن، ولا يعيد
الحساب.

```bash
curl https://localhost:3000/api/fidelity/8124/check \
  -H "Authorization: Bearer <accessToken>"
```

```json
{
  "bundleAssignmentId": 8124,
  "fidelityRate": 0.86,
  "fidelityRating": "high",
  "fidelityIssueFlag": false,
  "fidelityIssueCode": null,
  "impactOnDecision": "no_issue",
  "growthSignal": "low_growth",
  "verdict": "adjust_intervention",
  "escalationBlocked": false,
  "recommendedAction": "...",
  "autoDraftedParagraphAr": "...",
  "sessionsCompleted": 12,
  "sessionsPlanned": 14
}
```

تصنيف `fidelityRating` الخماسي هو `high` (≥0.80) / `adequate` (0.60 إلى 0.79) / `partial`
(0.40 إلى 0.59) / `low` (أقل من 0.40) / `unknown` (لا بيانات). وحكم `verdict` الرباعي هو `continue` /
`adjust_intervention` / `cannot_evaluate_yet` / `fortuitous_complete_dose`. و`impactOnDecision` هو
`block_escalation` / `reduce_confidence` / `no_issue`. وتُقرأ إشارة `growthSignal` (`good_growth` /
`partial_growth` / `low_growth` / `insufficient_data`) من وحدة المراقبة.

## مصفوفة التصنيف × النمو

يأتي الحكم وعلم `escalationBlocked` من مصفوفة نقية للتصنيف مقابل النمو:

| الأمانة \ النمو | جيد | منخفض | إيقاف (`do_not_decide_yet` / حاد) |
|---|---|---|---|
| **high** (≥0.80) | `continue` (غير محظور) | `adjust_intervention` (غير محظور) | `cannot_evaluate_yet` (محظور) |
| **adequate** (0.60–0.79) | `continue` (غير محظور) | `cannot_evaluate_yet` (محظور) | `cannot_evaluate_yet` (محظور) |
| **partial** (0.40–0.59) | `fortuitous_complete_dose` (غير محظور) | `cannot_evaluate_yet` (محظور) | `cannot_evaluate_yet` (محظور) |
| **low** (أقل من 0.40) | `fortuitous_complete_dose` (غير محظور) | `cannot_evaluate_yet` (محظور) | `cannot_evaluate_yet` (محظور) |
| **unknown** (لا بيانات) | `cannot_evaluate_yet` (محظور) | `cannot_evaluate_yet` (محظور) | `cannot_evaluate_yet` (محظور) |

يعيد مُوقِف الإيقاف دائماً `cannot_evaluate_yet` + محظور (قاعدة التعادل). ويُسمح بالتصعيد فقط عند
أمانة عالية أو كافية مع إشارة نمو تسمح بها المصفوفة.

## دورة الخروج عن المسار وصلاحية الأثر (R12، FR-FID-13)

يضيف R12 (FR-FID-13، المواصفة `35-fidelity-tracker.md`) **دورة استمرارية تنفيذ** تُبنى فوق مصفوفة
النسبة. تجيب عن سؤال ثانٍ لا تستطيع النسبة وحدها الإجابة عنه: *هل تعثّرت الخطة في التنفيذ؟* ويلتقط
ذلك عمودان جديدان.

**`intervention_track_status` ∈ `{on_track, partial_delivery, off_track, resumed_pending_new_evidence}`**
— دورة استمرارية التنفيذ. تصبح الخطة **`off_track`** عندما **لا تُنفَّذ أي جلسة مخططة لمدة
`offTrackThresholdWeeks` أسابيع تعليمية متتالية** (قابلة للتهيئة عبر
`InterventionTrackingConfig.offTrackThresholdWeeks`، الافتراضي **3**). والأسبوع *التعليمي* هو أسبوع
ISO كان فيه ≥1 جلسة مخططة ولم يكن أسبوع عطلة؛ **والعطلات والأسابيع التي لا جلسات مخططة فيها لا
تدخل في حساب التتابع**. و`partial_delivery` = فاتت بعض الأسابيع المخططة لكن دون عتبة الخروج عن
المسار؛ و`resumed_pending_new_evidence` = استأنف المعلم خطةً خرجت عن المسار ولم تتراكم بعد أدلة
جديدة قابلة للمقارنة.

**`intervention_effect_validity_status` ∈ `{valid, limited, invalid_due_to_implementation_gap}`**
— هل يجوز قراءة استجابة الطالب كأثر حقيقي للخطة:

- **`invalid_due_to_implementation_gap`** — أمانة منخفضة/مجهولة، أو عَلَم `major_fidelity_issue_flag`،
  أو `off_track`. والفجوة في **التنفيذ، لا في عدم استجابة الطالب**. **و≥80٪ وحدها غير كافية**: فمشكلة
  أمانة كبرى (جلسات قصيرة جداً / مواد ناقصة / تنفيذ غير مطابق) تفرض `invalid` حتى عند ≥0.80.
- **`limited`** — أمانة `partial` أو خطة مستأنفة: تُفسَّر بحذر، وليست سببية أبداً.
- **`valid`** — أمانة `adequate`/`high`، بلا مشكلة كبرى، وعلى المسار.

> **تنبيه:** **الخروج عن المسار يحظر كل حركة مستوى تلقائية.** عند `off_track`، تفرض إعادة الحساب
> `escalationBlocked = true` حتى لو لم تحظر مصفوفة النسبة، فتمنع بوابة `TM_BLOCK_01` في محرك RTI
> **كل** حركة مستوى تلقائية — التصعيد، **والتنزيل، والتخرّج إلى دعم أخفّ** — حتى يستأنف المعلم الخطة.
> ولا يتحرك المستوى ما دام محظوراً. وقد يظل الفرق العددي بين التقييمات *يُعرَض* كنتيجة أداء، لكنه لا
> يُنسَب إلى التدخل أبداً. وتصل إشارة الخروج عن المسار إلى محرك RTI عبر مَنفَذ قارئ الأمانة القائم
> (عَلَم `offTrack` بوليّ على القراءة) — دون أي ربط RTI جديد.

**الاستئناف.** عند الاستئناف يختار المعلم رمز سبب مضبوطاً من قاموس `ADD_Context_Flag_Dictionary`
المغلق (B.24 — بلا نصّ حر)؛ ويسجّل الصف `resumeReasonCode` + `resumedAt` ويضبط
`intervention_track_status = resumed_pending_new_evidence`. وتبقى صلاحية الأثر `limited` حتى
تتراكم نقاط جديدة قابلة للمقارنة.

## ‏`POST /recompute`: إلحاق لقطة جديدة

تفرض إعادة الحساب حساباً جديداً وتُلحق صفّ لقطة جديد غير قابل للتعديل. لا تحمل **أي جسم**؛ فلا
حقل نصّ حر على أي مسار أمانة؛ والسياق الوحيد للمشكلة هو مفردات `fidelityIssueCode` المضبوطة
(`missed_sessions` / `short_duration` / `wrong_grouping` / `incomplete_material` / `unknown`).

```bash
curl -X POST https://localhost:3000/api/fidelity/8124/recompute \
  -H "Authorization: Bearer <accessToken>"
```

إعادة الحساب مقفلة احترازياً لكل `(org, assignment)` وثابتة الناتج عند عدم تغيّر المدخلات. وتعيد
الإسقاط الجديد (بنفس شكل `/check`) مع `201`.

## الفقرة المصاغة تلقائياً

يصيغ كل حكم تلقائياً فقرة عربية قصيرة لاجتماع المراجعة (`autoDraftedParagraphAr`). وهي **مكتوبة
بالقواعد، لا بنموذج لغوي**، ومُرشَّحة عبر طبقة سلامة اللغة من اللغة السريرية وأطر القياس الدولية
ولغة العجز. وهي سطح للمعلم/المشرف فقط.

## الثوابت

- **الفشل المغلق.** الإسناد المفقود `404`؛ وقراءة نمو مفقودة أو غياب صفّ لقطة يعطي `unknown` /
  `escalationBlocked = true`، لا `adequate` مُلفَّقاً أبداً. غياب بيانات الأمانة يحجب التصعيد؛
  ولا يسمح به أبداً.
- **إلحاق فقط (V-6).** جدولا `intervention_fidelity` و`intervention_session_log` جدولا تدقيق
  نقيان: لا تعديل، لا حذف. ويُثبَّت إصدار الإعداد على كل صفّ، فتُعيد إعادة حساب المدخلات نفسها
  إنتاج اللقطة حرفاً بحرف.
- **لا نصّ حر.** لا حقل `reason` / `note` / `comment` على أي مسار؛ وسياق المشكلة مفردات
  `fidelityIssueCode` المضبوطة.
- **لا نموذج لغوي (V-5).** الحكم والفقرة حتميان ومكتوبان بالقواعد.
- **معزول حسب المؤسسة.** يقصر `organizationId` كل قراءة وكتابة؛ وعبر المؤسسات `404`.
- **مُقيَّد بالمعلم (ClassTeacher) / للمشرف فقط؛ غير ظاهر للطالب أبداً.**

## أدلة ذات صلة

- [قرارات الاستجابة للتدخل والمستويات](https://docs.growamal.com/ar/guides/rti-decisions/): المحرك الذي يقرأ هذه البوابة قبل انتقال المستوى الثاني إلى الثالث
- [مراقبة التقدم](https://docs.growamal.com/ar/guides/progress-monitoring/): مصدر إشارة النمو التي تراجعها هذه الوحدة
- [حزم القرار](https://docs.growamal.com/ar/guides/decision-packets/): سير العمل الذي يغلّف التوصية في اعتماد مدقَّق
- [حزم التدخل](https://docs.growamal.com/ar/guides/intervention-bundles/): إسناد الحزمة الذي تُتتبَّع أمانة تنفيذه
