هذا النظام هو الحل الأمثل لإدارة العمالة والموظفين، خصوصاً في بيئات العمل التي تتضمن مواقع متعددة (مثل المواقع الهندسية أو الإنشائية) حيث يكون الاتصال بالإنترنت غير مستقر، والاعتماد على العمالة باليومية (اليوميات) بجانب الموظفين الثابتين.
لتحقيق متطلب أن يعمل النظام أوفلاين ويقرأ ملفات إكسيل من جهاز البصمة مع الربط بـ Firebase، فإن أفضل هيكل برمجي لبناء هذا النظام هو تحويله إلى تطبيق سطح مكتب (Desktop Application) باستخدام تقنيات الويب: Electron.js مع React.js (أو تقنيتك المفضلة في الواجهة الأمامية).
إليك التقسيم الفني والمنطقي لبناء هذا النظام:
1. التقنيات المطلوبة (Tech Stack)
بيئة التشغيل: Electron.js (لتحويل النظام إلى برنامج يثبت على الويندوز، مما يسهل قراءة ملفات الإكسيل المحلية والعمل بدون إنترنت).
قاعدة البيانات والتزامن: Firebase Firestore.
المصادقة: Firebase Authentication.
مكتبة قراءة الإكسيل: xlsx (SheetJS) لقراءة ملفات البصمة وتحليلها.
2. وحدات النظام الأساسية (System Modules)
أ. إدارة الموظفين وتسكين المواقع (HR & Site Allocation)
ملف الموظف: (الاسم، كود البصمة، الراتب الأساسي أو فئة اليومية، التخصص/المهنة).
تسكين المواقع: ربط كل موظف أو عامل بموقع عمل محدد (مثال: موقع أ، موقع ب).
يفيد هذا في فلترة التكاليف والرواتب لكل موقع على حدة، ومعرفة أين يتواجد كل عامل.
ب. نظام الحضور والانصراف (ملفات البصمة)
رفع الإكسيل: شاشة تتيح للمستخدم رفع ملف الإكسيل المستخرج من جهاز البصمة (مثل أجهزة ZKTeco).
المعالجة البرمجية: تقوم مكتبة SheetJS بقراءة الصفوف، ومطابقة "كود البصمة" الموجود في الإكسيل مع "كود الموظف" في قاعدة البيانات.
تسجيل الحضور: حساب وقت الدخول والخروج، وتحديد ساعات التأخير، والغياب، والإضافي بناءً على وردية الموظف.
ج. الرواتب واليوميات (Payroll)
نظام اليوميات: حساب المستحقات للعاملين باليومية (عدد الأيام المحضورة × فئة اليومية).
الرواتب الثابتة: حساب الراتب الشهري بعد خصم الغياب والتأخيرات وإضافة المكافآت أو الساعات الإضافية.
استخراج كشوف الرواتب واليوميات مفلترة حسب (الموقع، أو تاريخ محدد، أو نوع العمالة).
د. نظام المستخدمين والصلاحيات (Auth)
شاشة تسجيل دخول (يوزر وباسورد) باستخدام Firebase Auth.
صلاحيات مختلفة: (مدير نظام يرى كل شيء، مسؤول موقع يرى عمال موقعه فقط ويسجل حضورهم).
3. كيف يعمل النظام "أوفلاين" مع Firebase؟ (السر التقني)
ميزة Firestore القوية هي دعمها الكامل للعمل دون اتصال بالإنترنت (Offline Persistence).
عند غياب الإنترنت: يقوم النظام بحفظ أي موظف جديد تضيفه، أو أي ملف بصمة ترفعه في قاعدة بيانات محلية داخل الجهاز (IndexedDB).
عند عودة الإنترنت: يقوم Firestore تلقائياً بعمل مزامنة (Sync) ورفع كل البيانات المخزنة محلياً إلى السيرفر السحابي دون أي