نظرة عامة
ثلاثة تطبيقات حديثة, بوابة ربط واحدة, ومصدر واحد للحقيقة
اعتمدت المنصة بنية طبقية (Layered Architecture) حيث يدير كل تطبيق PWA الصلاحيات الخاصة به, ونموذج البيانات المحلي, واستراتيجيات التخزين المؤقت, بينما يظل SQL Server المصدر المعتمد والوحيد للحقيقة للبيانات التشغيلية والمحاسبية.
تطبيق العملاء
PWAتجربة متكاملة للعميل من الحجز حتى الدفع, تتميز بتتبع موثوق للحالة في الوقت الفعلي ورسائل التحديثات.
- مصادقة برقم الهاتف ورمز OTP
- الحجز والتتبع وإعادة الجدولة
- الفواتير والإيصالات والدفع عبر Paymob
تطبيق الفنيين
دعم كامل للأوفلاينتنفيذ ميداني مخصص للأجهزة المحمولة مع آليات واضحة لمزامنة البيانات وحل التعارضات.
- تسجيل الملاحظات, والتقاط الصور, والقياسات
- حجز قطع الغيار وتتبع استخدامها
- التوقيع الإلكتروني للعميل وإثبات الإنجاز
بوابة الورشة
Web / PWAسير عمل موحد لاستلام الأجهزة, وتوزيع الإصلاحات, وإدارة المخزون, ومعالجة الاستثناءات.
- تتبع العهدة وسجلات حالة الأجهزة
- قوائم انتظار الفنيين واختبارات الإصلاح
- صرف قطع الغيار والمرتجعات والبدائل
التحدي والحل
حدود الربط والتكامل لحماية منطق العمل القديم
كانت المؤسسة تعمل باستخدام نظام ERP قديم يتضمن قواعد ومنطق عمل شديد التعقيد. وكان التحدي المعماري الرئيسي يكمن في بناء واجهات حديثة فوق البنية التحتية الحالية مع إعادة صياغة القواعد الأساسية لتحقيق أفضل أداء مع التطبيقات الجديدة, دون التسبب في أي تعطيل للعمليات اليومية للنظام القديم.
بالإضافة إلى ذلك, تطلبت عمليات الفنيين الميدانيين أداءً سلسًا بدون انقطاع في البيئات ذات الاتصال الضعيف أو المنعدم بالإنترنت. وقد تحقق ذلك من خلال تصميم نموذج PWA يعمل بأسلوب Offline-First, حيث يتم حفظ البيانات محلياً وتزامن تلقائياً بمجرد استعادة الاتصال.
قرار معماري جوهري فصل استلام الأوامر عن تنفيذ معالجتها. لا تنتظر طلبات التطبيقات المحمولة أبداً المعاملات الثقيلة لقاعدة البيانات القديمة؛ حيث يمكن إعادة محاولة الأوامر بأمان وبشكل غير مكرر (Idempotent) دون تكرار صرف قطع الغيار أو الفواتير أو المدفوعات.
تطبيق PWA يعمل بأسلوب Offline-first
العمل بدون إنترنت كحالة أساسية وليس كاستثناء
تم تصميم تطبيق الفنيين ليعمل بسلاسة كاملة أثناء انقطاع الاتصال بالشبكة. يُمنح كل إجراء معرفاً فريداً UUID ويُكتب في IndexedDB قبل إرساله عبر الشبكة, حيث يظل في قائمة الانتظار لحين تأكيده باستجابة رسمية من الخادم.
تقسيم مستويات التخزين حسب الغرض
- Cache Storage — واجهة التطبيق (App Shell), والأصول الثابتة, ومكونات الواجهة.
- IndexedDB — المهام, وأوامر العمل, كتالوج قطع الغيار, المسودات, والتغييرات بانتظار الإرسال.
- الذاكرة (Memory) — حالات العرض المؤقتة وبيانات الجلسات الحساسة غير المحفوظة.
مزامنة مستقلة وقابلة للتكرار
لا تعتمد سلامة البيانات فقط على المزامنة في الخلفية (Background Sync)؛ بل تتم عملية تحقق متعددة الأطراف عند بوابة الخلفية (Backend Gateway) للتحقق من أحداث الحالة الواردة واعتمادها.
تقليل بصمة البيانات على الجهاز
- بيانات مسقطة ومخزنة بحجم أصغر
- تنظيف وإزالة تلقائية عند انتهاء الصلاحية
- رموز جلسات مرتبطة بالجهاز حصراً
- حجب وتعمية تفاصيل المدفوعات
غلاف الأمر الأوفلاين (Offline Command)
{ "client_action_id": "60a9f923-7fac-4f70-84fe-2f6ea945ef1a", "aggregate_type": "work_order", "aggregate_id": "WO-18472", "operation": "record_part_usage", "expected_version": "0x000000000001A74B", "occurred_at": "2026-09-10T14:18:22Z", "payload": { "part_id": 381, "quantity": 1 } } Paymob + بوابة الرسائل SMS
سير عمل موثوق وآمن للعمليات المالية والإشعارات آمن ضد إعادة الإرسال
تُنشأ رموز بدء عملية الدفع حصرياً من جانب الخادم بناءً على سجلات الفواتير المعتمدة؛ ولا يتم الاعتماد على العميل مطلقاً لتمرير المبالغ المالية النهائية.
تقتصر استجابات التطبيقات على تقديم التغذية الراجعة للواجهة, بينما تُعتبر إشعارات الويب الموقعة رقمياً Webhooks التأكيد المعتمد لمعالجة عمليات الدفع.
- 1
التحقق من الفاتورة
التحقق من ملكية السجل, والمبالغ المستحقة, وتطابق العملة, وحالة الدفع مباشرة مع قاعدة بيانات SQL Server.
- 2
بدء محاولة الدفع محلياً
إنشاء مرجع تجاري فريد Merchant Reference ورمز الدفع الخاص بـ Paymob Checkout Token.
- 3
المعالجة المعتمدة عبر Webhook
التحقق من التوقيعات الرقمية HMAC, ومبالغ المعاملات, والعملات, مع منع تكرار المعالجة عبر التحقق من الـ Idempotency.
- 4
تسوية الدفتر وإرسال الأحداث
تحديث حالة الدفع, وتسوية الفاتورة, وإرسال أحداث Outbox ضمن معاملة واحدة موحدة في قاعدة البيانات.
قاعدة النزاهة المالية لا يمكن لرد إشعار الفشل المباشر والمتأخر (Late Failure Callback) إلغاء عملية دفع ناجحة ومقبولة ما لم يكن مصحوباً بحدث استرداد (Refund) أو عكس للعملية موثق ومصرح به.
النتائج
تحديث مسارات العمل الأساسية دون مخاطر إعادة بناء النظام بالكامل
-
تقديم تجربة مستخدم حديثة وسلسة للفنيين الميدانيين وموظفي الورش, وتحديث العمليات التشغيلية مع الاستفادة من إمكانيات النظام القديم دون الحاجة إلى إعادة كتابة برمجية كاملة محفوفة بالمخاطر.
-
إنشاء قناة تواصل مباشرة للعملاء لطلب إصلاح الأجهزة المنزلية, وتتبع تقدم العمليات في الوقت الفعلي, ومراجعة وفواتير الإصلاح ودفعها بشفافية.
-
تمهيد الطريق للانتقال التدريجي للميزات من نظام ERP القديم بمرور الوقت, مما يقلل من المخاطر التشغيلية المرتبطة بالاستبدال المباشر الشامل للأنظمة.
إطلاق تدريجي مع إمكانية التراجع الفوري عند الحاجة.
انخفاض في وقت تحصيل وسداد الفواتير
انخفاض في مكالمات الدعم المخصصة والاستفسار عن حالة الطلب
انخفاض تكلفة استقطاب العملاء (CAC)
زيادة القيمة الممتدة للعميل (CLV)
استقبل الأوامر بموثوقية, وطبقها دون تكرار (Idempotently), وقارنها بالحالة المعتمدة ورسّخها, واجعل كل تحول في الحالة قابلاً للرصد والملاحظة.
رأي العميل
قام محمد بتنسيق متطلباتنا المعقدة وتحويلها إلى معمارية واضحة وممكنة التنفيذ. ارتفع الأداء بشكل ملحوظ، وأصبح لدى الفريق أخيراً خارطة طريق واضحة.
الأسئلة الشائعة