التقارير وملف ولي الأمر
تُؤلِّف وحدتان السطحَ القرائي للتقارير: modules/reporting (WP-06-BE) تُنتج تقارير المهارات الفرعية الموجَّهة للمعلم والمسؤول، وmodules/parent-pdf (WP-09-BE) تُنتج ملف PDF بلغة النمو موجَّهًا لولي الأمر. كلتا الوحدتين للقراءة فقط: تُؤلِّفان مخرجات المحرك المحفوظة مسبقًا ولا تكتبان شيئًا.
من يرى ماذا
| الجمهور | السطح | ما يُعرَض | ما لا يُعرَض أبدًا |
|---|---|---|---|
| المعلم | تقرير المهارات الفرعية + ملخص الفصل | سرد الملف الشخصي، حالات المجالات الكبرى، حالة كل مهارة مرتّبةً بحسب الحاجة إلى الدعم، خطة الحزمة النشطة، التنبيهات المفتوحة، عدد الحالات على مستوى الفصل | درجة θ، رموز الملف (مثل PR2-04)، أرقام المحك، المعرّفات الداخلية |
| المدير / مدير المدرسة | ملخص الفصل (إجمالي فقط)، نظرة عامة على المدرسة، خريطة الحرارة | أعداد الحالة لكل مهارة ومجال كبير عبر الفصول / المدرسة | تفاصيل كل طالب، درجة θ، أي نسبة مئوية إجمالية واحدة |
| ولي الأمر | ملف PDF بالنمو (يطلقه المعلم أو ولي الأمر، يُنزَّل، يُشارَك خارج المنصة) | تقدّم الطفل موصوفًا بالعربية بلغة النمو، كلمات حالة المجال الكبير (فئوية فحسب)، اسم المعلم، اسم المدرسة | جميع الأرقام والنسب المئوية، درجة θ، رموز الملف، المعرّفات الداخلية، مقارنات المحك |
| الطالب | لا شيء | — | كل شيء؛ لا يتلقى الطلاب أبدًا سطح تقارير |
درجات θ ورموز الملفات الداخلية (مثل PR2-04) معلومات موجَّهة للمطوّرين. يجب أن لا تظهر قط على أي سطح موجَّه للمعلم أو ولي الأمر أو الطالب.
تقرير المهارات الفرعية (WP-06-BE)
يُؤلِّف GET /api/reports/students/{id}/sub-skill-report خمسة أقسام للمعلم:
- قسم الملف الشخصي: السرد العربي المُسبَق العرض للملف الأساسي للطالب (من مكتبة قوالب SPOT)، مع علم
dataIncomplete: trueحين لا يكون قد جرى تعيين خطة بعد. - مربعات المجالات الكبرى: حالة الطالب على كل مجال من المجالات الكبرى الست بالإضافة إلى البيانات الوصفية الشاملة. الحالات فئوية (
Meets،Approaching،Below،Severe،Partial،Contextual،Not_Assessed)، لا نسبة مئوية ولا متوسط.PartialوContextualحالتان مرور (pass-through) تظهران حين تكتشف قاعدة تجميع المجالات أدلةً غير مكتملة أو نمطًا سياقيًا؛ كلتاهما مستثنيتان من تجميع الحالة الأشد خطورة جنبًا إلى جنب معNot_Assessed. - صفوف كل مهارة: صف لكل مهارة فرعية مُرتَّب بحيث تظهر المهارات التي تحتاج دعمًا أولًا (يُطبَّق ترتيب المستويات العربية “يحتاج تدخّل” في طبقة الترتيب بمحرك التقارير).
- الخطة النشطة: تعيين حزمة الطالب الحالية وحالتها.
- التنبيهات المفتوحة: تنبيهات التراجع الحادّ النشطة وأعلام المراقبة.
لا تُشغَّل هنا أي منطق قياس. جميع الحالات مأخوذة من لقطات محفوظة مسبقًا أنتجها محرك حالة المهارة
ووحدة تحديد الملفات. تُملأ تلك اللقطات بواسطة جسر القياس عند
اكتمال التشخيص؛ قبل اكتمال التشخيص يُعيد التقرير dataIncomplete: true (تقرير المهارات الفرعية)
أو Not_Assessed (مربعات المجالات الكبرى) في استجابة HTTP 200.
إن لم يُجرَ للطالب تعيين بعد، يكون profile.dataIncomplete مساويًا true والاستجابة لا تزال HTTP 200: إغلاق آمن، لا 404 بسبب بيانات مفقودة.
ملخص الفصل (WP-06-BE)
يُعيد GET /api/reports/classes/{id}/class-summary:
- توزيعات كل مهارة: أعداد الطلاب في كل حالة لكل مهارة فرعية، بالإضافة إلى توزيع مستويات الإجراء العربية.
- المجال الكبير للفصل: تجميع الحالة الأشد خطورة عبر الفصل لكل مجال كبير. هذه عملية على مستوى الحالة: تُعيد الحالة الأشد إثارة للقلق التي لوحظت، لا المتوسط.
يتحكّم معامل الاستعلام audience في شكل الاستجابة:
قيمة audience | صفوف لكل طالب | حالة الاستخدام |
|---|---|---|
teacher | مضمّنة (ملخص مجال كبير لكل طالب) | لوحة فصل المعلم الخاصة |
manager | null (إجمالي فقط) | مدير المنطقة أو من لا يملك الفصل |
لا يستطيع المعلم استدعاء هذا إلا للفصول المُعيَّن فيها (ClassTeacher junction). يتلقى المدير أو المسؤول دائمًا الشكل الإجمالي فقط.
تفاصيل النطاقات (WP-06-BE)
يُعيد GET /api/reports/band-descriptions الكتالوج المرجعي للنطاقات الخمسة لميزان. لكل نطاق تسميات بالعربية والإنجليزية ووصف عربي. هذه بيانات مرجعية لواجهة المعلم: تشرح ما يعنيه كل نطاق حالة بلغة النمو، بدون أرقام أو مقارنات.
هذه التسميات افتراضات مؤقتة في انتظار موافقة الشريك؛ العلم partnerOwed على كل صف يشير إلى ذلك.
ملف PDF لولي الأمر (WP-09-BE)
POST /api/parent/pdf/{childId} يطلقه المعلم أو ولي الأمر. يستطيع المعلم الذي يمتلك صلاحية VIEW_OWN_CLASSES توليد ملف PDF لأي طالب في فصله. يستطيع ولي الأمر الذي يمتلك صلاحية VIEW_PARENT_REPORTS أيضًا توليد ملف PDF لطفله المرتبط مباشرةً من صفحة النمو الخاصة به. تُطبِّق نقطة النهاية نطاق الطفل الخاص عبر canReachStudent (allowParent: true)، فلا يستطيع ولي الأمر طلب ملف PDF لطفل آخر. يُعيد دفق PDF ثنائي (application/pdf)، بتنسيق A4، تخطيط عربي من اليمين لليسار مع خط Noto Naskh Arabic مُضمَّن. يُولَّد PDF بشكل حتمي: محتوى متطابق بالبايت عبر تشغيلات متعددة لمدخلات متطابقة (V-6).
مرشّح لغة أكثر صرامة لولي الأمر
يجتاز كل نص في ملف PDF لولي الأمر طبقتَين من سلامة اللغة:
applyParentStricterFilter: حزام أولياء الأمور الأكثر صرامة الأصلي منmodules/language-safety(FR-LANG-6). يحجب رموز الملفات الداخلية والدرجات الرقمية ومقارنات المحك والتسميات السريرية / إطار العمل.- تجريد حقول
ParentSummaryDTO: انضباط مُكتَّب يُزيل الحقول الداخلية قبل أن تراها طبقة تخطيط PDF. θ ورموز الملفات والمعرّفات الداخلية غائبة هيكليًا، لا مُصفَّاة فحسب على مستوى النص.
ما يحتويه ملف PDF لولي الأمر
- الاسم الأول للطفل واسم المدرسة.
- كلمات حالة المجال الكبير بالعربية: أوصاف فئوية فحسب، بدون رقم.
- يُعرَض
Not_Assessedكـ “نحتاج بيانات إضافية”؛ لا يُخفى أبدًا ولا يُعامَل كنتيجة منخفضة. - سرد بلغة النمو مُستمَدّ من قالب ملف SPOT مع تطبيق ضوابط اللغة الحساسة.
الصفحة الاحتياطية الآمنة
إن لم يوجد سرد مُحدَّد لولي الأمر للطالب (مثلًا لأن ملف الطالب DATA_INCOMPLETE) يعرض PDF صفحة التوقف الآمنة GL-005. لا يخترع ملفًا ولا يلجأ إلى بيان عام. إن كانت قاعدة بيانات سلامة اللغة النشطة غير موجودة تُعيد نقطة النهاية 503 بدلًا من إرسال نص غير مُصفَّى.
نظرة عامة على المدرسة وملف PDF للإدارة (WP-10-BE)
نقطتا نهاية إجماليتان فحسب محجوبتان خلف مجموعة صلاحيات SCHOOL_READ (VIEW_SCHOOL لمدير المدرسة والمدير، VIEW_ORG للمسؤول، RUN_BACKOFFICE للمسؤول الأعلى). لا يمتلك المعلم ولا ولي الأمر ولا الطالب أيًّا من هذه الصلاحيات.
نظرة عامة على المدرسة
يُعيد GET /api/schools/{schoolId}/overview كائن SchoolOverviewDTO يضمّ أعداد حالات المجال الكبير لكل فصل وتوزيعًا على مستوى المدرسة. تتضمن الاستجابة أسماء الفصول والأعداد فحسب. لا تظهر أسماء الطلاب ولا معرّفاتهم ولا صفوفهم الفردية على أي مستوى.
ملف PDF للإدارة
يُعيد GET /api/schools/{schoolId}/board-pdf ملف PDF بصفحة واحدة بتنسيق A4 عربي من اليمين لليسار (application/pdf) مناسبًا لجمهور الإدارة والقيادة. يُظهر الأعداد الإجمالية ذاتها التي تعرضها نظرة المدرسة العامة مضافًا إليها ستة مربعات للمجالات الكبرى. يُحدَّد حجم ملف PDF بـ 500 كيلوبايت. إن فشل توليد ملف PDF أو تجاوز حد الحجم تُعيد نقطة النهاية 503 (إغلاق آمن).
بالنسبة لنقطتَي النهاية، يُطبِّق canReachSchool المضمَّن في المعالج حدود المدرسة لكل مستخدم: يرى مدير المدرسة مدرسته فحسب، ويرى المدير المدارس ذات النطاق المحدد له فحسب، ويُعيد أي طلب عابر للمنظمة 404 (عدم الإفصاح عن الوجود، FR-TEN-9).
لا نتيجة إجمالية واحدة
لا يحتوي تقرير المهارات الفرعية ولا ملخص الفصل ولا ملف PDF لولي الأمر على رقم أو نسبة مئوية واحدة تمثّل محو الأمية العربية الإجمالي. كل حالة خاصة بقياس واحد أو مجال كبير واحد. هذه قاعدة منصة صارمة (V-3) مُطبَّقة في محرك التقارير وطبقة تأليف PDF لولي الأمر.
مقارنة إعادة التشخيص
يُعيد GET /api/reports/students/:id/re-diagnostic-comparison/:sessionId مقارنةً per-sub-skill
بين الجلسة المحددة والجلسة المكتملة السابقة للطالب ذاته والدورة ذاتها.
يحمل كل صف في الاستجابة:
| الحقل | الوصف |
|---|---|
priorStatus | SkillStatus من الجلسة التي سبقت إعادة التشخيص (أو null إن لم تكن موجودة) |
currentStatus | SkillStatus من الجلسة المحددة |
priorActionTier | تسمية مستوى الإجراء العربية للجلسة السابقة (مثل يحتاج تدخّل)؛ null حين لا توجد حالة سابقة |
currentActionTier | تسمية مستوى الإجراء العربية للجلسة الحالية؛ null حين تكون doNotDecideYet |
statusTransition | نص بالصيغة "<prior> → <current>" (سهم يونيكود لليمين U+2192). القيم السابقة والحالية تسميات مستوى الإجراء العربية (مثل يحتاج تدخّل أو مناسب)، لا رموز SkillStatus الخام. استخدم priorStatus / currentStatus للمعالجة على مستوى الرمز. |
growth | أحد القيم: improved أو declined أو same أو indeterminate |
تُشتق جهة النمو من حركة مستوى الإجراء لا من θ الخام. لا تُدرَج أي قيمة θ أو خطأ معياري خام
في الاستجابة. لا يستطيع المعلم استدعاء هذا إلا للطلاب في فصوله الخاصة (وصلة ClassTeacher)؛
أي طلب عابر للمنظمة يُعيد 404.
إذا لم تكن هناك جلسة مكتملة سابقة للطالب والدورة، تُعيد نقطة النهاية 404 مع
reason: no_prior_session_for_comparison.
ذو صلة
- المعايير والمحكات: كيف تصبح الدرجات الخام أحكام
MeasureStatus - محرك حالة المهارة: كيف تُشتَق حالات المهارة والمجال
- ملفات الطلاب: كيف يُحدَّد الملف الأساسي وسرد SPOT
- سلامة اللغة: مرشّح أولياء الأمور الأكثر صرامة وقواعد لغة النمو
- المديرون ومديرو المدارس: التقارير على مستوى المدرسة لمديري المدارس