المشكلة
ينقل الموزّعون وتجار الجملة والمصنّعون في الجزائر بضائعهم بوصولات تسليم ورقية. يمرّ الوصل بالتحضير والإرسال ونقل بين المستودعات والتسليم، وأحياناً الإرجاع. وفي كل مرحلة يكتب أحدهم أو يوقّع أو يتصل.
لا يستطيع أحد أن يرى أين وصل بعينه دون أن يتصل هنا وهناك. والخلافات حول ما حُمّل أو سُلّم أو أُرجع يصعب حسمها. نظام ERP يعرف الطلب، لكنه لا يعرف رحلة البضاعة.
كانت Cosmekarn، وهي شركة جزائرية لمستحضرات التجميل، تواجه هذه المشكلة في عدة مناطق. وقد وُلد Foxmayn Track من النظام الذي بنيناه معها على مقاسها.
عمل على مقاس Cosmekarn
لم ننطلق من نموذج جاهز. عملنا مع إدارة Cosmekarn وفريق المكتب والمستودع، في الموقع وعبر نقاشات كثيرة، حتى صار النظام مطابقاً لطريقة عملهم.
- أدوارهم وخطواتهم. الحالات والأدوار، ومن يحق له نقل الوصل إلى أي حالة، مأخوذة من مسار عملهم. وحين احتاجوا إلى مسؤول تحميل بين التحضير والإرسال، أضفنا هذا الدور. ويمكن لشخص واحد أن يحمل عدة أدوار وينتقل بينها في التطبيق.
- مناطقهم. تغادر الطرود المستودع الرئيسي نحو مستودعات جهوية، وتُسلَّم من هناك. وكل خطوة جهوية مسحٌ يقوم به الدور المكلّف بها.
- واقع سائقيهم. يسجّل السائق تسليماً، أو إرجاعاً مع سببه، أو زيارة مؤجلة. وصورة الباب والعمل دون اتصال والتحديث من داخل التطبيق جاءت كلها مما واجهه السائقون على الطريق.
- باركوداتهم. يقبل الماسح ملصقاتهم كما هي مطبوعة، بالبادئة أو دونها.
- تقاريرهم. يتبع تقرير آجال التسليم نموذج Excel الذي كانوا يستعملونه.
وبعد الإطلاق واصلنا بإصدارات قصيرة. كان كل إصدار يُجرَّب مع فرقهم قبل أن يصل إلى كل الهواتف.
ماذا بنينا
يتتبّع Foxmayn Track كل وصل تسليم طوال دورة حياته. له ثلاثة أجزاء.
- واجهة API تحمل سير العمل والقواعد.
- لوحة إدارة على الويب للمكتب.
- تطبيق Android لمن في المستودع وعلى الطريق.
للمشاركين أدوار: ADV (الإدارة التجارية) والمحضّر ومسؤول الشحن والسائق ومسؤول التحميل والمشرف. لكل دور خطواته فقط.
- مسح الباركود ينقل الوصل من حالة إلى التالية. يتحقق الخادم من الدور ومن الانتقال في كل مسح.
- إثبات التسليم صورة تُرفع مع التسليم، مع موقع الهاتف عند الباب.
- العمل دون اتصال. يواصل السائقون المسح دون شبكة. يضع التطبيق عمليات المسح في طابور ويرسلها حين تعود الشبكة.
- التوزيع والمتابعة. يُسند المكتب الحمولات إلى السائقين ويتابع كل وصل في لوحة الإدارة. ويُصدَّر تقرير آجال التسليم إلى Excel.
- التحديث من داخل التطبيق. تثبّت الهواتف الإصدارات الجديدة من داخل التطبيق، دون متجر تطبيقات.
- موصل ERP. يقرأ Track طلباتكم ووصولات التسليم من نظام ERP لديكم عبر محوّل.
الواجهة بالفرنسية.
كيف يعمل
الشيفرة مستودع TypeScript متعدد الحزم. تحتفظ حزمة مجال مشتركة بالحالات والأدوار وجدول الانتقالات. وتستعملها واجهة API، المبنية على Hono وDrizzle وPostgreSQL، لتقرر هل المسح مسموح. حين يصل مسح، تنظر الواجهة في الدور القائم به وتطبّق الانتقالات التي يحق لهذا الدور تنفيذها. ولا يستطيع الهاتف تجاوز خطوة بإرسال طلب مختلف.
دون اتصال، يعرض الهاتف الخيارات المتاحة للدور دون الرجوع إلى الخادم. وحين يُفرَّغ الطابور، يتحقق الخادم من كل مسح من جديد وبالترتيب. والمسح الذي لم يعد صالحاً يُرفض ويُعرض على الشخص الذي قام به.
جانب ERP عقد ومحوّلات. نواة سير العمل لا تعرف سوى العقد. يوجد اليوم محوّل واحد، لنظام ERP لدى عميلنا الأول. أما محوّلات ERPNext وOdoo فمخطَّط لها ولم تُبنَ.
لوحة الإدارة مبنية بـ React 19 وVite. وتطبيق Android مبني بـ Expo وReact Native ويستعمل كاميرا الهاتف للمسح. ونسخة الإصدار موقَّعة ومرقَّمة.
أين وصل
النظام في الخدمة لدى Cosmekarn منذ أوت 2026. يستعمله المحضّرون والسائقون وفريق المكتب كل يوم، بالاتصال ودونه، وهو مثبّت على خادمهم الخاص بجانب نظام ERP لديهم.
Foxmayn Track هو المنتج الذي استخرجناه منه. جمعنا الشيفرة في مستودع واحد، ووضعنا نظام ERP خلف عقد محوّلات، وأزلنا كل ما يخص شركة واحدة. ما زالت Cosmekarn تشغّل نسخة الجيل الأول. أما Foxmayn Track فيعمل كنسخة تجريبية مستضافة على بديل عن نظام ERP، وهو جاهز لعميل ثانٍ.
حدود نذكرها بصراحة:
- يوجد محوّل ERP واحد فقط، لنظام ERP لدى عميلنا الأول.
- الواجهة بالفرنسية فقط. لا توجد عربية ولا تخطيط من اليمين إلى اليسار بعد.
- المنتج المُعاد بناؤه لم يُثبَّت بعد لدى أي عميل. وخبرة الإنتاج تأتي من نسخة الجيل الأول.
ماذا تعلّمنا
ضعوا القواعد في الخادم. المسح طلب، والخادم هو من يقرر صلاحيته. وهذا يُبقي الصلاحيات متطابقة على كل عميل، بالاتصال ودونه.
الموقع قرينة لا دليل. يرسل الهاتف موقعه مع التسليم، ويراه المكتب. لكن الهاتف قد يزوّره، وقد يخطئ القياس بمئات الأمتار، لذلك لا نعامله أبداً كدليل.
أتمتوا الفحوص. يشغّل CI لدينا فحص الأنواع والتدقيق اللغوي (lint) والبناء والاختبارات الوحدوية، وفحص انحراف ترحيل قاعدة البيانات، وفحص سكربتات الصدفة، وفحص الأسرار، واختبار Docker سريعاً على قاعدتي البيانات ومحاكي ERP.
الخطوة التالية
عميل ثانٍ، مع العمل نفسه لمواءمة النظام مع مستودعاته وأدواره ونظام ERP لديه. إن كنتم تعملون في التوزيع في الجزائر وتريدون التجربة، اطلعوا على منتجاتنا الأخرى أو على دراسة حالة Foxmayn Shopify Pay، وهو أيضاً في الخدمة لدى Cosmekarn.