البنية التقنية
يعتمد النظام في بنيته التقنية على لغة C# مع إطار عمل .NET 10 (LTS) كمنصة أساسية لتطوير الخلفية، مع استخدام ASP.NET Core Razor Pages و Entity Framework Core لإدارة منطق الأعمال وتفاعل قاعدة البيانات. يتم استضافة الواجهة البرمجية داخل نفس مشروع التطبيق دون الحاجة إلى مشروع واجهة مستقلة، حيث تعتمد الواجهة على عرض الخوادم (Server-rendered) باستخدام نماذج ASP.NET Core MVC أو Razor Pages، مع استخدام مكتبة Bootstrap 5 لتنسيق التخطيط والألوان، ومكتبة jQuery لبرمجة التفاعلات الديناميكية، ولغة TypeScript لكتابة سكربتات الواجهة وضمان سلامة الأنواع. تُبنى قاعدة البيانات على Microsoft SQL Server، حيث تُكتب مخططات الجداول والاستعلامات خصيصاً لهذه البيئة لضمان الأداء الأمثل، بينما تعتمد اختبارات الوحدة على إطار xUnit دون الحاجة إلى تشغيل خادم قاعدة بيانات فعلي أثناء مرحلة الاختبار. يتكون مستودع الكود من حل واحد (.sln) يضم مشروعين رئيسيين: مشروع التطبيق الذي يحتوي على مجلدات منظمة وفق نمط MVC، حيث يضم مجلد Controllers منطق التحكم والتنقل، ومجلد Views القوالب الجاهزة للعرض، ومجلد Models كائنات البيانات والنماذج، ومجلد Data الذي يحتوي على سياق قاعدة البيانات (DbContext) وكائنات الكيانات (Entities) المرتبطة بسجلات الموظفين والبطاقات والقوالب وسجلات التدقيق، ومجلد Services الذي يحوي منطق الأعمال المنفصل مثل محرك توليد البطاقات وحساب مؤشرات الأداء، ومجلد wwwroot الذي يستضيف الملفات الثابتة مثل الصور والأيقونات ومكتبات Bootstrap وjQuery وTypeScript. أما المشروع الثاني فهو مشروع الاختبارات (xUnit) الذي يحتوي على اختبارات الوحدة لكل طبقة من طبقات النظام. تتبع جميع الوحدات قواعد تسمية موحدة، حيث تُسمّى الملفات بأسماء كائنها (PascalCase) وتُستخدم الأسماء ذاتية الوصف، وتُطبّق معالجة الأخطاء المركزية عبر استثناءات مخصصة مع رسائل واضحة للمستخدم، وتُخزَّن الإعدادات في ملفات JSON موحدة تُحمّل ديناميكياً، مع ضمان تشفير البيانات الحساسة أثناء النقل والتخزين وفقاً لمتطلبات الأمان المعتمدة.
الوحدات البرمجية
- MOD-01وحدة الأساسيات والإعدادات (Foundation & Configuration) في مجلد Data وModels: تضم سياق قاعدة البيانات (AppDbContext) ومخططات الكيانات (Entities) لسجلات الموظفين والبطاقات والقوالب وسجلات التدقيق، بالإضافة إلى ملفات الإعدادات (appsettings.json) ومفاتيح التشفير، وهي الوحدة التي تعتمد عليها جميع الوحدات الأخرى لضمان سلامة البيانات وتوافقها مع SQL Server.
- MOD-02وحدة إدارة بيانات الموظفين (Employee Management Module) في مجلد Controllers (EmployeeController) وViews (Employees): تنفذ منطق إضافة الموظفين الجدد وتعديل بياناتهم وحذفهم مع نافذة تأكيد، وتوفر الجدول الرئيسي القابل للبحث والفلترة حسب الإدارة والحالة، مع تطبيق التحقق الفوري من صحة الحقول قبل الحفظ في قاعدة البيانات.
- MOD-03وحدة محرك توليد البطاقات (Card Generation Engine) في مجلد Services (CardGenerationService): تتولى توليد تصميم البطاقة تلقائيًا بعد حفظ بيانات الموظف، وتدمج رمز الاستجابة السريعة (QR Code) الذي يحتوي على الرقم الوظيفي ورابط التحقق، مع دعم اختيار القالب المعتمد وتحديد العناصر الظاهرة على البطاقة.
- MOD-04وحدة الطباعة والتصدير (Printing & Export Module) في مجلد Services (PrintingService) وViews (CardPreview): تتيح معاينة البطاقة قبل الطباعة، وتنفيذ الطباعة الفردية أو الجماعية، وتوليد ملفات PDF للبطاقات، مع ضمان مطابقة المخرجات للتصميم المعتمد وسرعة الاستجابة.
- MOD-05وحدة نظام الصلاحيات والمصادقة (Authentication & Authorization Module) في مجلد Controllers (AccountController) وServices (AuthService): تطبق نظام تسجيل الدخول مع المصادقة الثنائية لمدير النظام، وتحدد صلاحيات الوصول لكل دور (مدير أو عادي)، ومنع المستخدم العادي من الوصول إلى أدوات الإدارة الحساسة.
- MOD-06وحدة سجلات التدقيق والامتثال (Audit & Compliance Module) في مجلد Services (AuditService) وViews (AuditLogs): تسجل جميع العمليات الحساسة (إضافة، تعديل، حذف، طباعة) مع اسم المستخدم والتاريخ والوقت، وتوفر إمكانية تصدير السجلات بصيغة CSV أو PDF، مع ضمان عدم قابلية التعديل أو الحذف للامتثال لسياسات الحفظ.
- MOD-07وحدة الواجهة المتعددة اللغات والتجاوب (Localization & Responsive UI Module) في مجلد wwwroot (TypeScript, CSS) وViews (Layouts): تدعم التبديل بين اللغتين العربية والإنجليزية مع الحفاظ على اتجاه النص (RTL/LTR) دون إعادة تحميل الصفحة، وتضمن تجاوب الواجهة مع أجهزة الكمبيوتر والأجهزة اللوحية والجوال، مع الالتزام بمعايير إمكانية الوصول (WCAG 2.1).
- MOD-08وحدة لوحة المؤشرات الرئيسية (Dashboard Module) في مجلد Controllers (DashboardController) وViews (Dashboard): تعرض مؤشرات الأداء الحية مثل إجمالي الموظفين، النشطين، والبطاقات المنتهية أو القريبة من الانتهاء، مع أزرار تنقل سريعة نحو الشاشات الفرعية، وتحديث البيانات لحظيًا.