الخريطة هي الجزء السهل فهمه.
يجمع FlightDetector بين المجال الجوي المباشر وتفاصيل الرحلات ومساراتها ومعلومات الارتفاع والبحث في السجلات السابقة. بنيته كمشروع هندسي شخصي لاستكشاف العمل وراء واجهة تبدو بسيطة: وضع الطائرة الصحيحة في المكان الصحيح وتوضيح وجهتها.
تبدأ الصعوبة عندما تختلف المصادر. فمصدر المواقع وقاعدة بيانات المسارات وسجل الطائرات تصف جوانب مختلفة للحدث نفسه. ولا تتطابق دورات التحديث والتغطية وأنماط الأعطال بينها بسهولة.
ستة مصادر، لكل منها مهمة محددة.
تستخدم الواجهة HTML وCSS وJavaScript دون إطار عمل وMapbox GL JS. تنسّق خدمة Node.js المبنية باستخدام Fastify بين المصادر الخارجية. يوفّر adsb.lol المواقع المباشرة الأساسية، بينما يدعم OpenSky المواقع البديلة والمعلومات التاريخية.
يوفّر adsbdb تفاصيل المسارات والطائرات، وتقدّم OurAirports بيانات مرجعية عن المطارات. وتُستخدم AirLabs وAviationStack ضمن مسار بديل تحكمه ميزانية محددة. يخزّن SQLite السجلات المؤرشفة ومعلومات التغطية، إلى جانب ذاكرة مؤقتة للإجابات التي لا تحتاج إلى الاحتفاظ بها طويلًا.
قد تبدو الوجهة معقولة، وتكون خاطئة.
في إحدى حالات تعارض المسارات، نسبت قواعد بيانات مختلفة رقم رحلة Southwest إلى وجهات مختلفة، بينما أشارت حركة الطائرة الفعلية إلى اتجاه آخر. إعادة استخدام أرقام الرحلات تعني أن المزوّد قد يعيد مسارًا يبدو منطقيًا تمامًا، لكنه يخص مقطع رحلة مختلفًا.
قارنت المسارات المقترحة بأدلة الإقلاع والاتجاه المرصودة، واستبعدت الخيارات التي تناقض حركة الطائرة. وعندما لا تكفي الأدلة المتاحة لإثبات الوجهة، تُبقي الواجهة عدم اليقين ظاهرًا. لا ينبغي لعنوان يبدو واثقًا أن يخفي تعارضًا لم يُحسم.
احتفظ بالمفيد، واجلب الناقص.
تتغير المواقع سريعًا، وتتغير المسارات بمعدل أبطأ، وقد تظل بيانات هيكل الطائرة مفيدة لفترة أطول بكثير. تتناسب مدد التخزين المؤقت المختلفة مع هذه الفروق. إعطاء كل الإجابات مدة الصلاحية نفسها سيؤدي إما إلى بيانات قديمة في الواجهة، أو إلى استهلاك طلبات لتحديث معلومات لم تتغير إلا قليلًا.
يحل الأرشيف الدائم مشكلة أخرى. يمكن للسجلات المسترجعة الإجابة عن عمليات بحث لاحقة، بينما يحدد فهرس التغطية الثغرات التي ما زالت تحتاج إلى طلب خارجي. وتراجع عدادات شهرية في قاعدة البيانات الميزانيات المتاحة قبل إجراء الطلبات المدفوعة، لتبقى مراقبة التكلفة جزءًا من مسار الطلب.
يجب تجهيز البديل قبل انتهاء مهلة الطلب.
يبدأ تسلسل المصادر بالمعلومات المتاحة بالفعل، ثم يجرب المصادر الأقل تكلفة، قبل استخدام الخدمات المدفوعة للأسئلة التي لم تُحسم. يجعل هذا الترتيب اختيار المزوّد جزءًا واضحًا من الخلفية البرمجية، بدلًا من توزيع قرارات اللجوء إلى البدائل داخل واجهة الخريطة.
أظهر انقطاع أحد مصادر البيانات المباشرة فائدة هذا النهج: أبقى البديل المجهز مسبقًا البيانات متدفقة إلى الخريطة. وعزّز ذلك درسًا عمليًا في هذا المشروع. دعم مزوّد ثانٍ يعني تحديد وقت التبديل، والأدلة التي تظل صالحة، وكيفية إبقاء الإجابات غير المكتملة مفهومة.
استكشاف مفيد، بحدود واضحة.
النتيجة واجهة تعمل لاستكشاف معلومات الرحلات المباشرة والسابقة، تدعمها قرارات مدروسة بشأن موثوقية البيانات والتخزين وميزانيات الطلبات. يكمن التحدي الهندسي في تفاعل هذه القرارات: قد يقلل الأرشيف العمل المتكرر، لكنه لا يجعل الأدلة المتناقضة صحيحة.
FlightDetector مشروع شخصي للتتبع وتكامل البيانات. تظل تغطية المصادر وحداثتها عاملين يحددان ما يستطيع عرضه. وليس الغرض منه أن يكون نظام ملاحة تشغيليًا، وتبقى الوجهة غير المعروفة نتيجة مقبولة عندما لا تتمكن المصادر المتاحة من حسمها.


