- مقدمة
- العرض
- MVP
- خارطة الطريق
- متطلبات المنتج
- ابدأ الآن
- البيئة المحلية
- البنية المعمارية
- الهيكل
- الأنماط
- الحزمة التقنية
- قاعدة البيانات
- تعدّد المستأجرين
- الفهرس (Catalog)
- العمل دون اتصال
- المصادقة
- التهيئة (Onboarding)
- تدفق التكامل (Integration Flow)
- التهيئة (Provision)
- القبول
- الحضور
- الامتثال التنظيمي
- الملف الشخصي
- الاجتماعات
- إدارة الرسوم
- الفاتورة
- التدويل
- الترجمة
- دليل الترجمة
- أمان قاعدة البيانات
- المساهمة
- هَوْغوارتس
- عرض حي
- الإلهام
تمرّ كل مدرسة بسلسلة الاعتماديات نفسها. معظم الطبقات تُهيّأ تلقائياً لحظة اكتمال التهيئة الأولى — آلية التهيئة (المراحل، وإعادة التشغيل الآمن، وطبيب الإصلاح، ومحرّك التقويم المدرك للفصول الدراسية) موثّقة في التهيئة؛ هذه الصفحة هي الخريطة.
الترتيب يجسّد فكرة مقصودة واحدة: الجدول يأتي قبل الأشخاص. الجدول قابل للاشتقاق من البنية وحدها (صفوف × مواد × شُعب × جدولة)، فيُولَّد بلا معلمين. ثم يوضع الطلاب في الشُعب، ويُسند المعلمون إلى المواد — ويتدفق الحضور والاختبارات والدرجات والتقارير من هناك.
الطبقات
| الطبقة | الاسم | ما تنشئه | تعتمد على |
|---|---|---|---|
| 1 | الفهرس العام | Subject (لكل صف) ← فصول ← دروس | — |
| 2 | التهيئة الأولى | ملف المدرسة + مشغّل التهيئة | 1 |
| 3 | البنية الأكاديمية | AcademicLevel، AcademicGrade، AcademicStream | 2 |
| 4 | اختيار المواد | صفوف جسر SubjectSelection (صف ↔ فهرس) | 1، 3 |
| 5 | الجدولة | SchoolYear، وTerm ×N (مدرك للتقويم)، وPeriod، وSchoolWeekConfig | 2 |
| 6 | القاعات والشُعب | ClassroomType، Classroom، Section — N لكل صف | 3 |
| 7 | الجدول | حصص Timetable — شعبة × مادة × حصة × قاعة، بلا معلمين | 4، 5، 6 |
| 8أ | إسناد المعلمين | TeacherSubjectExpertise، TeacherDepartment، وteacherId للحصة | 4، 7 |
| 8ب | تنسيب الطلاب | Student.sectionId (+ StudentClass لمحور دفتر الدرجات) | 6 |
| 9 | الحضور | Attendance — كشوف الشُعب، مدرك للحصص عبر حصص الجدول | 7، 8ب |
| 10 | الاختبارات | SchoolExam، جلسات، تصحيح، ExamResult | 4، 8 |
| 11 | الدرجات والتقارير | ReportCard، شهادات، سجلات أكاديمية، ترفيع | 9، 10 |
| 12 | الوحدات التابعة | النقل، LMS، البث المباشر، المكتبة، المالية، الرسائل | متفاوت |
الطبقات 1–7 مهيّأة تلقائياً بالكامل. الطبقتان 8أ/8ب إجراءات إدارية بواجهات مساعدة. الطبقات 9–11 ميزات تشغيلية تضيء فور وجود اعتمادياتها.
الطبقة 1 — الفهرس العام
العمود الفقري المشترك. كل محتوى المنهج يعيش مرة واحدة في جداول عامة (بلا
schoolId)؛ والمدارس تتصل عبر جداول جسر.
Subject (لكل صف، لكل منهج: us-g1-math، sd-g7-arabic، …)
└─ Chapter
└─ Lesson
المواد لكل صف لا لكل مرحلة. المحتوى الذي ينشئه المعلمون يُحفظ PENDING +
PRIVATE، يراجعه مشغّل SaaS ثم يُنشر. المواد المقترحة من المدارس تمر بتدفق
الاقتراح الاختياري (موافقة ← نشر للفهرس ← المدرسة تضيف من المنتقي). المرجع
الكامل: الفهرس.
الطبقة 2 — التهيئة الأولى
إجابات التهيئة الأولى تقود كل ما بعدها:
| خطوة المعالج | تُحفظ في | تقود |
|---|---|---|
| الوصف | School.schoolType (public، private، international…) | ترشيح الهيكل، استنتاج المنهج |
| الموقع | School.country، city، state | استنتاج المنهج، تقويم الفصول |
| السعة | School.sectionsPerGrade، studentsPerSection | تهيئة القاعات/الشُعب |
| الجدولة | School.timetableStructure (معرّف الهيكل) | الحصص، أيام الدوام، تجاوز التقويم |
| محسوب | المعادلة |
|---|---|
maxClasses | grades × sectionsPerGrade |
maxStudents | maxClasses × studentsPerSection |
قبول الشروط في الخطوة القانونية يُطلق completeOnboarding() ← سلسلة التهيئة.
المراحل والترتيب ودلالات الإصلاح: التهيئة.
هياكل الجدول
~23 هيكلاً تعرّف توزيع الحصص الأسبوعي حسب الدولة ونوع المدرسة (sd-gov-default
8×45د الأحد–الخميس، gulf-standard 7×45د، us-standard 7×50د الاثنين–الجمعة،
ae-primary، jo-secondary، intl-default، …). يرتّبها
getRecommendedStructures(country, schoolType, schoolLevel):
| الإشارة | النقاط |
|---|---|
| مطابقة الدولة تماماً | +40 |
| مطابقة الإقليم | +25 |
البدل * | +5 |
مطابقة schoolType | +20 |
مطابقة schoolLevel | +10 |
نقاط ≥ 30 ← مُرشَّح؛ ≥ 50 ← اختيار تلقائي. خريطة الأقاليم: SA/AE/QA/KW/BH/OM ← GULF؛ EG/JO/LB/TN/MA/DZ ← MENA.
يمكن للهيكل أن يحمل تجاوز calendar — يتبع sd-british تقويم GB الثلاثي حتى
لو كانت دولة المدرسة SD.
الطبقة 3 — البنية الأكاديمية
ينشئ setupCatalogForSchool() الهرمية بحسب إعداد المنهج (SD العربي 6+3+3
بمساري العلوم/الأدب، US 5+3+4، GB Key Stages، CBSE، واحتياطي عام):
| النموذج | الحقول الأساسية |
|---|---|
AcademicLevel | level، levelOrder، startGrade، endGrade |
AcademicGrade | gradeNumber، levelId، yearLevelId |
AcademicStream | streamType (SCIENCE، ARTS)، gradeId |
يحدّد schoolLevel النطاق: primary ← صفوف 1–6، secondary ← 7–12،
both/فارغ ← 1–12.
الطبقة 4 — اختيار المواد
الجسر بين الفهرس العام وصفوف المدرسة — معرفة الصف والمنهج تعني معرفة
المواد. الإسناد التلقائي يطابق مصفوفات subject.grades في الفهرس بسلسلة
احتياطية تدريجية (دولة+منهج+نوع ← دولة+منهج ← عالمي ← أساس US)، ~99% يُسند
تلقائياً. التفاصيل: الفهرس.
ومن هناك تخصّص المدارس: إضافة مواد من أنظمة أخرى، إخفاء لكل صف (isActive)،
إخفاء فصول/دروس (ContentOverride)، إعادة تسمية (customName)، وضبط
weeklyPeriods — العدد الذي يجدوله مولّد الجدول أسبوعياً.
الطبقة 5 — الجدولة (مدركة للفصول الدراسية)
تشتق مرحلة الجدولة السنة الدراسية، وعدد الفصول، وحدود كل فصل، والفصل النشط
حالياً من دولة المدرسة وهيكلها وتاريخ اليوم — ACADEMIC_CALENDARS في
timetable/calendars.ts يربط كل دولة بنمط وزارتها (SA = فصلان بعد عودة 1447هـ،
AE/KW/GB = ثلاثة فصول، IN = سنة تبدأ في أبريل مع التفاف السنة، …).
ما يُنشأ: SchoolYear واحدة، وN من Term مع isActive صحيح التاريخ، وكل
Period من الهيكل، وSchoolWeekConfig (أيام الدوام + الغداء). كل سجل قابل
للتعديل لاحقاً من المدرسة ← الإعدادات ← الأكاديمية. جدول التقويمات الكامل
وسلسلة الحسم: التهيئة.
الطبقة 6 — القاعات والشُعب
إعدادات السعة (عدد الشُعب لكل صف + السعة) تنشئ N شعبة لكل صف، كل واحدة
مقترنة واحدة-بواحدة بـقاعة رئيسية واحدة فقط — Section.classroomId مفتاح
مفرد، فلا يمكن لشعبة أن تملك أكثر من قاعة رئيسية واحدة. نوع الغرفة يحكم:
القاعة الرئيسية من نوع classroom (قاعة Grade 7-A ↔ شعبة Grade 7-A). السلسلة المرسَّخة:
القاعة (رئيسية) ← ملك لصف ← الصف + المنهج ← المواد التي تُدرَّس هنا
الشعبة ← مجموعة الطلاب التي تسكن تلك القاعة
المختبرات والمساحات المشتركة شيء آخر — ليست مملوكة لصف ولا تُعيَّن أبداً
كقاعة رئيسية لشعبة؛ تُنشأ بنوع ClassroomType خاص بها (مختبر، حاسوب، مكتبة)
ويُوصَل إليها لكل حصة عبر الجدول (Timetable.classroomId)، ومتاحة للمولّد
للمواد المعلَّمة كمختبرات.
محور المقررات (سجلات Class)
منفصلاً عن الشُعب، الـClass هو مقرر-مادة واحد (Math – Grade 7، لكل فصل
دراسي) — محور التجميع المُقلَّل الأهمية الذي يحتاجه دفتر الدرجات. أُزيلت إجراءات
"توليد المقررات من الكتالوج" و"تسجيل الطلاب" من القاعات ← الإعداد (2026-06-18):
تبقى القاعات رشيقة (صفوف ← شُعب ← قاعة رئيسية واحدة)، ولأن الصف + المنهج يحدّدان
المواد سلفاً، تُدار Class/StudentClass في وحدة الفصول لا من صفحة الغرف. الجدول لم
يعد يتطلب سجلات Class؛ الاختبارات والنتائج والواجبات ما تزال (عمداً — راجع
سياسة classId القديم).
الطبقة 7 — الجدول
الحصص مبنية على الشُعب:
Timetable {
schoolId, termId, dayOfWeek, periodId,
sectionId, // مَن (المجموعة) — أساسي
subjectId, // ماذا
classroomId, // أين
teacherId, // مَن يدرّس — قابل للفراغ، يُسند لاحقاً
classId, // صفوف قديمة فقط — يُملأ sectionId عند التحرير
weekOffset
}
ثلاثة قيود فرادة تمنع الحجز المزدوج (الشعبة والقاعة والمقرر القديم لكل
حصة-فترة). التوليد التلقائي يوزّع مواد كل صف (weeklyPeriods لكلٍ) على أيام
الدوام × الحصص التدريسية في قاعة الشعبة، بلا معلمين. التحرير اليدوي في
الشبكة شعبة-أولاً أيضاً: اختر الشعبة + المادة (+ المعلم عند معرفته).
يرتّب getRecommendedStructures التوزيعات عند التهيئة الأولى؛ وإن لم توجد فصول
دراسية بعد، تعرض الشبكة مسودّة غير محفوظة مع زر تهيئة للمدير.
الطبقة 8أ — إسناد المعلمين
يرتبط المعلمون بـالمواد، ثم بـالحصص:
| الدور | أين | الوصف |
|---|---|---|
| خبير مادة | TeacherSubjectExpertise | التأهيل لكل مادة (expertiseLevel) |
| معلم الحصة | Timetable.teacherId | من يدرّس هذه الشعبة-الفترة |
| رائد الفصل | Section.homeroomTeacherId | إشراف تربوي، لكل شعبة |
| عضو/رئيس قسم | TeacherDepartment | isPrimary، isDepartmentHead |
| معلم مقرر | Class.teacherId + ClassTeacher | محور المقررات (دفتر الدرجات، co-teaching) |
يُحظر deleteTeacher ما دامت مراجع Class.teacherId أو Timetable موجودة؛
ويُحظر deleteSubject على مراجع الخبرة أو المقررات أو الاختبارات أو بنك
الأسئلة.
الطبقة 8ب — تنسيب الطلاب
معالج القبول ذو الخمس خطوات ينتهي بـADMITTED ← التنسيب:
placement-dialog.tsx(لكل طالب) وbulk-placement.tsx(دفعة) كلاهما يستدعيplaceStudentInSection(applicationId, sectionId)— يتحقق منmaxCapacity، يضبطStudent.sectionId(التنسيب التشغيلي)، ثم — فقط عندما تكون الشعبة مرتبطة بـAcademicGrade— ينشئ صفوفStudentClassلمقررات الصف ويزامنEnrollmentفي LMS. الشعبة بلاgradeIdتحصل على التنسيب لكنها تتخطى مزامنة المقررات وLMS بصمت.- عبر الشعبة يرث الطالب القاعة والجدول وكشف الحضور. وعبر StudentClass يظهر في دفاتر الدرجات والاختبارات.
- يفسّر
extractGradeNumber()فيsrc/lib/grade-utils.tsالصفوف الحرة النص ("Grade 5"،"5th grade"،"الصف الخامس").
الطبقة 9 — الحضور
الحضور مبني على الشُعب: الكشف هو Student.sectionId (لا StudentClass)،
ووضع الحصص يضيء مباشرة من الجدول —
- نطاق المعلم: يستطيع المعلم تسجيل الشُعب التي له فيها حصص جدول (أو ريادة فصل).
- الاختيار التلقائي للحصة الحالية: الـ
Periodالنشطة × حصة المعلم تحسم الشعبة تلقائياً. - تسجيل الحصص يكتب
sectionId+periodId+timetableId؛ وتسجيل اليوم الكامل يعمل بلا جدول إطلاقاً. - صفوف
classIdالقديمة تبقى تاريخاً للقراءة فقط.
الحالة: ~92%، مقوّى للإنتاج (تدقيق أمني 2026-06-02، 575 اختباراً أخضر). الامتثال (ADEK eSIS) يصدّر سجلات الوضع اليومي. المرجع الكامل: الحضور.
الطبقة 10 — الاختبارات
كومة التقييم تعمل على محور المقررات (classId + subjectId):
SchoolExam ← ExamSession ← StudentAnswer ← MarkingResult ← ExamResult
QuestionBank ← GeneratedExam ← GeneratedPaper
Result (درجات الواجبات / المنزلية)
جدولة الاختبارات تفحص حصص الجدول للتعارضات (طبقة تطبيق). أبرز المفتوح من تدقيق
الإنتاج: نموذجا نتائج متنافسان (Result + ExamResult)، وعدم تطابق دقة
الدرجات (Int مقابل Decimal)، وسلاسل حذف لا تحفظ دليل الشهادة — متتبَّعة في
سجلات وحدة الاختبارات. المرجع الكامل: الاختبارات.
الطبقة 11 — الدرجات والتقارير
ExamResult + Result
← ReportCard (لكل طالب لكل فصل دراسي) ← ReportCardGrade (لكل مادة)
├─ شهادة PDF (محرّك تركيبي، 4 قوالب إقليمية) — جاهز للإنتاج
├─ السجل الأكاديمي (لقطة مجمّدة متعددة السنوات، تحقق QR)
├─ إشعارات (grade_posted، report_ready، certificate_issued، promotion_decided)
└─ الترفيع / الإبقاء ← Student.academicGradeId
الترفيع يعمل لكل صف (PromotionPolicy بـgradeId): تقييم دفعة ← المعدل +
المواد الراسبة + نسبة الحضور (الطبقة 9 تغذّي الطبقة 11) ← مراجعة إدارية ←
تنفيذ (StudentYearLevel، إعادة إسناد الصف) ← إشعار.
فجوة معروفة: مقياسا DEFAULT_BOUNDARIES مختلفان (تقارير 9 درجات مقابل درجات 12
درجة) عندما لا يوجد SchoolGradingConfig — وحّدهما قبل الاعتماد على الدرجات
الحرفية.
الطبقة 12 — الوحدات التابعة
كل وحدة تستهلك محوراً مختلفاً من النواة الأكاديمية:
| الوحدة | تستهلك | الاقتران |
|---|---|---|
| البث المباشر | sectionId (الأهلية + التوزيع)، timetableId، termId | مبني على الشُعب |
| النقل | studentId فقط (مسارات، صعود) | منفصل عن الشُعب/الجدول |
| LMS (Lumos) | catalogSubjectId (تسجيل لكل مادة فهرس) | مبني على الفهرس لا الشُعب |
| المكتبة | schoolId فقط (تبنّي كتب عالمي-أولاً) | منفصل تماماً |
| المالية | studentId (إسناد رسوم)، classId? تجميع اختياري | مبني على الطلاب |
| الرسائل/واتساب | مجموعات Section + مجموعات Class | كلا المحورين |
لا شيء منها يعطّل السلسلة الأكاديمية؛ كلٌّ يُفعَّل مستقلاً باكتمال إعداده.
أنماط الفشل
| الناقص | يعطّل |
|---|---|
| الفهرس | اختيار المواد، توليد الجدول |
| البنية الأكاديمية | اختيار المواد، الشُعب |
| الفصول الدراسية | الجدول (تظهر المسودّة)، وضع الحصص في الحضور |
| الشُعب | توليد الجدول، كشوف الحضور، التنسيب |
SubjectSelection | توليد الجدول (No sections have subjects) |
| حصص الجدول | وضع الحصص في الحضور، نطاق المعلم، البث-من-الحصة |
StudentClass | دفاتر الدرجات، تسجيل الاختبارات (لا الجدول — الشعبة تغطيه) |
| الاختبارات/النتائج | بطاقات التقارير، السجلات الأكاديمية |
| بطاقات التقارير | الترفيع (المعدل مطلوب) |
أنماط فشل التهيئة وفحص الجاهزية في التهيئة.
انظر أيضاً
- التهيئة — محرّك التهيئة التلقائية، والتقويمات المدركة للفصول، والطبيب
- التهيئة الأولى
- الفهرس
- القبول
- الحضور
- تعدد المستأجرين
On This Page
الطبقاتالطبقة 1 — الفهرس العامالطبقة 2 — التهيئة الأولىهياكل الجدولالطبقة 3 — البنية الأكاديميةالطبقة 4 — اختيار الموادالطبقة 5 — الجدولة (مدركة للفصول الدراسية)الطبقة 6 — القاعات والشُعبمحور المقررات (سجلاتClass)الطبقة 7 — الجدولالطبقة 8أ — إسناد المعلمينالطبقة 8ب — تنسيب الطلابالطبقة 9 — الحضورالطبقة 10 — الاختباراتالطبقة 11 — الدرجات والتقاريرالطبقة 12 — الوحدات التابعةأنماط الفشلانظر أيضاً