نشغّل منذ سنوات طويلة منصة خاصة لتحديد المواقع عبر GPS لعملائنا: تُرسل المركبات والأجهزة مواقعها إلى خادم التتبع لدينا، ويشاهد العملاء أساطيلهم مباشرة على الخريطة، ويسجلون الرحلات، ويحددون السياجات الجغرافية، ويتلقون إشعارات عند إطلاق التنبيهات. وكانت الواجهة المستخدمة لذلك تطبيق PHP تطور بمرور الوقت، وله نظامه الخاص لإدارة المستخدمين والفوترة والتقارير، ويعمل بالتوازي مع سائر الأنظمة التي نستخدمها في الشركة.
غيّرنا ذلك الآن. فقد أصبحت خدمة التتبّع وحدة ضمن نظام Odoo 19 Community لدينا، وجزءًا من النظام نفسه الذي ندير فيه العملاء والعقود والفواتير والدعم. وهذا يعني لعملاء خدمة التتبّع لدينا: تسجيل دخول واحد، وواجهة واحدة، وفاتورة التتبّع في المكان نفسه الذي توجد فيه سائر الفواتير.
لماذا نقلنا خدمة التتبّع إلى Odoo
وجود نظامين منفصلين يعني تكرار البيانات الأساسية. كان لكل عميل سجل في نظام التتبّع وآخر في نظام تخطيط موارد المؤسسة، وكان كل تغيير في العنوان يتطلّب تحديثًا في النظامين. كما كانت دورة فوترة التتبّع تُنتج مستندات تُنقل بعد ذلك يدويًا إلى المحاسبة.
مع الانتقال إلى Odoo، أصبحنا نتّبع مبدأً بسيطًا: البيانات الأساسية في Odoo، والبيانات الضخمة خارجه. تُحفظ بيانات العملاء والمستخدمين وأجهزة التتبّع والمجموعات والمناطق الجغرافية والمنتجات والأسعار في Odoo، وترتبط فيه بالمحاسبة والبوابة وإدارة الصلاحيات. أما بيانات المواقع، وهي تدفّق البيانات الفعلي من الأجهزة على مدار الساعة، فتبقى في مخزن مستقل للمواقع. فقاعدة بيانات نظام تخطيط موارد المؤسسة ليست المكان المناسب لملايين نقاط GPS، ولا حاجة إلى أن تكون كذلك.
لم يتأثر خادم التتبّع الذي يستقبل اتصالات الأجهزة بهذا الانتقال. وهذا تحديدًا ما جعل إعادة البناء قابلة للتنفيذ أصلًا: أمكن إنشاء الواجهة من جديد من دون المساس باستقبال البيانات.
ما الذي أصبح متاحًا لعملائنا في البوابة
يسجّل عملاء خدمة التتبّع دخولهم إلى بوابة عملاء Odoo، ويجدون فيها قسم التتبّع. ومن يستخدم خدمة التتبّع وحدها ينتقل مباشرة إلى الخريطة بعد تسجيل الدخول، ولا تظهر له محتويات البوابة الأخرى.
خريطة مباشرة
تعرض الخريطة جميع المركبات الخاصة والمتاحة للمشاركة مع الحالة (في حركة، متوقفة، غير متصلة) والسرعة واتجاه السير والعنوان المحلَّل. وتصل المواقع في الزمن الحقيقي عبر اتصال WebSocket بخادم التتبع – اتصال واحد للتركيب بأكمله، وليس اتصالًا لكل متصفح مفتوح – وتُوزَّع بعد التصفية: يحصل كل عميل فقط على المركبات التي يملكها أو التي أُتيحت له. وتتحرك المركبات بسلاسة بين بلاغين بدلاً من أن تقفز.
تتوفر عدة خرائط أساسية للاختيار بينها: OpenStreetMap وخريطة تضاريس والخريطة الأساسية النمساوية الرسمية مع الصور الجوية وخريطة بالأبيض والأسود. ويمكن إضافة التضاريس والمباني ثلاثية الأبعاد كطبقات. ويحفظ Odoo لكل مستخدم إعدادات عرض الخريطة عند فتحها: نوع الخريطة والمنطقة المعروضة والمجموعة الافتراضية.
سجل رحلات يميّز بين رحلات العمل والرحلات الخاصة
يُكتشف حدوث الرحلات على الخادم، لا في المتصفح: تُسجَّل الرحلة حتى إن لم يكن أحد قد فتح الخريطة. ويُحفظ لكل رحلة وقت البداية والنهاية وعنوان الانطلاق والوصول وقراءة عدّاد المسافة والمسافة المقطوعة والمدة.
يمكن تصنيف كل رحلة على أنها رحلة عمل أو رحلة خاصة. ويكون التصنيف لكل رحلة، لا لكل مركبة، لأن السيارة نفسها قد تُستخدم لزيارة عميل صباحًا والعودة إلى المنزل مساءً، ولهذا التمييز أهمية ضريبية في النمسا. عند بدء الرحلة، تظهر نافذة التصنيف مباشرة على الخريطة؛ ومن يفضّل تصنيفها لاحقًا يجدها في سجل الرحلات مع حقل للملاحظات. ويجري التعرّف على السائقين بواسطة شرائح مفاتيح iButton إذا كانت المركبة مجهّزة بها.
يتوفر تقريران، كلاهما بصيغتي PDF وExcel:
- سجل رحلات مركبة واحدة — رحلات مركبة خلال الفترة المحددة، مع المسار والتصنيف والملاحظات
- سجل رحلات الأسطول — صف لكل مركبة يتضمن مدة القيادة والمسافة المقطوعة، مع فصل كيلومترات العمل عن الكيلومترات الخاصة والاستهلاك المقدّر، إضافة إلى مجاميع المجموعات والمجموع الإجمالي
المناطق الجغرافية والتنبيهات
تُرسم المناطق الجغرافية مباشرةً على الخريطة – كدائرة أو مربع أو مضلع حر – أو تُؤخذ من قوالب مشتركة مثل «النمسا» أو «فيينا». ويمكن تحديد لكل منطقة ومركبة ما إذا كان يُنذَر عند الدخول أو الخروج وإلى أين: عبر SMS أو البريد الإلكتروني أو Webhook أو كرسالة إلى مركز الاتصال لدينا.
تَرِد التنبيهات، مثل الانتقال بين المناطق والسرعة والإشعال وانقطاع الجهد ونداء الاستغاثة والحركة وانقطاع الاتصال، كسجلات مستقلة في Odoo، تتضمن الوقت والموقع وحالة المعالجة.
البحث: أي مركبة كانت هنا؟
تصلك مخالفة مرورية مذكور فيها موقع رصد السرعة، لكن أي مركبة كانت هناك؟ يجيب البحث في سجل المسارات عن هذا السؤال تحديدًا: اختر نقطة على الخريطة أو عنوانًا، وحدّد نطاق البحث والفترة الزمنية، وستعرض خدمة التتبّع المركبات التي كانت هناك. وتتوفر مواقع رصد السرعة من OpenStreetMap مسبقًا كطبقة على الخريطة لهذا الغرض.
الإدارة الذاتية للعملاء
أصبح بإمكان العملاء إنجاز المهام التالية في البوابة بأنفسهم، بعدما كانوا يضطرون إلى إسنادها إلينا:
- تفعيل أجهزة التتبّع — إدخال رقم IMEI المدوّن على ملصق الجهاز، واختيار مجموعة أو إنشاء مجموعة جديدة، وانتهى الأمر
- أجهزة التتبّع والمجموعات — الأسماء والرموز وتعيين المجموعات وعمليات التزوّد بالوقود مع الكمية والسعر وتقارير لكل مركبة
- الصلاحيات — إتاحة الوصول إلى المركبات لمستخدمين أو شركات أخرى، بصلاحية القراءة أو الكتابة، مع إمكانية إخفاء حقول محددة مثل العنوان أو قراءة عدّاد المسافة
- المناطق الجغرافية — رسمها وتعديلها وضبط التنبيهات
- iButtons — ربط شرائح المفاتيح بأسماء السائقين
ما الذي تغيّر في عملنا الداخلي
تتضمن الواجهة الإدارية في Odoo قسم التتبّع، ويضم الخريطة المباشرة وإدارة أجهزة التتبّع والتنبيهات والرحلات والبيانات الأساسية، مثل المجموعات والمناطق الجغرافية وأنواع الأجهزة والشركات المصنّعة، إلى جانب الفوترة.
إدارة أجهزة التتبّع. يتضمن سجل كل جهاز رقم IMEI ورقم هاتف شريحة SIM ونوع الجهاز والمدخلات والمخرجات، مثل الإشعال وتعطيل المحرك والتدفئة أثناء التوقف وغيرها، إضافة إلى المعايرة وتصحيح عدّاد المسافة والمهلة التي يُعدّ بعدها الجهاز غير متصل وإعدادات سجل الرحلات. ويوثّق سجل Chatter في Odoo كل تغيير.
إرسال رسائل SMS إلى الأجهزة. تُضبط أجهزة التتبّع عبر رسائل SMS. وأصبح الإرسال يجري الآن من داخل Odoo مع توثيق كامل وضوابط تمنع أخطاء الاستخدام: يَحول حد أقصى لكل عملية إرسال دون أن تؤدي نقرة واحدة إلى إرسال مئات الرسائل المدفوعة، ولا تُمرَّر أرقام الهواتف غير المكتملة إلى خدمة الإرسال أصلًا.
مركز الاتصال. تظهر بلاغات السرقة والحوادث كعمليات مع بيانات المركبة وبيانات اتصال المالك وسير عمل موجَّه: هل تم الوصول إلى المالك؟ إنذار كاذب؟ إجراءات أخرى؟ ويُسجَّل كل خطوة، ويُبلَّغ المعالجون المختصون عبر إشعار Push.
الفوترة. تشمل دورة الفوترة جميع أجهزة التتبّع التي حلّ موعد فوترتها التالي، وتُنشئ لها مسودات فواتير في Odoo، بسعر العميل النهائي أو سعر الشريك. وقد أبقينا اعتماد الفواتير بيد المحاسبة عن قصد: فالدورة تُعدّ الفواتير ولا ترحّل أي قيود. وترتبط دورية الفوترة والمنتج والموعد التالي بجهاز التتبّع؛ وبعد تنفيذ الدورة، تظهر بنود الفواتير مباشرة في سجل الجهاز.
البنية التقنية وراء ذلك
أجهزة GPS
│
▼
خادم التتبّع ──► مخزن المواقع Odoo 19 Community
(دون تغيير) حاليًا: قاعدة البيانات ├─ البيانات الأساسية (أجهزة التتبّع، العملاء، المناطق الجغرافية)
الحالية ├─ بوابة العملاء /my/ortung
لاحقًا: PostGIS ├─ الواجهة الإدارية التتبّع / …
▲ ├─ الفوترة (مسودات الفواتير)
└── للقراءة فقط ─┘
يجري الوصول إلى بيانات المواقع حصريًا عبر واجهة قابلة للاستبدال. حاليًا، يقرأ Odoo من قاعدة بيانات التتبّع القائمة، التي يواصل خادم التتبّع تغذيتها من دون تغيير. وبذلك، لا يتطلّب الانتقال إلى خادم PostGIS مستقل سوى تعديل الإعدادات، من دون إعادة بناء النظام؛ وعندها سيتولى PostGIS بنفسه الحسابات المكانية، مثل التحقق من المناطق الجغرافية. ولأغراض التطوير والتدريب، يتوفر أيضًا مخزن تجريبي ببيانات اصطناعية يتيح تشغيل الوحدة من دون خادم تتبّع.
تُستخرج العناوين من الإحداثيات بواسطة خدمة ترميز جغرافي خاصة بنا، وتُخزَّن مؤقتًا في Odoo، مع تقريب الإحداثيات إلى دقة تبلغ نحو أحد عشر مترًا. وبذلك، لا يُعاد تحديد عنوان مركبة متوقفة مع كل تشويش في إشارة GPS، ولا يتوقف تجاوب الخريطة على زمن استجابة خدمة خارجية.
كيف جرى الانتقال
لم ننتقل دفعة واحدة، بل تدريجيًا وفق نمط Strangler: ظل النظام القديم يعمل، وكان خادم وكيل عكسي يحدّد النظام الذي يستجيب لكل مسار، وبدأ تشغيل الخريطة الجديدة لمجموعة تجريبية بالتوازي مع القديمة.
كان نقل البيانات الأساسية الجزء الأكثر حساسية. يقرأ برنامج ترحيل بيانات العملاء والمستخدمين وأجهزة التتبّع والمجموعات والمناطق الجغرافية من التطبيق القديم، وينشئها في Odoo. ويمكن تكرار تشغيله لنقل التغييرات فقط، باستخدام المعرّف القديم مفتاحًا. ولأن كثيرًا من عملاء التتبّع كانوا مسجّلين بالفعل كشركاء في Odoo، يقترح معالج عمليات ربط يجب تأكيد كل منها على حدة: فربط شركة بسجل خاطئ سيتيح لها رؤية مركبات لا تخصّها، وهذا أشد كلفة من وجود سجل مكرر.
وتعمّدنا عدم نقل بعض الأمور: قاعدتي الشيفرة المنفصلتين للحاسوب والهاتف المحمول، إذ إن واجهة Odoo متجاوبة، وجدول الترجمة الخاص بنا، وآلياتنا الخاصة لإدارة الصلاحيات والجلسات، وما يزيد قليلًا على اثني عشر تقريرًا لم يعد أحد يفتحها عمليًا.
ما الذي يعنيه ذلك لكم كعملاء
إذا كنتم من عملاء خدمة التتبّع لدينا، فقد حصلتم بالفعل على بيانات الدخول إلى البوابة أو ستحصلون عليها خلال الأسابيع المقبلة. نُقلت مركباتكم ومجموعاتكم ومناطقكم الجغرافية وصلاحياتكم، ويستمر سجل الرحلات في العمل دون انقطاع.
تجدون في بوابة واحدة التتبع والفواتير وطلبات الدعم. وإذا أردتم أكثر من التتبع – Helpdesk وعقود الصيانة وفوترة المشاريع – فالنظام هو نفسه.
يسعدنا الإجابة عن الأسئلة المتعلقة بالانتقال. ومن يبحث لشركته عن تتبع للمركبات مرتبط بنظام ERP بدلاً من أن يقف بجانبه: تواصلوا معنا.