---
title: "حزم القرار"
url: https://docs.growamal.com/ar/guides/decision-packets/
language: ar
---

# حزم القرار

مسار حزمة القرار (WP-DECISION-PACKET-BE) هو القطعة الختامية في موجة قرارات الاستجابة للتدخل: مسار
المراجعة والاعتماد الذي يحوّل توصية انتقال المستوى إلى قرار مدقَّق، وعندئذٍ فقط يَنقل مستوى الطفل.
يجمع حزمةً فوق هيكل الحزمة في غرفة البيانات، ويحسب التوصية الحتمية، ويمررها عبر بوابة الاعتماد،
وعند الاعتماد **يُنفِّذ انتقال المستوى عبر مسار الكتابة الوحيد للمستوى في محرك RTI**، ولا يكتب
`tier_decision_record` بنفسه أبداً.

> **ملاحظة:** لا تضيف هذه الوحدة أي كتابة للمستوى من تلقاء نفسها. تستدعي محرك RTI لنقل المستوى وغرفة البيانات
> لفتح وإغلاق هيكل الحزمة. ويبقى مسار كتابة المستوى الوحيد في محرك RTI.

## المسارات

| الطريقة | المسار | الصلاحية |
|---|---|---|
| `POST` | `/api/decision-packet-workflows/assemble` | `REQUEST_TIER_REVIEW` أو `APPROVE_TIER_3_ACTIVATION` أو `RUN_BACKOFFICE` |
| `GET` | `/api/decision-packet-workflows/{id}` | `REQUEST_TIER_REVIEW` أو `VIEW_OWN_CLASSES` أو `VIEW_SCHOOL` أو `VIEW_ORG` أو `RUN_BACKOFFICE` |
| `POST` | `/api/decision-packet-workflows/{id}/approve` | `REQUEST_TIER_REVIEW` أو `APPROVE_TIER_3_ACTIVATION` أو `RUN_BACKOFFICE` (+ بوابة الأخصائي داخل المعالج) |
| `POST` | `/api/decision-packet-workflows/{id}/reject` | `REQUEST_TIER_REVIEW` أو `APPROVE_TIER_3_ACTIVATION` أو `RUN_BACKOFFICE` |

معرّف سير العمل `id` عددٌ صحيح موجب. ولا توجد عمداً **أي نقطة وصول للطالب**؛ فالطلاب لا يرون أياً
من هذا. ويعيد المعرّف خارج المؤسسة أو خارج النطاق `404`.

## التجميع

يفتح `POST …/assemble` حزمة غرفة البيانات (الأدلة مُلتقطة بالإحالة، وكل إصدار قاعدة وإعداد مُثبَّت
لإعادة التشغيل)، ويحسب توصية `TM_*` الحتمية، ويكتب صفّ سير العمل في حالة `assembled`، ويضبط الحزمة
على `under_review`. ويعيد `409` إن وُجد سير عمل حيّ للطالب أصلاً.

```bash
curl -X POST https://localhost:3000/api/decision-packet-workflows/assemble \
  -H "Authorization: Bearer <accessToken>" \
  -H "Content-Type: application/json" \
  -d '{
    "studentId": 42,
    "reviewType": "escalation",
    "triggerSource": "system",
    "triggerRuleId": "DECISION_PACKET_ASSEMBLE"
  }'
```

‏`reviewType` إحدى القيم `escalation` / `de_escalation` / `maintenance` / `insufficient_data_review`.

يقبل جسم الطلب هذه الحقول الأربعة فقط. لا يُقبَل `evidence` ولا `bundleAssignmentId` من العميل.
يستخلص الخادم أدلة `TM_*` من صفوف قاعدة البيانات الفعلية (`tm-evidence-reader.ts`)، فلا يستطيع
العميل التأكيد الذاتي على الإحصاءات التي تضبط انتقال المستوى (V-5: الإحصاءات هي المقياس). وتحمل
الاستجابة `workflowId` و`decisionPacketId` و`tierReviewRequestId` و`approvalState` و`recommendation`:

```json
{
  "workflowId": 17,
  "decisionPacketId": 31,
  "tierReviewRequestId": 22,
  "approvalState": "assembled",
  "recommendation": {
    "matchedRuleId": "TM_BLOCK_01",
    "movementResult": "defer",
    "recommendedAction": "defer",
    "blockingConditions": ["fidelity_below_threshold"],
    "movementRuleVersion": 3
  }
}
```

‏`matchedRuleId` إحدى قواعد الحركة الأربع (`TM_ESC_01` / `TM_MAINT_01` / `TM_DEC_01` /
`TM_BLOCK_01`). و`movementResult` هو `escalate` / `de_escalate` / `maintain` / `defer` /
`needs_more_data`.

## الاعتماد والرفض

‏`GET …/{id}` هو واجهة المراجِع: الحزمة المجمَّعة، وحالة سير العمل، ولقطة التوصية المثبَّتة.

يمرر `POST …/{id}/approve` التوصية عبر بوابة الاعتماد. الانتقال إلى المستوى الثالث يتطلب الأخصائي
عالي الكثافة (`APP_HIGH_INTENSITY`، مُقعَد إدارياً في الموجة الأولى)؛ وتعيد بوابة الأخصائي داخل
المعالج `403` للتصعيد من غير أخصائي. وعندما يسمح الحكم وتنجح البوابة، يستدعي
`submitTierReviewDecision` في محرك RTI (الذي يشغّل `applyDecision`، مسار كتابة المستوى الوحيد)، ثم
يغلق الحزمة.

```bash
curl -X POST https://localhost:3000/api/decision-packet-workflows/17/approve \
  -H "Authorization: Bearer <accessToken>" \
  -H "Content-Type: application/json" \
  -d '{
    "decisionReasonCode": "Override_Contextual_01",
    "reviewType": "escalation"
  }'
```

كما هو الحال مع `/assemble`، فإن `evidence` و`bundleAssignmentId` يُستخلَصان من الخادم ولا يُقبَلان
من العميل. يُعيد الخادم استخلاص أدلة `TM_*` عند الاعتماد قبل استدعاء محرك RTI (تعزيز بوابة V-5).

يسجّل `POST …/{id}/reject` رفضاً بسبب مضبوط؛ دون انتقال، دون إغلاق، نهائي. وتحمل استجابتا القرار
الحالة المطبَّقة، وما إذا انتقل المستوى `moved`، و`tierDecisionRecordId` (أو null)، و`matchedRuleId`،
وأي `blockingConditions`.

‏`decisionReasonCode` رمزٌ مضبوط من كتالوج رموز التجاوز (`Override_Contextual_01` /
`Override_Procedural_02` / `Override_Scheduled_03` / `Override_DataGap_04` / `Bundle_Met_Criteria_06`
/ `Bundle_Teacher_Modify_07` / `Bundle_Acute_Regression_08` / `Bundle_Data_Incomplete_09`). ولا يوجد
**أي حقل سبب نصّ حر** في أي مكان من سير العمل.

## آلة حالات الاعتماد

```
assembled → pending_approval → approved → applied
                              ↘ rejected
```

‏`applied` و`rejected` نهائيتان. واعتماد أو رفض ثانٍ على سير عمل نهائي يعيد `409`.

## الثوابت

- **لا انتقال دون اعتماد.** أي إيقاف بمُوقِف (`do_not_decide_yet`)، أو انتقالٌ غير معتمَد إلى
  المستوى الثالث، أو ملفٌّ ناقص، كلها تحجب الانتقال (فشل مغلق). ويغطي `403` حجب المُوقِف أو فشل
  بوابة الأخصائي.
- **سبب القرار رمزٌ مضبوط، لا نصّ حر.**
- **غير قابل للتعديل عند الإغلاق (V-6).** الحزمة المغلقة والقرار المطبَّق غير قابلين للتعديل إلى
  الأبد؛ وتثبّت لقطة التوصية كل إصدار قرأته، فتُعيد إعادة التشغيل إنتاج الحكم نفسه.
- **لا كتابة مستوى هنا.** يستدعي سير العمل محرك RTI لنقل المستوى وغرفة البيانات لفتح/إغلاق هيكل
  الحزمة.
- **إلحاق فقط**، و**معزول حسب المؤسسة** (`organizationId`؛ عبر المؤسسات `404`)، و**لا نموذج لغوي
  (V-5)**، و**غير ظاهر للطالب أبداً**.

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

- [قرارات الاستجابة للتدخل والمستويات](https://docs.growamal.com/ar/guides/rti-decisions/): المحرك الذي يملك كتابة المستوى وتوصية `TM_*`
- [غرفة بيانات الطالب](https://docs.growamal.com/ar/guides/data-room/): هيكل الحزمة الذي يُجمَّع فوقه سير العمل هذا
- [متتبّع أمانة تنفيذ التدخل](https://docs.growamal.com/ar/guides/fidelity-tracker/): البوابة التي تقرؤها `TM_BLOCK_01` قبل التصعيد
