Site Ledger
نظام حضور ورواتب لموقع إنشاء مستشفى
نظام خاص بالعميل · بموجب اتفاقية سرية
ملخص المشروع
نظام خاص للحضور والرواتب الأسبوعية لموقع إنشاء مستشفى جامعي. تُمسح بطاقات QR عند البوابة، ويمر العمل الإضافي والتأخير بموافقات منفصلة، ويُغلق كل أسبوع بكشف موقّع. تبقى البيانات الحقيقية لدى العميل، لذا تعتمد دراسة الحالة هذه على بيانات تجريبية.
تبني مؤسسة وقفية خيرية مستشفى جامعيًا، وكانت الرواتب الأسبوعية للموقع محفوظة في ملف Excel واحد يُعبّأ يدويًا: أكثر من 5,000 صف للورديات، وأربع أوراق مترابطة، وتصحيحات تُكتب فوق ما كان قبلها. كان الملف يؤدي الغرض، لكن كل يوم لصرف الرواتب كان يعتمد على دقة شخص في الكتابة، ولم يكن ممكنًا تتبّع أي أسبوع متنازع عليه إلى أي أصل.
كانت قواعد ذلك الملف قد صمدت أمام شهور من الرواتب الفعلية، فنُقلت كما هي تمامًا: حد أقصى للساعات العادية قدره 10 ساعات، وعمل إضافي يُحتسب بمعدل 1.5 ضعف فقط بعد أن يعتمده شخص مسؤول، وقاعدة ليوم السبت تنقل تسجيل الدخول بعد الظهر إلى أسبوع الرواتب التالي، حتى لا تنقسم وردية تمتد إلى يوم الأحد إلى قسمين. وأصبح التأخير موافقة مستقلة بدلًا من خصم تلقائي، فيستطيع رئيس العمال اعتماد العمل الإضافي في وردية ما بينما لا يزال يراجع التأخير فيها.
يمسح العمال بطاقة QR مغلّفة على جهاز لوحي عند البوابة موصول بماسح USB. الخادم هو من يسجّل الوقت، لا الجهاز أبدًا، والتسجيلات تُضاف فقط ولا تُعدَّل: التصحيح يشير إلى الصف الذي يحل محله بدلًا من الكتابة فوقه. ويُغلق كل أسبوع بكشف موقّع يحفظ بصمة (hash) للمستند، فإذا تغيرت البيانات الأساسية يومًا نبّه النظام إلى ذلك، ويُصدّر موظفو الرواتب التنسيق نفسه الذي اعتادوا اعتماده.
يعمل النظام بلغة PHP 8 خالصة مع MySQL على استضافة مشتركة، دون إطار عمل ودون خطوة بناء، لأن هذا ما تشغّله استضافة العميل. استبعد ذلك بعض المكتبات، فكُتب مولّد رموز QR وكاتب ملفات Excel بصيغة xlsx من الصفر. والوصول محمي بتسجيل دخول إلزامي بخطوتين عبر TOTP، وتقييد لمحاولات الدخول، ورموز CSRF، وكشك لا يعمل إلا على جهاز لوحي جرى إقرانه عبر رابط يُستخدم مرة واحدة.
ما تم تسليمه
- كشك لمسح بطاقات QR على جهاز لوحي مُقترن عند البوابة مع ماسح USB
- محرك رواتب يحافظ على قواعد الملف الأصلي: حد 10 ساعات، وعمل إضافي معتمد بمعدل 1.5 ضعف، وقاعدة يوم السبت
- اعتماد العمل الإضافي والتأخير كلٌّ على حدة، حسب الدور
- تسجيلات تُضاف فقط: التصحيحات تشير إلى الأصل ولا تكتب فوقه
- كشوف أسبوعية موقّعة ببصمة (hash) تكشف أي تعديل لاحق
- مولّد QR وكاتب ملفات xlsx دون أي مكتبات خارجية، ليعملا على الاستضافة المشتركة
- نقل أكثر من 5,000 صف من سجلات الورديات السابقة من Excel
- الدور
- تصميم المنتج، والتطوير المتكامل، والنشر
- السنة
- 2026
من ملف يُعبّأ يدويًا إلى مسحة واحدة عند البوابة
كانت رواتب الموقع بأكمله محفوظة في ملف Excel واحد. احتفظ النظام الجديد بكل قاعدة كانت تعمل أصلًا، واستبدل كل ما عداها.
- 5,000+صف وردية أُدخل يدويًا
- 4أوراق مترابطة تحمل الرواتب
- 0أثر يبقى عند تصحيح أي صف
- مسحة واحدةلتسجيل دخول العامل عند البوابة
- 2موافقتان منفصلتان: العمل الإضافي والتأخير
- نقرة واحدةللحصول على كشف موقّع أو تصدير ملف Excel
من البطاقة إلى الكشف الموقّع
- 01بطاقة QRمغلّفة، واحدة لكل عامل
- 02كشك البوابةجهاز لوحي مُقترن مع ماسح USB
- 03ساعة الخادملا يُعتمد على وقت الجهاز أبدًا
- 04سجل إضافة فقطالتصحيحات تشير إلى الأصل ولا تكتب فوقه
- 05الموافقاتالعمل الإضافي والتأخير، حسب الدور
- 06كشف موقّعتُحفظ بصمته (hash) ثم يُصدَّر إلى Excel
الكشك ومحرك الرواتب، على بيانات تجريبية
امسح بطاقة، وحرّك الأوقات، ثم اعتمد العمل الإضافي والتأخير أو أجّلهما. القواعد حقيقية، أما العمال والأجور فافتراضية.
اختر بطاقة، ثم امسحها.
الخادم هو من يسجّل الوقت، وساعة الجهاز اللوحي لا تؤثر في الرواتب أبدًا.
العمال والأجور افتراضية، والقواعد مطابقة للمحرك الحقيقي.
ما يراه المسؤولون
الشاشات الحقيقية مُعاد رسمها بصفوف تجريبية، وبالعربية التي يعمل بها النظام الفعلي في مكتب الموقع. تبقى الأسماء والمبالغ لدى العميل.
مبني لاستضافة مشتركة، ومحصّن كما ينبغي
مولّد QR من الصفر
تخرج البطاقات من مولّد QR لا يعتمد على أي مكتبة خارجية، مع اختبار ذاتي يجب أن ينجح على الخادم قبل طباعة أي بطاقة.
كاتب حقيقي لملفات Excel
لم تكن إضافة zip متوفرة على الاستضافة، لذا يبني التصدير ملفات Excel صالحة يدويًا. ويحصل موظفو الرواتب على التنسيق نفسه الذي اعتادوا اعتماده.
كشوف تكشف أي تلاعب
يحفظ كل كشف أسبوعي موقّع بصمة (hash) للمستند، فإذا تغيرت البيانات الأساسية لاحقًا نبّه النظام إلى ذلك.
وصول محكم
تسجيل دخول إلزامي بخطوتين عبر TOTP، وتقييد لمحاولات الدخول، ورموز CSRF، وكشك لا يعمل إلا على جهاز لوحي مُقترن عبر رابط يُستخدم مرة واحدة.
الكود خارج المجلد العام
يقع كود التطبيق وإعداداته بجوار public_html لا بداخله، مع قاعدة ثانية تُعيد الخطأ 404 لهذه المسارات إن رُفعت إليه خطأً يومًا.
مبني ليواصل التطور
أكثر من 40 عملية ترحيل لقاعدة البيانات نُشرت مع تطور قواعد الموقع: قوالب الورديات، وتتبّع معدات الحماية الشخصية، وطلبات الورديات الفائتة، والمدفوعات، وغير ذلك.
المشروع التالي
علامة شخصية ومعرض أعمال

