الأدلة دي بتطابق مفاهيم المجال مع العناصر الموجودة في المنصة دلوقتي (bouquets وخطوط وحزم وحسابات موزّعين وعقد والـ API). دي مطابقات مفاهيمية، مش ميزات خاصة بمجال، وحساب الموزّع حساب مفوَّض، مش tenant معزول.
المطابقة المفاهيمية
مفيش حاجة في اللوحة اسمها كلية أو فصل دراسي أو طالب. الجدول بيقول أنهي كائن بيلعب أنهي دور؛ والفصول اللي تحت بتظبطهم بالترتيب ده.
| في مجالك | على المنصة | فين في اللوحة |
|---|---|---|
| حساب كلية أو قسم | حساب موزّع (reseller): لوحة مفوَّضة بكريديت وصلاحيات وخطوطه الخاصة | Users → ضيف موزّع؛ Groups لصلاحياته |
| مجموعة كلية أو قنوات الحرم | Bouquet: مجموعة مسمّاة من القنوات أو الأفلام أو المسلسلات اللي الحزمة بتديها | Bouquets، من Streams وMovies / Series |
| قناة الحرم أو فعالية مباشرة | قناة مباشرة: بث بمصادره وEPG وصيغ الإخراج | Streams → ضيف بث مباشر (رابط المصدر أو RTMP push) |
| أرشيف المحاضرات | كتالوج VOD: أفلام ومسلسلات بمواسم وحلقات وتصنيفات وبيانات وصفية | Movies وSeries، أو مهمة استيراد VOD |
| وصول طالب أو موظف | الخط: وصول واحد بحزمته وbouquets وانتهائه وحد اتصالاته ومخرجاته | Lines → إضافة، أو أكواد التفعيل، أو الـ Reseller API |
| نهاية الفصل الدراسي أو التسجيل | تاريخ انتهاء الخط، بيتجدّد بحزمة أو كريديت أو الـ API | تاريخ انتهاء الخط ومدة الحزمة |
| عقدة حرم أو مدينة جامعية | عقد البث: سيرفرات حافة بتتسجّل من اللوحة، واحدة لكل موقع أو مبنى | Servers → ضيف Node، بتتثبّت عن طريق SSH |
| تكامل نظام معلومات الطلاب | Reseller API وwebhooks: عمليات اللوحة من نظامك إنت | مفاتيح Reseller API وwebhooks في لوحة الموزّع |
المتطلبات
اللي لازم يكون موجود قبل التثبيت.
- سيرفر في الحرم الرئيسي (Ubuntu 22.04 أو 24.04) ممكن توصله من الحرم التانية والمدن الجامعية، والمثبّت، وعنوان داخلي أو نطاق ورا الريفرس بروكسي بتاعك.
- بث قنوات الحرم وتسجيلات المحاضرات (أو اللي بيصدّره نظام التقاط المحاضرات)، وقدرة نظام معلومات الطلاب على نداء HTTP API.
- قرار بخصوص الهيكل: أنهي كليات تاخد حساب شريك، وإزاي بتتسمّى سلاسل المحاضرات، وحزمة الفصل الدراسي بتدوم قد إيه.
نشر البنية
الحرم الرئيسي الأول، وبعدين المواقع التانية.
- شغّل المثبّت على سيرفر الحرم الرئيسي؛ وحط اللوحة ورا الريفرس بروكسي بتاع الجامعة واضبط الوكلاء الموثوقين عشان السجلات وقواعد IP تشوف العناوين الحقيقية.
- اضبط أساس التشغيل على العنوان اللي الطلاب بيوصلوله من الحرم والمدن الجامعية.
- سجّل Node لكل حرم ولكل مدينة جامعية من Servers؛ اللوحة بتثبّتها عبر SSH وبتوجّه مشاهدي الموقع ده ليها.
- اضبط مفتاح الرخصة على السيرفر؛ والمؤسسة على نطاق أكاديمي تقدر تطلب مفتاح Professional المجاني من برنامج التعليم بالإيميل.
تنظيم المحتوى
مجموعات الكليات وقنوات الحرم.
- اعمل تصنيفات لكل كلية ومادة، ومسلسل لكل مقرر بموسم لكل فصل وحلقة لكل محاضرة.
- اعمل bouquet لكل مجموعة كلية، وواحد لقنوات الحرم، وواحد للمواد المشتركة زي فيديوهات التعريف.
- اعمل حزم للطلاب والموظفين: الـ bouquets اللي كل واحد محتاجها، والفصل الدراسي كمدة، فالوصول بينتهي بانتهاء الفصل إلا لو اتجدّد.
- اعمل حزمة تجريبية قصيرة للأيام المفتوحة أو الطلاب الزائرين.
إعداد الشركاء (الموزّعين)
الكليات كحسابات مفوَّضة.
- اعمل مجموعة بصلاحيات للخطوط وللكتالوج الخاص بالكلية، ومن غير وصول للإعدادات.
- ضيف كل كلية أو قسم كحساب شريك (موزّع) بالمجموعة دي وحزمه؛ وموزّعين فرعيين ممكن يحاكوا الأقسام جوه الكلية.
- الكلية مش بتشوف وتدير غير خطوطها؛ والفريق المركزي بيحتفظ بالرؤية الكاملة. وهو حساب مفوَّض مش تثبيت معزول.
إعداد وصول الطلاب
خط لكل طالب، من نظام معلومات الطلاب.
- اعمل مفتاح Reseller API لنظام معلومات الطلاب واحتفظ بيه في أسرار النظام ده.
- عند التسجيل نظام معلومات الطلاب بينادي action=create_line مع حزمة الطالب ومعرّف الطلب؛ ومدة الحزمة، يعني الفصل الدراسي، هي فترة الوصول.
- اضبط max connections على عدد الأجهزة اللي الطالب يقدر يستخدمها مع بعض (عادةً اتنين: الموبايل واللابتوب).
- للموظفين وللتجربة، ضيف خطوط من Lines ← إضافة وسلّم بيانات الدخول.
أرشيف المحاضرات
تسجيلات عند الطلب.
- ارفع كل تسجيل كمصدر حلقة أو استورده بمهمة استيراد الفيديو عند الطلب؛ واحتفظ بعنوان المقرر ووصف قصير.
- اربط المسلسل بـ bouquet الكلية، فمفيش غير الطلاب اللي حزمتهم بتديه هيشوفوا المقرر.
- افحص التشغيل بخط تجريبي من كل حزمة عشان تتأكد مين بيشوف إيه.
قنوات الحرم والفعاليات المباشرة
قنوات مباشرة للحرم.
- ضيف بث قنوات الحرم كبثوث مباشرة تحت Streams، ومصدر EPG للدليل.
- ضيف بث مباشر لكل قاعة محاضرات أو فعالية، بيغذّيه مشفّر القاعة عبر RTMP، وفعّل Catch-up عشان المتأخرين يقدروا يرجعوا لورا.
- حط كل قناة في الـ bouquet المناسب؛ والـ Nodes في المدن الجامعية بتاخدها مرة واحدة من المصدر الأصلي وبتخدم الطلاب محليًا.
الانتهاء والتجديد
الفصل الدراسي كصلاحية للخط.
- الخط بينتهي في نهاية فترة حزمته؛ وعند إعادة التسجيل نظام معلومات الطلاب بينادي action=renew_line فبتتضاف فترة تانية.
- لما طالب بينسحب أو بيتخرج نظام معلومات الطلاب بينادي action=disable_line.
- اشترك نظام معلومات الطلاب في webhooks عشان يطابق الخطوط اللي بتقرّب تنتهي والمنتهية مع سجلاته.
التكامل مع نظام معلومات الطلاب
نظام معلومات الطلاب بيدير الوصول؛ والمشغّل بيشغّل.
- نظام معلومات الطلاب بيعمل الخطوط ويجدّدها ويفعّلها ويوقفها عبر Reseller API بمفتاح ومعرّف طلب.
- مفيش تسجيل دخول موحّد للمشاهدين ولا تكامل أصلي مع LMS أو SIS: الطالب بيسجّل الدخول للمشغّل ببيانات الخط، وصفحة المقرر في LMS ممكن تربط بمشغّل الويب.
- استخدم مفاتيح Admin API بعلامة القراءة فقط وقائمة IP مسموحة وتاريخ انتهاء لأدوات التقارير الداخلية.
اعتبارات الأمان
اقصر الوصول على الطلاب والموظفين.
- خلّي المنصة على شبكة الحرم أو ورا الريفرس بروكسي مع TLS؛ واضبط TRUSTED_PROXIES على البروكسي.
- تسجيل دخول بخطوتين لكل حساب في اللوحة ومجموعة صلاحيات لكل دور، عشان كلية ما تشوفش خطوط كلية تانية.
- روابط تشغيل موقّعة وبتنتهي، وحد اتصالات لكل خط، وربط ببلد أو عنوان حيث ينفع.
- نسخ احتياطية مشفّرة لقاعدة البيانات مع نسخة برا الموقع، وسجل التدقيق لكل تغيير في الخطوط والكتالوج.
حل المشاكل
الفحوص الأولى المعتادة.
- طالب مش شايف محاضرات: افحص تاريخ انتهاء الخط، وبعدين الحزمة والـ bouquets اللي بتديها.
- طالب جديد من غير وصول: افحص إن نداء نظام معلومات الطلاب نجح في سجل نداءات Reseller API وإن معرّف الطلب جديد.
- مدينة جامعية بتقطّع بالليل: افحص نبض الـ Node بتاعتها وإن المشاهدين متوجّهين ليها.
- سجل التدقيق بيعرض عنوان البروكسي: اضبط TRUSTED_PROXIES على البروكسي وأعد تشغيل اللوحة.