التحدي والسياق
احتاج العميل إلى منصة تجارة إلكترونية حديثة مصممة خصيصاً للسوق السعودي. تضمنت المتطلبات دعم المحتوى ثنائي اللغة، التكامل مع مزودي دفع إقليميين متعددين، والمزامنة مع نظام إدارة مخازن موجود. كان على المنصة التعامل مع تعقيد حسابات ضريبة القيمة المضافة، وإدارة المخزون عبر القنوات، وتوفير تجربة دفع سلسة مع الحفاظ على أداء عالٍ.
تطلبت البنية التحتية الحالية من المنصة الجديدة التكامل مع Mintsoft، وهو نظام ERP يدير المخزون والتوصيل. بالإضافة إلى ذلك، طلب العميل دعم خيارات اشتر الآن وادفع لاحقاً الشائعة في المنطقة، إلى جانب مدفوعات البطاقات التقليدية. كانت المنصة بحاجة إلى التوسع خلال فترات الذروة مع توفير رؤية فورية لحالة الطلبات ومستويات المخزون.
بنية النظام وتصميمه
بني التطبيق على Laravel 12، مستفيداً من النظام البيئي القوي للإطار لإدارة قوائم الانتظار والتخزين المؤقت وعمليات قواعد البيانات. يتبع التصميم نمطاً موجهاً بالخدمات حيث يتم تغليف معالجة الدفع ومزامنة ERP في فئات خدمة مخصصة، مما يسمح بالاختبار والتعديل المستقل لكل نقطة تكامل.
يستخدم النظام MySQL لتخزين البيانات الدائمة، مع Redis لإدارة الجلسات ومعالجة قوائم الانتظار عبر Laravel Horizon. تعمل وظيفة البحث بواسطة Typesense، المهيأة لكل من النصوص الإنجليزية والعربية، مما يوفر عمليات بحث سريعة وذات صلة عن المنتجات. تستخدم طبقة الوسائط Spatie Media Library لإدارة الصور، بما في ذلك التحويل التلقائي إلى WebP وإنشاء الصور المتجاوبة.
بنيت واجهة الإدارة باستخدام Filament، مما يوفر لوحة تحكم عالية الأداء لإدارة المنتجات والطلبات وبيانات العملاء. يوفر Laravel Pulse مراقبة فورية لصحة التطبيق، بينما يتولى Telescope فحص وضع التصحيح. يدير التطبيق مهام قوائم الانتظار لمعالجة webhook من مزودي الدفع، مما يضمن معالجة موثوقة لتأكيدات الدفع غير المتزامنة.
القرارات الهندسية الرئيسية
اختار الفريق Typesense بدلاً من Algolia لوظيفة البحث بسبب معالجته الفائقة للنصوص العربية والتسعير الأكثر قابلية للتنبؤ للنشر الذاتي. تم تكوين فهرس البحث بحقول خاصة باللغة، مما يسمح للاستعلامات بالبحث عبر سمات المنتج باللغتين الإنجليزية والعربية مع الحفاظ على ترتيب الصلة.
تم تنفيذ تكامل بوابات الدفع باستخدام نمط خدمة معياري. تعمل كل بوابة، بما في ذلك Tamara وTabby وMyFatoorah وHyperPay، من خلال فئة خدمة خاصة بها مع طرق متسقة لإنشاء جلسات الدفع ومعالجة webhooks وإدارة المبالغ المستردة. يسمح هذا التجريد بإضافة مزودي دفع جدد دون تعديل منطق الدفع الأساسي. تعالج وحدات معالجة webhook أحداث الدفع بشكل غير متزامن عبر مهام قوائم الانتظار، مما يضمن إدارة موثوقة للحالة حتى خلال فترات الحركة المرتفعة.
يتولى تكامل Mintsoft ERP المزامنة ثنائية الاتجاه. تتم مزامنة المنتجات من ERP للحفاظ على دقة المخزون، بينما تتدفق الطلبات من المنصة إلى Mintsoft لمعالجة التوصيل. يتضمن التكامل منطق إعادة المحاولة وتسجيل مفصّل لاستدعاءات API الفاشلة، مع آليات إعادة محاولة تلقائية للأعطال المؤقتة. يقوم إنشاء الطلبات بتعيين هياكل البيانات المحلية إلى حمولات Mintsoft، بما في ذلك حسابات ضريبة القيمة المضافة وجدولة التوصيل.
يطبق الكود MoneyCast مخصص باستخدام Brick Money للحسابات العشرية الدقيقة، وهو أمر أساسي للحسابات المالية حيث تكون أخطاء الفاصلة العائمة غير مقبولة. تُخزَّن جميع القيم النقدية كأعداد صحيحة في أصغر وحدة عملة وتُحوَّل فقط عند العرض.
تستخدم التدويل Spatie Translatable للترجمات على مستوى النماذج، مع تبديل اللغة على مستوى المسار لتمكين عناوين URL منفصلة للمحتوى بالإنجليزية والعربية. تفرض البرمجية الوسيطة اتساق اللغة طوال جلسة المستخدم.
التسليم والنتائج
أُطلقت المنصة بنجاح مع أربعة مزودي دفع مدمجين، مما يمنح العملاء مرونة في خيارات الدفع. يقدم البحث المدعوم بـ Typesense أوقات استجابة أقل من 100 ميلي ثانية حتى مع كتالوجات المنتجات الكبيرة، بينما يعمل البحث بالنصوص العربية بشكل مماثل للبحث بالإنجليزية.
يتولى تكامل Mintsoft إنشاء الطلبات ومزامنة المخزون تلقائياً. تضمن البنية المعتمدة على webhook تحديث حالات الدفع بشكل موثوق دون تدخل يدوي. يسمح فصل المسؤوليات بين معالجة الدفع وإدارة الطلبات والمخزون بتحديث كل مكون بشكل مستقل.
أعطى فريق الهندسة الأولوية لجودة الكود من خلال Laravel Pint للتنسيق و Pest للاختبار، مما يضمن نمط كود متناسق وتغطية اختبارية موثوقة عبر التطبيق.

