Skip to Content

سلامة اللغة

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

لماذا يوجد هذا النظام

تنصّ قاعدة البنية المعمارية V-12 على: “المعلم يقرر؛ النظام يقترح؛ لغة النمو فقط.” تدفع مشكلتان ملموستان هذا التصميم:

  1. اللغة العجزية/السريرية تضر بالأطفال. الكلمات التي تصنِّف أو تُوصم تُضعف مفهوم الذات. يجب أن تصف كل سلسلة مُعرَّضة النمو والخطوات التالية، لا العجز.
  2. ملصقات الأطر الدولية للمعايرة الداخلية، لا للنصوص المواجهة للمستخدم. مصطلحات مثل PIRLS وEGRA وGPF وLexile (وما يعادلها بالعربية) تظهر في الأدبيات البحثية التي يستند إليها الشريك التربوي لأمل، لكنها يجب ألا تظهر أبداً في النص الذي يراه المعلم أو الوالد أو الطالب. القاعدة الصارمة Q15 تحظرها من جميع أسطح المستخدم.

تمتلك طبقة السلامة أيضاً المسار القانوني الوحيد لتعليق السياق على جلسة طالب: علامة سياق من قاموس مغلق، لا نص حر قط.

خط أنابيب القواعد

عند حاجة الخادم إلى عرض سلسلة نصية لجمهور معين، يستدعي sanitize(text, activeRules, { appliesTo }). تُحمَّل القواعد من قاعدة البيانات وتُطبَّق بترتيب ثابت:

نوع القاعدةما تفعله
clinical_termتستبدل أو تحظر المفردات السريرية/التشخيصية
international_framework_labelتجرِّد الملصقات مثل PIRLS وEGRA وGPF وLexile (وما يعادلها بالعربية) من النسخ المواجهة للمستخدم؛ هذه المصطلحات مذكورة هنا لأنها قائمة المحظورات؛ راجع التنبيه أدناه
categorical_phrasingتُلطِّف صياغات العجز الفئوية إلى إطار النمو
cbm_alert_scriptتطبِّق نصوص لغة النمو الخاصة بـCBM
parent_stricter_guardrailضمانات GL-001..GL-005 (مستوى الوالدين، انظر أدناه)
profile_do_not_sayالعبارات المحظورة لكل ملف تُحمَّل عند وقت العرض
numeric_score_blockتجرِّد الدرجات الرقمية الخام من نسخ الوالدين
internal_label_blockتجرِّد رموز الملف الداخلية/الحزمة من نسخ الوالدين

لكل قاعدة severity (block / soften / strip) ومجموعة appliesTo للجمهور (ui / reports / parent / parent_stricter / teacher_note / student / admin).

لماذا تُذكر ملصقات الأطر (PIRLS وEGRA وGPF وLexile…) هنا: هذه الصفحة تصف ما يحظره المرشِّح. ذكرها هنا صحيح؛ هذا المكان الوحيد الذي تنتمي إليه. على أي سطح مواجه للمعلم أو الوالد أو الطالب يجب ألا تظهر أبداً.

مستويات الجمهور

للمرشِّح أربعة مستويات جمهور تتراكم فوق بعضها:

المستوىمَنقيود إضافية
ui / reports / teacher_note / adminالمعلم، المديرمرشِّح كامل للمصطلحات السريرية وملصقات الأطر؛ تلطيف فئوي
parentالوالدكل ما سبق بالإضافة إلى نصوص النمو الخاصة بالوالدين
parent_stricterالوالد (التقارير، PDF)كل ما سبق، بالإضافة إلى: لا درجات رقمية، لا رموز ملف/حزمة داخلية، لا ملصقات داخلية، بالإضافة إلى ضمانات GL الخمس
studentالطالبمرشِّح منفصل: لا مقارنات بالأقران، لا ملصقات، تغذية راجعة داعمة فقط

ضمانات GL الخمس (GL-001..GL-005)

هذه عبارات عجز عربية محددة حدَّدها الشريك التربوي وهي محظورة كلياً من نسخ الوالدين والطلاب. كل منها حظر سلسلة فرعية مع استبدال مطلوب أو حذف. القواعد موجودة في جدول LanguageRule بـruleType=parent_stricter_guardrail.

do_not_say لكل ملف

لكل ملف أساسي قائمة do_not_say في مصفوفة تطبيق الملف للصف (PGA). عند وقت العرض، يُحمِّل محرك سلامة اللغة المجموعة النشطة لملف الطالب ويضيف هذه العبارات كطبقة تصفية إضافية. يضمن هذا ألا تستخدم قوالب SPOT السردية عن طريق الخطأ عبارةً تتعارض مع إطار النمو الخاص بالملف.

الإصدار بالإلحاق الحصري

لا تُعدَّل القواعد في مكانها. لتغيير قاعدة:

  1. أرسل POST بقاعدة جديدة (يُدرَج صف جديد بـversion جديد).
  2. أرسل PATCH للقاعدة القديمة لإلغاء تنشيطها (PATCH /api/language-rules/{id}/deactivate).

يبقى صف الإصدار القديم دائماً للتدقيق. تُحمَّل القواعد النشطة بالإغلاق عند الفشل: إذا لم يوجد مجموعة قواعد نشطة عند محاولة المحرك العرض، فإنه يُلقي استثناءً بدلاً من إصدار نص غير مُرشَّح (V-6 + V-3).

علامات السياق: الطريقة الوحيدة لإرفاق السياق بطالب

لا يوجد حقل نص حر على أي سجل طالب. V-12 والقاعدة الصارمة B.24 تحظران ذلك. الطريقة الوحيدة التي يمكن للمعلم بها إرفاق سياق الجلسة أو التعليمية بطالب هي اختيار علامة من ContextFlagDictionary المغلق.

معرِّفات العلامات السبع المسموح بها:

معرِّف العلامةمتى تُستخدم
CTX_SESSION_INTERRUPTEDالجلسة انقطعت قبل الاكتمال الطبيعي
CTX_TECHNICAL_ISSUEمشكلة جهاز أو اتصال أثَّرت على الجلسة
CTX_AUDIO_PROBLEMتشغيل الصوت كان متأثراً
CTX_GROUP_NOT_COMPLETEDلم تتمكن مجموعة من إنهاء نشاطها
CTX_STUDENT_ABSENTالطالب غائب أثناء مسبار مجدوَل
CTX_NEEDED_REPETITIONاحتاج الطالب تعليمات متكررة أكثر من المعتاد
CTX_PAPER_CHECK_ADMINتم تطبيق اختبار ورقي (الاسم البديل CTX_PAPER_CHECK_ADMINISTERED)

ثلاثة معرِّفات إضافية محظورة صراحةً (CTX_FREE_TEXT_NOTE، CTX_MEDICAL_NOTE، CTX_PSYCHOLOGICAL_NOTE). محاولة إرسال أحدها تُعيد 422 context_flag_blocked؛ يكتب النظام صفاً بـالطول فقط في security_audit_log (قيمة العلامة نفسها لا تُخزَّن أبداً).

كتابة علامة سياق

curl -X POST https://localhost:3000/api/students/{studentId}/context-flag \ -H "Authorization: Bearer <accessToken>" \ -H "Content-Type: application/json" \ -d '{ "flag_id": "CTX_SESSION_INTERRUPTED", "evidence_ref": "optional-string-reference", "session_ref": "optional-string-reference" }'

يُتحقَّق من جسم الطلب بـمخطط صارم (flag_id، evidence_ref، session_ref). تستخدم الحقول الثلاثة صيغة snake_case. أي مفتاح غير معروف في الجسم (بما في ذلك متغيرات camelCase مثل flagId أو relatedEvidenceId) يُعيد 422. evidence_ref وsession_ref سلاسل اختيارية.

تتطلب SELECT_CONTEXT_FLAG. تُعيد { studentId, contextFlagLogId, flagId }.

قراءة علامات السياق

curl https://localhost:3000/api/students/{studentId}/context-flags \ -H "Authorization: Bearer <accessToken>"

تتطلب VIEW_OWN_CLASSES أو RUN_BACKOFFICE.

ملاحظات المعلم للطباعة فقط

حين يرغب المعلم في التعليق غير الرسمي على سجل طالب، تدعم المنصة ملاحظات المعلم للطباعة فقط. هذه الملاحظات موجودة فقط في المتصفح وعلى الورق؛ لا تُرسَل إلى الخادم أبداً، ولا تُخزَّن، ولا تظهر في أي استجابة API. هذا التزام خصوصية V-12، لا قيد تقني يمكن التحايل عليه.

إدارة قواعد اللغة (الإدارة/الباك أوفيس)

نقطة النهايةالصلاحيةما تفعله
GET /api/language-rulesVIEW_OWN_CLASSES أو RUN_BACKOFFICEقائمة بجميع القواعد النشطة (الصفوف غير النشطة/المستبدَلة مستبعدة؛ السجل الكامل موجود في قاعدة البيانات للتدقيق فقط)
POST /api/language-rulesRUN_BACKOFFICEنشر إصدار قاعدة جديد
PATCH /api/language-rules/{id}/deactivateRUN_BACKOFFICEإلغاء تنشيط إصدار قاعدة قديم
POST /api/language-rules/validateVIEW_OWN_CLASSES أو RUN_BACKOFFICEتجربة سلسلة على القواعد النشطة دون حفظ

الاستخدام داخل العملية

المستهلكون الذين يحتاجون المرشِّح عند الكتابة (نقطة الاختناق لمساعد المعلم، توليد نص التنبيه) يستوردون sanitize وloadActiveRules مباشرةً من وحدة language-safety؛ لا حاجة لطلب HTTP.

صفحات ذات صلة