سالهاست که پلتفرم اختصاصی ردیابی GPS را برای مشتریانمان اداره میکنیم: خودروها و دستگاهها موقعیت خود را به سرور ردیابی ما میفرستند و مشتریان میتوانند ناوگانشان را زنده روی نقشه ببینند، دفتر ثبت سفر داشته باشند، محدودههای جغرافیایی تعریف کنند و هنگام بروز هشدار، اعلان بگیرند. رابط کاربری این سامانه، یک برنامهٔ PHP بود که بهمرور گسترش یافته بود و مدیریت کاربران، صدور فاکتور و گزارشگیری مستقل خودش را داشت؛ در کنار همهٔ سامانههای دیگری که در شرکت استفاده میکنیم.
حالا این وضعیت را تغییر دادهایم. از این پس، سامانهٔ ردیابی یک ماژول در Odoo 19 Community ماست و بخشی از همان سیستمی است که مشتریان، قراردادها، فاکتورها و پشتیبانی را هم در آن مدیریت میکنیم. برای مشتریان خدمات ردیابی، این یعنی یک حساب ورود، یک رابط کاربری و دسترسی به فاکتور خدمات ردیابی در همان جایی که سایر فاکتورها قرار دارند.
چرا ردیابی را به Odoo منتقل کردیم
دو سامانهٔ مجزا یعنی اطلاعات پایهٔ تکراری. هر مشتری یکبار در سامانهٔ ردیابی و یکبار در ERP تعریف شده بود، هر تغییر نشانی باید دو بار انجام میشد و فرایند صدور فاکتور ردیابی، اسنادی تولید میکرد که بعداً باید دستی به حسابداری منتقل میشدند.
با انتقال به Odoo، اکنون یک اصل ساده داریم: اطلاعات پایه در Odoo، دادههای حجیم بیرون از آن. مشتریان، کاربران، ردیابها، گروهها، محدودههای جغرافیایی، محصولات و قیمتها در Odoo نگهداری میشوند و همانجا به حسابداری، پرتال و مدیریت دسترسی متصلاند. دادههای موقعیت، یعنی همان جریان شبانهروزی دادههای دستگاهها، همچنان در یک مخزن اختصاصی موقعیت ذخیره میشوند. پایگاه دادهٔ ERP جای مناسبی برای میلیونها نقطهٔ GPS نیست و لازم هم نیست چنین نقشی داشته باشد.
این تغییر تأثیری بر سرور ردیابی که ارتباط دستگاهها را میپذیرد، نداشته است. دقیقاً همین موضوع بود که اجرای این بازطراحی را عملی کرد: میتوانستیم رابط کاربری را از نو بسازیم، بدون اینکه در دریافت دادهها تغییری بدهیم.
امکاناتی که اکنون مشتریان ما در پرتال دارند
مشتریان خدمات ردیابی وارد پرتال مشتریان Odoo میشوند و بخش ردیابی را آنجا میبینند. کسانی که فقط از خدمات ردیابی استفاده میکنند، پس از ورود مستقیماً به نقشه هدایت میشوند و سایر محتوای پرتال را نمیبینند.
نقشهٔ زنده
نقشه همهی خودروهای خودی و بهاشتراکگذاشتهشده را با وضعیت (در حرکت، ایستاده، آفلاین)، سرعت، جهت حرکت و نشانی تبدیلشده نشان میدهد. موقعیتها بهصورت بلادرنگ از طریق یک اتصال WebSocket به سرور ردیابی میرسند – یک اتصال برای کل نصب، نه یکی برای هر مرورگر باز – و بهصورت فیلترشده توزیع میشوند: هر مشتری فقط خودروهایی را میگیرد که متعلق به او هستند یا برایش به اشتراک گذاشته شدهاند. خودروها میان دو گزارش بهجای پریدن، بهصورت روان حرکت میکنند.
برای نقشهٔ پایه میتوان از میان OpenStreetMap، نقشهٔ ناهمواریها، نقشهٔ پایهٔ رسمی اتریش همراه با تصاویر هوایی و نقشهٔ سیاهوسفید انتخاب کرد. نمایش ناهمواریهای زمین و ساختمانهای سهبعدی را هم میتوان بهصورت لایه فعال کرد. Odoo تنظیمات نمای اولیهٔ نقشه، شامل نوع نقشه، محدودهٔ نمایش و گروه پیشفرض را برای هر کاربر به خاطر میسپارد.
دفتر ثبت سفرهای کاری و شخصی
سفرها در سرور تشخیص داده میشوند، نه در مرورگر: حتی اگر هیچکس نقشه را باز نکرده باشد، سفر ثبت میشود. زمان شروع و پایان، نشانی مبدأ و مقصد، عدد کیلومترشمار، مسافت و مدت هر سفر ثبت میشود.
هر سفر را میتوان بهعنوان سفر کاری یا سفر شخصی دستهبندی کرد؛ این دستهبندی برای هر سفر است، نه برای هر خودرو، چون یک خودرو ممکن است صبح به محل مشتری و عصر به خانه برود و این تفکیک در اتریش از نظر مالیاتی اهمیت دارد. با شروع سفر، پنجرهٔ دستهبندی مستقیماً روی نقشه ظاهر میشود؛ اگر بخواهید بعداً این کار را انجام دهید، سفر را همراه با فیلد یادداشت در دفتر ثبت سفرها خواهید یافت. اگر خودرو به تراشههای کلیدی iButton مجهز باشد، رانندگان از طریق آنها شناسایی میشوند.
دو گزارش در دسترس است که هر دو با فرمت PDF و Excel ارائه میشوند:
- دفتر سفرهای یک خودرو – سفرهای یک خودرو در بازهٔ زمانی انتخابشده، همراه با مسیر، دستهبندی و یادداشت
- دفتر سفرهای ناوگان – یک ردیف برای هر خودرو شامل مدت رانندگی، مسافت، تفکیک کیلومترهای کاری و شخصی و مصرف برآوردشده، بههمراه جمع هر گروه و جمع کل
محدودههای جغرافیایی و هشدارها
ژئوزونها مستقیماً روی نقشه کشیده میشوند – بهصورت دایره، مربع یا چندضلعی آزاد – یا از قالبهای مشترکی مانند «اتریش» یا «وین» برداشته میشوند. برای هر زون و خودرو میتوان تعیین کرد که هنگام ورود یا خروج هشدار داده شود و به کجا: از طریق پیامک، ایمیل، Webhook یا بهصورت پیام به مرکز تماس ما.
هشدارها — تغییر محدوده، سرعت، وضعیت سوییچ، افت ولتاژ، درخواست کمک اضطراری، حرکت و قطع ارتباط — بهصورت رکوردهای مستقل در Odoo ثبت میشوند و زمان، موقعیت و وضعیت رسیدگی را در بر دارند.
جستوجو: کدام خودرو اینجا بوده است؟
برگهٔ جریمهای میرسد و محل ثبت تخلف روی آن مشخص است؛ اما کدام خودرو آنجا بوده؟ جستوجو در تاریخچهٔ مسیر دقیقاً به همین سؤال پاسخ میدهد: نقطهای روی نقشه یا یک نشانی را انتخاب کنید، شعاع جستوجو و بازهٔ زمانی را مشخص کنید تا سامانهٔ ردیابی نشان دهد کدام خودروها آنجا بودهاند. محلهای کنترل سرعت OpenStreetMap هم از قبل بهصورت یک لایه روی نقشه در دسترساند.
مدیریت توسط خود مشتری
کارهایی که قبلاً باید به ما سپرده میشد، اکنون خود مشتریان در پورتال انجام میدهند:
- فعالسازی ردیاب – کافی است IMEI روی برچسب دستگاه را وارد کنید و گروهی را انتخاب یا ایجاد کنید؛ تمام
- ردیابها و گروهها – نامها، نمادها، تخصیص به گروه، سوختگیریها همراه با مقدار و قیمت و گزارشهای هر خودرو
- مجوزهای دسترسی – دادن دسترسی خودروها به کاربران یا شرکتهای دیگر، با مجوز مشاهده یا ویرایش و امکان پنهان کردن فیلدهایی مانند نشانی یا عدد کیلومترشمار
- محدودههای جغرافیایی – ترسیم، ویرایش و تنظیم هشدارها
- iButtons – اتصال تراشههای کلیدی به نام رانندگان
چه چیزی در فرایندهای داخلی ما تغییر کرده است
در بخش مدیریتی Odoo، قسمت ردیابی شامل نقشهٔ زنده، مدیریت ردیابها، هشدارها، سفرها، اطلاعات پایه (گروهها، محدودههای جغرافیایی، انواع دستگاه و سازندگان) و صورتحسابگذاری است.
مدیریت ردیابها. برای هر دستگاه، IMEI، شمارهٔ سیمکارت، نوع دستگاه، ورودیها و خروجیها (سوییچ، مسدودسازی موتور، بخاری درجا و موارد دیگر)، کالیبراسیون، تصحیح کیلومترشمار، آستانهٔ قطع ارتباط و پارامترهای دفتر ثبت سفر نگهداری میشود. تاریخچهٔ Chatter در Odoo همهٔ تغییرات را ثبت میکند.
ارسال پیامک به دستگاهها. ردیابها از طریق پیامک پیکربندی میشوند. اکنون ارسال پیامک مستقیماً از داخل Odoo انجام میشود، همهٔ ارسالها ثبت میشوند و تدابیری برای جلوگیری از خطای کاربری وجود دارد: سقف تعداد پیام در هر نوبت ارسال مانع از آن میشود که یک کلیک باعث ارسال صدها پیامک هزینهدار شود؛ شمارههای ناقص هم اصلاً برای ارسال تحویل داده نمیشوند.
مرکز تماس. گزارشهای سرقت و تصادف بهصورت پروندههایی شامل اطلاعات خودرو، اطلاعات تماس مالک و یک روند گامبهگام نمایش داده میشوند: با مالک تماس برقرار شد؟ هشدار کاذب بود؟ اقدام دیگری لازم است؟ هر مرحله ثبت میشود و مسئولان رسیدگی از طریق اعلان پوش مطلع میشوند.
صورتحسابگذاری. فرایند صدور صورتحساب، همهٔ ردیابهایی را که موعد بعدی صورتحسابشان رسیده است در نظر میگیرد و برای آنها پیشنویس صورتحساب در Odoo ایجاد میکند؛ با قیمت مشتری نهایی یا همکار تجاری. تأیید نهایی عمداً در اختیار حسابداری باقی میماند: این فرایند ثبت حسابداری انجام نمیدهد و فقط مقدمات را آماده میکند. دورهٔ صورتحسابگذاری، محصول و موعد بعدی در اطلاعات ردیاب نگهداری میشوند؛ پس از اجرای فرایند، ردیفهای صورتحساب مستقیماً در رکورد دستگاه در دسترساند.
معماری پشت این سامانه
دستگاههای GPS
│
▼
سرور ردیابی ──► مخزن موقعیتها Odoo 19 Community
(بدون تغییر) اکنون: پایگاه دادهٔ فعلی ├─ اطلاعات پایه (ردیابها، مشتریان، محدودههای جغرافیایی)
├─ پورتال مشتریان /my/ortung
در آینده: PostGIS ├─ بخش مدیریتی ردیابی / …
▲ ├─ صورتحسابگذاری (پیشنویس صورتحسابها)
└── فقط خواندنی ─┘
دسترسی به موقعیتها منحصراً از طریق یک رابط قابل جایگزینی انجام میشود. در حال حاضر، Odoo اطلاعات را از پایگاه دادهٔ فعلی ردیابی میخواند و سرور ردیابی همچنان بدون تغییر دادهها را در آن ثبت میکند. به این ترتیب، انتقال به یک سرور اختصاصی PostGIS فقط به تغییر پیکربندی نیاز دارد، نه بازسازی سامانه؛ در آن حالت، تحلیلهای مکانی مانند بررسی محدودههای جغرافیایی را خود PostGIS انجام میدهد. برای توسعه و آموزش، یک مخزن نمایشی با دادههای ساختگی نیز وجود دارد که ماژول را بدون سرور ردیابی هم قابل اجرا میکند.
نشانیها با سرویس اختصاصی تبدیل مختصات به نشانی تعیین و در Odoo بهصورت موقت ذخیره میشوند؛ مختصات با دقتی در حدود یازده متر گرد میشوند. در نتیجه، برای خودروی متوقف با هر نوسان GPS دوباره نشانییابی انجام نمیشود و نقشه هم به زمان پاسخگویی یک سرویس خارجی وابسته نیست.
مهاجرت چگونه انجام شد
مهاجرت را یکباره انجام ندادیم، بلکه طبق الگوی Strangler، مرحلهبهمرحله پیش رفتیم: سامانهٔ قدیمی فعال ماند، یک پراکسی معکوس بر اساس هر مسیر تعیین میکرد کدام سامانه پاسخ دهد و نقشهٔ جدید در ابتدا برای یک گروه آزمایشی، همزمان در کنار نقشهٔ قدیمی اجرا میشد.
حساسترین بخش کار، انتقال اطلاعات پایه بود. یک اسکریپت مهاجرت، مشتریان، کاربران، ردیابها، گروهها و محدودههای جغرافیایی را از برنامهٔ قدیمی میخواند و در Odoo ایجاد میکند؛ این فرایند با استفاده از شناسهٔ قدیمی بهعنوان کلید، بهصورت افزایشی قابل تکرار است. از آنجا که بسیاری از مشتریان ردیابی از قبل بهعنوان طرف حساب در Odoo ثبت شده بودند، یک دستیار، تطبیقها را پیشنهاد میدهد که باید تکتک تأیید شوند: اگر شرکتی اشتباه مرتبط شود، خودروهای دیگران را خواهد دید و هزینهٔ این اشتباه از ایجاد یک رکورد تکراری بیشتر است.
مواردی که آگاهانه منتقل نکردیم: دو مجموعه کد جداگانه برای دسکتاپ و موبایل (رابط کاربری Odoo واکنشگراست)، جدول ترجمهٔ اختصاصی، مدیریت اختصاصی مجوزها و نشستها و بیش از دوازده گزارشی که در عمل دیگر کسی بازشان نمیکرد.
این تغییر برای شما بهعنوان مشتری چه معنایی دارد
اگر از مشتریان خدمات ردیابی ما هستید، اطلاعات دسترسی به پورتال را دریافت کردهاید یا طی هفتههای آینده دریافت خواهید کرد. خودروها، گروهها، محدودههای جغرافیایی و مجوزهای دسترسی شما منتقل شدهاند و ثبت سفرها بدون وقفه ادامه دارد.
در یک پورتال، ردیابی، فاکتورها و درخواستهای پشتیبانی خود را مییابید. و اگر بیش از ردیابی میخواهید – Helpdesk، قراردادهای نگهداری، صورتحساب پروژه – همان سیستم است.
با کمال میل به پرسشهای مربوط به مهاجرت پاسخ میدهیم. و هر که برای شرکت خود ردیابی خودرویی میخواهد که به ERP متصل باشد، نه اینکه کنار آن بایستد: با ما تماس بگیرید.