CED Tunisia · تدريب التخرج · فبراير إلى أغسطس 2026
Collaboris
مكتبة حضور فوري لتطبيقات الويب المؤسسية، مع سجل متوافق مع GDPR بالتصميم ومساعد ذكاء اصطناعي محكوم فوقه.
- دوري
- من البداية إلى النهاية: المعمارية، التنفيذ، التغليف، النشر، العرض التنفيذي
- الفترة
- فبراير إلى أغسطس 2026، ثلاثة إصدارات
التقنيات
- Angular
- TypeScript
- C#
- .NET
- SignalR
- Redis
- SQL Server
- Cosmos DB
- Python
- FastAPI
- Azure OpenAI
- MCP
- Azure
- Azure DevOps
- npm
- NuGet
في السيرة الذاتية
- بنيت Collaboris، مكتبة حضور فوري لتطبيقات الويب المؤسسية، مسلّمة كحزمتين قابلتين للتثبيت: مكتبة Angular 19 (npm) وSDK بـ ASP.NET Core 8 (NuGet) فوق SignalR وRedis. سُلّمت في ثلاثة إصدارات تحت مراجعة رئيس القسم.
- قدمت المعمارية والحوكمة والجدوى لرئيس القسم ومديري CED التنفيذيين.
- صممت تسلسل هوية من خمس طبقات يتعرف على المستخدمين من جلسة التطبيق المضيف القائمة، فلا يسجل أحد الدخول مرتين.
- بنيت محلل عرض متعدد الطبقات: MutationObserver محدود النطاق ومؤجل يحدد موقع كل مستخدم حتى الحوار أو التبويب أو خطوة المعالج المفتوحة.
- كشفت النشاط الحقيقي بتغليف fetch وXMLHttpRequest (طرق الكتابة فقط، قائمة استثناء، نافذة إزالة تكرار) وجمعت كل التبويبات على WebSocket واحد عبر SharedWorker.
- بنيت PresenceAI، طبقة البيانات والذكاء الاصطناعي: التقاط تغييرات يبث إشارات Redis الحية إلى سجل Cosmos DB (OLTP إلى OLAP، Python/FastAPI)، يُستعلم بلغة طبيعية عبر مساعد Azure OpenAI محكوم عبر MCP.
- طبّقت الامتثال لـ GDPR بالتصميم (تقليل البيانات، الموافقة، احتفاظ 30 يوماً عبر TTL، وصول مغلق افتراضياً، سقوف كلفة) وغطّيت طبقة الذكاء الاصطناعي باختبارات وحدة.
- نشرت المكدس الكامل على Azure (App Service، SQL Server، Azure Cache for Redis) عبر خطوط بناء وإصدار Azure DevOps، مع ترحيل طبقة بيانات الواجهة من PostgreSQL إلى SQL Server.
المشكلة
موظفا مطالبات يفتحان السجل نفسه في تطبيق داخلي في الوقت نفسه. لا يعلم أحدهما بوجود الآخر. الأول يحفظ. الثاني، انطلاقاً مما رآه قبل لحظة، يحفظ أيضاً ويمحو الأول بصمت. لا تحذير، لا تعارض. آخر حفظ يفوز، ولا يلاحظ أحد حتى يلاحظ عميل.
تطبيقات الويب المؤسسية عمياء عن مستخدميها. السؤال: كيف نجعل أي تطبيق داخلي واعياً بمن فيه وما يتغير، دون إعادة بنائه، ودون أن تصبح بيانات الحضور أداة مراقبة.
ما بنيته
Collaboris مكتبة جاهزة: يثبّت تطبيق Angular المضيف حزمة npm، وتضيف خلفيته حزمة NuGet، وكتلة إعداد واحدة تربط كل شيء. يرى المستخدمون من حاضر، حتى الحوار أو التبويب أو خطوة المعالج المفتوحة، ويُنبَّهون حين تتغير البيانات أمامهم. الهوية من جلسة المضيف القائمة.
أضاف الإصدار الثالث PresenceAI: يُلتقط تدفق الحضور العابر في سجل دائم محدود الاحتفاظ في Cosmos DB، ويستطيع مديرون مصرح لهم سؤاله بلغة طبيعية عبر مساعد Azure OpenAI محكوم، معروض أيضاً عبر MCP. Redis يحمل ما يحدث؛ Cosmos يحمل ما حدث.
سُلّم كل شيء كحزم حقيقية يثبّتها المضيف كما يفعل العميل، ونُشر على Azure عبر خطوط Azure DevOps.
كيف يعمل
يتحرك تلقائياً. انقر على خطوة للإيقاف.
القرارات والمقايضات
- مخزنان بدل واحد
- الزمن الحقيقي يريد قراءات بالميكروثانية وحالة عابرة؛ التحليلات تريد تاريخاً وتجميعات. Redis وCosmos DB، يربطهما خط لا ينتظره المسار المباشر أبداً.
- خط حتمي بدل سجل يبنيه LLM
- الكلفة وقابلية التكرار والثقة. التاريخ نفسه ينتج السجل نفسه دائماً. النموذج يعيش على الأطراف فقط.
- تركيب الجلسات عند الكتابة
- بدل نسخ كل لقطة ثم الحذف، يقرر الخط عند الإدخال ما يستحق الوجود. التخزين محدود بالبناء، وهذا ما تطلبه GDPR أيضاً.
- قائمة مسموح بها بدل أدوار المضيف للوصول إلى الذكاء الاصطناعي
- دلالات الأدوار لا تنتقل بين البلدان والتطبيقات. مالك كل تطبيق يعلن من يسأل؛ الافتراضي لا أحد.
- المضيف يتحقق، المكتبة تقرأ
- أُزيل مخطط JWT الخاص بـ SDK في مراجعة التكامل: مكتبة لا تستطيع امتلاك سياسة أمان مضيفها. الإزالة فعل تصميم.
- توليد معزز بالذاكرة المؤقتة بدل الاسترجاع
- السجل صغير بالبناء؛ الملخصات الحديثة تتسع في السياق. لا بنية متجهات.
- Python وFastAPI لطبقة الذكاء الاصطناعي في بيت .NET
- استهلاك تدفق غير متزامن، تحقق منمّط، بث أصلي ومنظومة الذكاء الاصطناعي، كخدمة قابلة للنشر مستقلاً.
الحوكمة
- تقليل البيانات
- إحداثيات العمل فقط: هوية، موقع، حالة، أحداث تغيير. لا محتوى ولا قيم نماذج ولا ضغطات مفاتيح أبداً.
- الموافقة
- صريحة ومستنيرة وقابلة للإلغاء، تُجمع قبل أي تتبع؛ شاشة تأكيد الهوية تبيّن ما سيُشارك.
- الاحتفاظ عبر المخطط
- مهلة 30 يوماً على السجلات الدقيقة تفرضها القاعدة نفسها. ما لم يُكتب لا يمكن أن يتسرب.
- مراقبة مستحيلة بالبناء
- يخزن السجل أعداداً لا تقييمات فردية. أسئلة الحكم والتنبؤ عن الأفراد مرفوضة بالتصميم لا بالسياسة.
- وصول مغلق افتراضياً وسقوف كلفة
- لا إدخال في القائمة، لا وصول. سقوف لكل سؤال وشهرية على طبقة الذكاء الاصطناعي.
- سجلات المعالجة
- كل سؤال وتصنيف وإجابة ورفض مسجَّل. طبقة الذكاء الاصطناعي مغطاة باختبارات وحدة.
ما تعلمته
- لا تثق أبداً بصحة يعلنها المكوّن عن نفسه. أصعب خطأ: اتصال يقول إنه سليم بينما جانب الاستقبال ميت؛ الحل كان تتبع عمر آخر رسالة مستلمة.
- مؤلف المكتبة لا يتحكم بشيء: لا عادات المضيف ولا تخزينه ولا نشره. التصميم لذلك تخصص مختلف عن بناء تطبيق.
- قارن أولاً. كل مكوّن بدأ بكيف تحل الصناعة المشكلة أصلاً، ويوم صمتت المراجع عرفت أي جزء من المشروع كان لي.
- الإزالة فعل تصميم. محرك عروض استدلالي، ومرتّب خطورة، ومسار تخزين بياني، وطبقة مصادقة SDK بُنيت وقُيّمت وحُذفت، كل منها بحجة مكتوبة.
بُني داخل مستودع شركة خاص. الأسماء وبيانات الاعتماد والمعرّفات الداخلية محذوفة عمداً.
دراسة الحالة التالية
نظام استخبارات السوق