DOBS: نظام تسجيل السائقين وإنهاء خدماتهم
DOBS، نظام بلغة Python/Flask صممته وطورته بالكامل لإدارة تسجيل السائقين وإنهاء خدماتهم عبر فرق الموارد البشرية والأسطول والمالية والعمليات.
هذه نظرة عامة على النظام. الشاشات الأصلية والبيانات والوصول المباشر إلى النظام غير متاحة هنا.
المشكلة
يمر تسجيل السائق أو إنهاء خدمته على الموارد البشرية والأسطول والمالية وعدة أدوار تشغيلية. كان لكل فريق قائمة مهام خاصة به، فكان التسليم بين الفرق بطيئاً وتُنسى بعض الخطوات، ولم تكن هناك رؤية واحدة لحالة السائق.
دوري
صممت نظام DOBS وطورته بالكامل بصفتي المطور الوحيد له: جمع المتطلبات مع كل قسم، ونموذج البيانات، والواجهة الخلفية، والواجهة ثنائية اللغة، والنشر والإصدارات المستمرة.
ما قمت ببنائه
- تسجيل قابل للإعداد: تُحفظ تسلسلات المراحل لكل نوع سائق مع شروط تخطٍّ، فيصبح إضافة نوع سائق جديد أو تغيير الإجراء إعداداً إدارياً وليس تعديلاً برمجياً.
- إنهاء خدمة متعدد الخطوات مع موافقات من مشرف العمليات ومدير العمليات والأسطول والمالية، يشمل التحقق من إرجاع المركبة والعهد.
- لوحات تحكم مخصصة للإدارة والموارد البشرية والأسطول والمالية ومنسقي العمليات ومشرفيها ومديريها.
- تحكم في الوصول قائم على الأدوار بصلاحيات دقيقة، مع انتحال هوية إداري خاضع للتدقيق لأغراض الدعم.
- قوالب عقود وسندات لأمر تُنتج ملفات PDF بالعربية والإنجليزية مع تشكيل صحيح للنص من اليمين إلى اليسار.
- مستندات السائقين وحساباتهم البنكية وسجلات تسليم واستلام الزي والعهد.
- تسجيل دخول موحد مع DMS وقاعدة بيانات MySQL مشتركة، لينتقل السائق من التسجيل إلى التشغيل اليومي دون إعادة إدخال البيانات.
- واجهات كاملة بالعربية (من اليمين إلى اليسار) والإنجليزية.
التقنيات
- Python و Flask و SQLAlchemy وترحيلات Alembic و MySQL
- Flask-Login و Flask-WTF وتحديد معدل الطلبات عبر Flask-Limiter والتخزين المؤقت والجلسات عبر Redis
- Flask-Babel للترجمة، و ReportLab و arabic-reshaper و python-bidi لملفات PDF العربية
- اختبارات pytest، والنشر عبر Gunicorn/Passenger
قرارات هندسية
نقلت تسلسل المراحل من منطق مكتوب في الشيفرة إلى قوالب قائمة على البيانات، وطبقته أولاً في وضع الظل: كان المحرك الجديد يسجل الحالات التي سيختلف فيها عن الشيفرة القديمة قبل أن يتولى العمل، فوصل التغيير إلى بيئة الإنتاج دون تعطيل عمليات التسجيل الجارية.