Skip to Content

حزم القرار

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

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

المسارات

الطريقةالمسارالصلاحية
POST/api/decision-packet-workflows/assembleREQUEST_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}/approveREQUEST_TIER_REVIEW أو APPROVE_TIER_3_ACTIVATION أو RUN_BACKOFFICE (+ بوابة الأخصائي داخل المعالج)
POST/api/decision-packet-workflows/{id}/rejectREQUEST_TIER_REVIEW أو APPROVE_TIER_3_ACTIVATION أو RUN_BACKOFFICE

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

التجميع

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

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:

{ "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، مسار كتابة المستوى الوحيد)، ثم يغلق الحزمة.

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)، وغير ظاهر للطالب أبداً.

أدلة ذات صلة