سجلّ تغييرات الواجهات وحِزم التطوير
سجلّ تغييرات الواجهات وحِزم التطوير
الشريحة من سجلّ تغييرات المنصّة التي تمسّ الشيفرة التي تكتبها مقابل Navvo: نقاط النهاية، والمصادقة، وحدود المعدّل، وأشكال الاستجابات، وحِزم التطوير، والوثائق نفسها.
- أكتوبر 2026
حركة مرور مُحلَّلة على الخريطة، وتواريخ رمضان والأعياد لكل دولة، وأطلس يلتزم بموضوعه
صارت Navvo تتوقّع حركة المرور المتوقعة في أي مكان وزمان في الشرق الأوسط من سنوات من بيانات المرور السابقة، مع مراعاة رمضان والإفطار والأعياد والعطل والإجازات المدرسية والشهر والطقس؛ وترسمها الخريطة على الطرق التي لا تتوفر فيها حركة مرور حيّة، ويستخدمها أطلس للإجابة عن أسئلة المرور المعتاد والمستقبلي. وصار رمضان والأعياد تُحسب بتواريخ كل دولة. كما صار أطلس ومساعد التوثيق يجيبان فقط عمّا صُمّما له.
أطلس يجيب فقط عن أسئلة الخريطة والأماكن
صار POST /ai/atlas يعتذر عن الطلبات التي لا علاقة لها بالأماكن أو الطرق أو حركة المرور أو الخريطة، مثل القصائد والواجبات المدرسية والمعلومات العامة والبرمجة غير المتعلقة، بجملة ودّية واحدة بلغة المستخدم وبالإجراء "answer". أما الأسئلة عن المكان أو المنطقة المعروضة، بما فيها تاريخها وما تشتهر به، فتبقى مُجابة.
مساعد التوثيق يلتزم بالبناء على Navvo
صار المساعد في هذا التوثيق يساعد فقط في واجهات Navvo البرمجية وحِزمها ومفاتيحها وتوثيقها، بما في ذلك الكود الذي يستدعي Navvo، ويرشدك إلى موضوع مناسب في التوثيق لأي شيء آخر.
سجل حركة المرور يُحفظ بالساعة التي جرت فيها كل رحلة
كانت الرحلات المُساهَم بها تُسجَّل بالساعة التي عولجت فيها، فكانت الرحلة المرفوعة متأخرة تقع في ساعة خاطئة من السجل المتعلَّم. صار كل طريق قطعته الرحلة يُسجَّل بالساعة التي التُقطت فيها نقاط GPS الخاصة به، والرحلة التي تعبر حدّ الساعة تُقسَم حسب الطريق. ومن الآن تتعلم الملفات والرؤى والتوقعات من الساعات الصحيحة.
POST /telemetry/tripsالوثائقتقويم حركة المرور يتبع عطلة كل دولة ورمضان وأعيادها
صارت أعلام العطل ونهاية الأسبوع ورمضان التي تعتمد عليها ملفات حركة المرور تغطي 15 دولة، كلٌّ بتوقيتها المحلي وعطلة نهاية الأسبوع المعمول بها في تلك الفترة (مثل السبت والأحد في الإمارات ولبنان)، ورمضان من التاريخ الهجري، وعطلها الرسمية وأعيادها. وتُنسب الطرق إلى الدولة التي تقع فيها بدل قراءتها جميعًا كأنها في الأردن، وتُصنَّف التواريخ الأقدم تصنيفًا صحيحًا بدل معاملتها كأيام عمل عادية.
حركة المرور المتوقَّعة لأي مكان ووقت في الشرق الأوسط
تُعيد نقطة النهاية الجديدة `GET /traffic/analysed` حركة المرور المتوقَّعة عند نقطة ولحظة، من نموذج Navvo لحركة المرور السابقة في المنطقة، معدَّلةً حسب العيد والعطل الرسمية والعطل المدرسية، والساعة التي تلي الإفطار في رمضان، والشهر، والمطر الغزير والعواصف والغبار (من التوقعات للساعات الـ72 القادمة، أو طقس افتراضي عبر `weather`). وتضيف `/traffic/analysed/week` سبعة أيام بالساعة مع أفضل وأسوأ فترة من ساعتين في كل يوم، و`/traffic/analysed/outlook` توقّعًا يوميًا قصيرًا بالإنجليزية أو العربية، و`/traffic/analysed/model` عمليات تدريب النموذج التي تقف خلفها. تحمل الإجابات الوسم `navvo-analysed-traffic`، وليست حيّة أبدًا، وتُعيد `basis: "none"` بدل الخطأ حيث لا يملك النموذج بيانات بعد.
GET /traffic/analysedGET /traffic/analysed/weekGET /traffic/analysed/outlookGET /traffic/analysed/modelالوثائقأطلس يجيب عن حركة المرور المعتادة والمستقبلية
اسأل أطلس كيف ستكون حركة المرور غدًا الساعة 8، أو مساء الجمعة، أو في رمضان، أو إذا أمطرت، أو متى يكون الانطلاق أفضل، فيجيب من حركة المرور المُحلَّلة وبالتوقيت المحلي للمستخدم، وعلى أنها حركة متوقَّعة دائمًا لا قراءة حيّة. أما الأسئلة عن حركة المرور الآن فما زالت تُجاب من البيانات الحيّة.
POST /ai/atlasالوثائق
الحزم البرمجية 0.3.0، ومفاتيح API غير محدودة، وبحث خريطة مركّز، وأسماء عربية أدقّ
وصلت الحزم البرمجية إلى الإصدار 0.3.0 مع مرشّح السعر وتفاصيل النتائج، وصار بإمكان Navvo جعل مفتاح API غير محدود، وصار بحث الخريطة يعرض دبابيس البحث وحدها، وأزال إصلاح للبيانات الأسماء العربية التي ورثتها أماكن من علامة تجارية عن طريق الخطأ، ولم يعد البحث يسمح لفرع بعيد من سلسلة بأن يتقدّم على الفروع القريبة.
إزالة الأسماء العربية الخاطئة من 1,076 مكانًا
كانت عملية تعبئة في آب قد أعطت أماكن الاسم العربي المجرّد لعلامة تجارية مذكورة في اسمها الإنجليزي، مثل صرّاف آلي سُمّي باسم البنك كله أو متجر سُمّي باسم المجمّع الذي يقع فيه، فصارت أماكن كثيرة لا علاقة بينها تحمل الاسم العربي نفسه. أُزيلت هذه الأسماء الـ 1,076، وتظهر هذه الأماكن باسمها الإنجليزي إلى أن يُضاف لها اسم عربي حقيقي. وتحتفظ الأماكن الـ 140 التي اسمها هو العلامة نفسها بهذا الاسم، وحصلت 6 أماكن على قراءة أفضل.
لم يعد الفرع البعيد من سلسلة يتقدّم على الفروع القريبة
مع وجود نقطة أصل، صارت مطابقة الاسم التامة التي تبعد أكثر من 25 كم تتنافس من حيث المسافة مع الأماكن الأقرب التي تتضمّن أسماؤها الاستعلام، فيعرض البحث عن `carrefour` من عمّان فروع عمّان قبل فرع في بلد آخر. أما المكان الكبير، الذي له آلاف المراجعات أو شعبية عالية جدًا، فيحتفظ بتقدّمه مهما بعُد، مثل البتراء أو المسجد الأقصى.
GET /searchالوثائقحزم الويب و Node و Python و Go و Java بالإصدار 0.3.0: مرشّح السعر وتفاصيل النتائج
تقبل الحزم الخمس مرشّح البحث `price` (المستويات 1–4)، وتُعيد تفاصيل النتائج الجديدة في نتائج البحث والأماكن المشابهة: ساعات اليوم، ونطاق السعر ومستواه، وعنوانًا قصيرًا، والحي، وعدد المراجعات، واسم التصنيف، وأبرز ما يُعرف به المكان. وتقبل الأماكن المشابهة أيضًا `locale`، وتعود حزمة الويب إلى `language` المحدَّدة في العميل، لذا صارت استدعاءات `similar()` فيها ترسل تلك اللغة. الاستدعاءات القائمة تبقى تعمل، والتنزيلات والمجاميع الاختبارية في docs.navvo.io/sdks.
حزمة الويب التي تُحمَّل بوسم script صارت بأحدث إصدار
كانت الحزمة التي يحمّلها دليل البدء السريع من `docs.navvo.io/navvo-maps/` ما تزال بالإصدار 0.1.0، فلم تتوفّر للصفحات التي تستخدمها أيٌّ من ميزات البحث المضافة بعده. وصارت الآن بالإصدار 0.3.0 الذي يحتفظ بكل أصناف الإصدار 0.1.0 ودواله. وإذا كانت صفحة كهذه ترسل طلباتها عبر خادم وسيط خاص بك، فاسمح بترويسة الطلب `x-navvo-source` في سياسة CORS لديه.
يمكن جعل مفاتيح API غير محدودة
صار بإمكان Navvo جعل المفتاح غير محدود: فلا حصّة له في الدقيقة أو اليوم ولا حدّ لكل عنوان IP، ويتخطّى أيضًا مُقيِّد الطلبات على نقاط النهاية التي تتطلّب نطاقًا. وتبقى سارية: إلغاء المفتاح، ونطاقاته، وقفله على مواقع وعناوين IP، ونقاط النهاية ذات حدود مكافحة الإساءة الخاصة، وحدود حجم الطلب، ويبقى استخدامه محسوبًا ومفوترًا. ويحمل كائن المفتاح حقل `unlimited` للقراءة فقط، وتُعيد نقطة الاستخدام حدًّا `null` لهذا المفتاح، وتُرسل الاستجابات `x-navvo-quota-unlimited: true`.
تعديل المفتاح في البوابة لم يعد يخفّض حصصه
كان حفظ أي تعديل على المفتاح في بوابة المطوّرين يُعيد إرسال الحصّتين ويخفّض الحدّ الأعلى الذي ضبطته Navvo إلى سقف الخدمة الذاتية، فقد يُخفّض تعديلُ الاسم وحده المفتاحَ من 100,000 إلى 255 طلبًا في الدقيقة. أما الآن فلا تتغيّر الحصّة إلا إذا غيّرتها، وتبقى حصص المفتاح غير المحدود كما هي.
PATCH /developer/api-keys/{id}الوثائق
مراقبة البحث صارت تفحص البحث حسب الموقع، وتعافٍ أنظف بعد إعادة التشغيل
متابعات لحادثة الأول من تشرين الأول ولإعادة تشغيل الخادم في الرابع منه. وفاتت تحليلات البحث بيانات نحو يومين.
أول بحث بالمعنى بعد إعادة التشغيل لم يعد يعود فارغًا
بعد إعادة تشغيل محرك البحث مباشرة، كان أول استعلام بالمعنى قد يتجاوز مهلته أثناء تحميل المحرك لبياناته، فيعود الطلب إلى نتائج الكلمات فقط — أي قائمة فارغة لاستعلام وصفي مثل `place to watch football`. صارت المنصة تجري ذلك الاستعلام الأول بنفسها عند بدء التشغيل وكل بضع دقائق. كذلك صار العامل الذي يتعذر عليه الوصول إلى المحرك يعيد المحاولة بعد 30 ثانية، بدل اعتبار المطابقة بالمعنى غير متاحة خمس دقائق.
GET /searchالوثائقتحليلات البحث فاتتها بيانات يومين (2–4 تشرين الأول)
لم تُسجَّل تحليلات البحث من الساعة 02:55 يوم 2 تشرين الأول حتى 11:02 يوم 4 تشرين الأول بتوقيت عمّان. فالتسجيل يتوقف عمدًا عندما تقل المساحة الحرة على قرص قاعدة البيانات عن 3 غيغابايت، وبقيت دون ذلك إلى أن أُفرغت مساحة في 4 تشرين الأول. وظلّت عمليات البحث تُجاب بصورة طبيعية طوال تلك المدة؛ أما عمليات البحث وأحداث النقر في تلك الفترة فغائبة عن التحليلات ولا يمكن استعادتها. وقد استؤنف التسجيل.
`openNow` وساعات العمل تعمل من جديد
لم تكن حالة «مفتوح/مغلق» تُحسب لأي مكان، لأن ساعات العمل المخزَّنة كانت بصيغة لا تقرؤها المنصة. فكان `openNow=true` في `GET /search` و`GET /places` لا يعيد شيئًا، وكان `GET /places/{slug}/hours` يفيد بعدم وجود ساعات، وتفاصيل المكان بلا `openState`. صارت الساعات تُقرأ من جديد لكل الأماكن التي لها ساعات وعددها 43,864، واليوم الذي لا مدخل له يبقى غير معروف ولا يُبلَّغ عنه على أنه مغلق.
اقتراحات البحث: قائمة البداية تعمل
كان `GET /search/suggestions` مع `q` فارغ يعيد قائمة فارغة دائمًا. صار يعيد التصنيفات اليومية أولًا (مطعم، مقهى، وقود، صيدلية، سوبر ماركت…) ثم المعالم المعروفة، بلغة `locale`، ولم تعد القائمة الإنجليزية تتضمن كتابات بالعربيزي.
GET /search/suggestionsالوثائق`category` يقبل عدة تصنيفات
أرسل حتى 10 معرّفات تصنيفات مفصولة بفواصل في `GET /search` لمطابقة أيٍّ منها، مثل `category=cafe,coffee-shop`. المعرّف الواحد يعمل كما كان، والقيمة التي ليست تصنيفًا لا تطابق شيئًا كما كانت.
GET /searchالوثائقتحليلات البحث تحتسب حركة مفاتيح API لكل مفتاح وتزيل صيغ إحداثيات أكثر
صار حدّ التسجيل لعمليات البحث التي تتم بمفتاح API يُطبَّق لكل مفتاح لا لكل عنوان شبكة، فلم يعد الخادم الذي ينقل عمليات بحث مستخدميه يُحتسب بأقل من حقيقته. كما صارت الإحداثيات تُزال قبل تخزين الاستعلام حين تُكتب بحروف الجهات، أو بالدرجات والدقائق والثواني، أو كقيم `lat`/`lng` مسمّاة.
GET /searchالوثائق
تفعيل البحث بالمعنى واستعادة البحث عن الأماكن القريبة
كانت نتائج البحث المعتمدة على المسافة ناقصة خلال جزء من اليوم؛ أُعيد بناء فهرس البحث وعولج السبب.
نتائج البحث القريبة والمرتّبة حسب المسافة كاملة مجددًا
في الأول من تشرين الأول، من نحو الساعة 03:00 حتى 14:30 بتوقيت عمّان، كان البحث المعتمد على المسافة — مثل «قريب مني» و`radiusKm` و`sort=distance` والبحث عن فئة حول موقع — قد يغفل أماكن قريبة من المستخدم، لأن خطوة صيانة ليلية أتلفت جزء المواقع في فهرس البحث. ولم يتأثر البحث بالاسم. أُعيد بناء الفهرس، وصارت خطوة الصيانة تحافظ على بيانات المواقع.
GET /searchالوثائقتفعيل المطابقة بالمعنى
صار البحث الذي لا تستطيع المطابقة بالكلمات الإجابة عنه، مثل `fix my phone screen` أو `place to watch football` أو `take my dog to the vet`، يجد أيضًا أماكن تناسب الوصف، عبر العربية والإنجليزية، وبالكامل على البنية التحتية الخاصة بـ Navvo. ولا يضيف نتائج إلا عندما تجد المطابقة بالكلمات نتائج قوية قليلة، ولا يعمل أبدًا أثناء الكتابة (`mode=typeahead`)، وتُبلغ الاستجابات التي أسهم فيها `index.mode: hybrid`. وتختار طلبات مفاتيح API تفعيله عبر `semantic=on`.
GET /searchالوثائقالمطابقة بالمعنى تتجاهل الحروف العشوائية وتقرأ العربية كما كُتبت
تحتاج النتائج بالمعنى إلى قرينة في الاستعلام (كلمة تطابق محتوى الدليل، أو فئة، أو مرشّح)، فلا تعيد الحروف العشوائية والأسئلة غير المتعلقة بالأماكن أي نتائج، وتُطابَق الاستعلامات العربية بالتهجئة التي كتبها المستخدم. وصارت الحصّة الساعية للمطابقة بالمعنى للطلبات بلا مفتاح API تحتسب فقط عمليات البحث التي تعمل فيها فعلًا.
GET /searchالوثائق
- سبتمبر 2026
- محطّة رئيسية
إعادة بناء البحث للعربية والعربيزي، مع مرشّحات وتحليلات
صار لبحث الأماكن مسار معالجة جديد: فهم قائم على القواعد للعربية والإنجليزية والعربيزي، وترتيب يقدّم جودة المطابقة، ومرشّحات وأوجه، وثلاث نقاط نهاية جديدة، وتحليلات بحث مشروطة بالموافقة.
البحث يفهم العربية والإنجليزية والعربيزي دون نموذج
صار فهم الاستعلام مجموعة من القواعد والمفردات المنسَّقة بدل استدعاء نموذج، فيُقرأ الاستعلام نفسه دائمًا بالطريقة نفسها ودون انتظار. يتعرّف على كلمات التصنيفات بالكتابات الثلاث (`صيدلية` و`pharmacy` و`saydaliyeh`) وعلى المناطق (`cafe in Abdoun`) و«قريب مني» و«مفتوح الآن» والأوصاف المميِّزة مثل الصيدليات المناوبة، ويجرّب كذلك استعلامات العربيزي بالحروف العربية والاستعلامات العربية بالحروف اللاتينية. وصارت أسماء التصنيفات بالعربية والإنجليزية والعربيزي جزءًا من النص القابل للبحث لكل مكان: فقبل ذلك كانت كلمة تصنيف عربية مثل «فندق» لا تطابق إلا ٢٨ فندقًا من أصل ٧٨٧، هي التي صادف أن احتوى اسمها العربي على الكلمة.
GET /searchالوثائقالنتائج تُرتَّب حسب مطابقة الاسم أولًا ثم المسافة والشعبية
صارت كل نتيجة تقع في نطاق مطابقة (الاسم تامًّا، كل الكلمات، كل الكلمات مع السماح بأخطاء إملائية، مطابقة جزئية، بالمعنى)، والنطاق الأفضل يتقدّم دائمًا، وداخل النطاق تحسم المسافة والشعبية وصلة النص. لم يعد بحث التصنيف يفضّل مكانًا يحمل اسم التصنيف فحسب، ولم تعد مواقف الحافلات ومواقف السيارات تتقدّم على المكان الذي تخدمه، وعند غياب نقطة الأصل تتقدّم الأماكن في الأردن على مطابقات بالجودة نفسها في الخارج. ويحلّ `sort=distance` و`sort=rating` محلّ هذا الترتيب عند طلبهما.
GET /searchالوثائقمرادفات وأسماء بديلة للأماكن بالعربية والإنجليزية والعربيزي
صار البحث يعامل `circle` و`roundabout` و`dawar` و`دوار` ككلمة واحدة، وكذلك `street` و`share3` و`شارع`، تبعًا للطريقة التي تُسمّى بها الأماكن في الأردن وتُكتب فعلًا. ويمكن أن تحمل الأماكن أيضًا أسماءً بديلة يُنسّقها مسؤولو Navvo، فتجد النقحرات والتهجئات الشائعة المكان نفسه.
GET /searchالوثائقتغييرات الأماكن تصل إلى البحث خلال نحو دقيقتين
كان فهرس البحث يُعاد بناؤه كل ست ساعات، فقد يستغرق المكان الجديد أو المعدَّل كل هذه المدة ليصبح قابلًا للعثور عليه. صارت التغييرات تُلتقط الآن كل دقيقة، وتخرج الأماكن المخفية أو المحذوفة في الدورة نفسها، وتجري عمليات إعادة البناء الكاملة المجدولة على الفهرس القائم نفسه، فيواصل البحث الإجابة أثناءها.
GET /searchالوثائقمعاملات بحث جديدة: مفتوح الآن، والتقييم، ونصف القطر، والسمات، والفرز، والنمط
صار `GET /search` يقبل `openNow` (مفتوح الآن، بتوقيت الأردن ومع مراعاة العطل) و`minRating` و`radiusKm` و`amenities` (معرّفات سمات الأماكن نفسها) و`sort=relevance|distance|rating`. ويشمل `category` التصنيفات الفرعية أيضًا، فيعيد `category=food-and-drink` المقاهي والمطاعم والمخابز. ويعني `originType=map` أن النقطة هي مركز الخريطة لا موقع المستخدم، ويفصل `mode=typeahead|submit` ضغطات المفاتيح عن عمليات البحث.
GET /searchالوثائقاستجابات البحث تضيف الأوجه والإبراز والمسافة ومعرّف الاستعلام
حقول إضافية جديدة: `queryId` للإبلاغ عن النقرات، و`facets` بأعداد التصنيفات والسمات (`facets=category,amenities`)، وأسماء `highlight` مُهرَّبة بصيغة HTML (`highlight=true`)، و`distanceKm`، و`imageUrl`، و`promoted` على النتائج التي وضعتها قاعدة تحريرية أو ممولة، و`didYouMean` على الاستعلامات ذات الأخطاء الإملائية التي لا تطابق شيئًا، و`index.mode`. وتحمل الاستجابات `Cache-Control: no-store`، ويحتفظ كل حقل موجود باسمه ونوعه.
GET /searchالوثائق
- محطّة رئيسية
عرض تقاطع يشبه المكان الذي تقود فيه
أُعيد تصميم نافذة التقاطع ثلاثية الأبعاد — سماء ومدينة بلون الحجر وأرصفة وأشجار شوارع ونفق مُضاء من الداخل — ولم تعد الهندسة التي تعتمد عليها تتوقف بعد إعادة التشغيل.
هندسة التقاطعات تبقى متاحة بعد إعادة التشغيل
كانت مشاهد التقاطعات فارغة، وكانت نقطة الجسور والأنفاق تجيب بـ available: false. فالخدمة التي تحسب تلك الهندسة كانت تحتفظ بحالة قديمة من تشغيلها السابق، فتعجز عن الإجابة بعد كل إعادة تشغيل في مكانها؛ ثم كان فحص السلامة يستبدلها فتفشل بالطريقة نفسها — 245 مرة. وهي الآن تمسح تلك الحالة عند كل بدء، فصارت إعادة التشغيل آمنة وعادت هندسة التقاطعات تجيب طبيعيًا. النقطة نفسها والاستجابة نفسها.
GET /junction/structuresالوثائقنقطة هياكل التقاطع تعيد المباني حتى 360 مترًا، الأقرب أولًا
صارت مصفوفة buildings في GET /junction/structures تغطي نحو 360 مترًا حول النقطة بدل نحو 220 مترًا، مرتّبة الأقرب أولًا وبحد أقصى 900 (سابقًا: أول 320 تُعثر عليها بلا ترتيب، فقد يُسقط الحد المباني التي تحيط بالتقاطع نفسه). وعند أحد تقاطعات عمّان صار ذلك 108 مبانٍ بدل 35. شكل الاستجابة لم يتغيّر؛ وطلب بنصف قطر 450 مترًا نحو 10–30 كيلوبايت مضغوطة.
GET /junction/structuresالوثائق
أطلس أسرع وأوسع، ويقول ما لا يعرفه
ينتقل أطلس ومساعد التوثيق إلى نموذج مستضاف أسرع بسياق أوسع بكثير، وتتوقف إجابات حركة المرور عن تقديم الأنماط المعتادة كقراءات مباشرة، ولم يعد انقطاع المزوّدين يمرّ دون أن يُلاحَظ.
أطلس يجيب بنموذج أسرع وأكبر
صار النموذج الذي يقف وراء مساعد الخريطة نموذجًا مستضافًا أكبر يجيب عادةً في نحو ثانية واحدة، بما في ذلك حين يبحث عن أماكن أو يخطط مسارًا، ويكتب بعربية طبيعية. ولم يتغيّر عقد الطلب والاستجابة — الإجراءات نفسها والحقول نفسها، ويبقى `model` دائمًا `navvo-ai`. وإن تعذّر الوصول إلى النموذج المستضاف ينتقل أطلس إلى نموذج محلي ثم إلى محلّله الحتمي، كما كان.
أطلس لم يعد يقدّم حركة المرور المعتادة على أنها مباشرة
معظم إجابات نافّو عن حركة المرور هي النمط المعتاد للساعة الحالية، مستخلصًا من رحلات سابقة، لا قراءة مباشرة. وكان أطلس يتلقّى تلك الإجابة دون أساسها، فقد يخبر المستخدم أن طريقًا ما سالك «الآن». وصار يتلقّى الأساس مع البيانات ويصوغ الإجابة وفقه — «عادةً في هذا الوقت من اليوم» — ويوضّح أن الإجابة تخصّ منطقة لا طريقًا بعينه. كما لا يذكر أطلس إلا الحقائق الآتية من بيانات نافّو في المحادثة ذاتها، ويقول ذلك حين لا تغطي تلك البيانات أمرًا ما، كساعات العمل.
POST /ai/atlasالوثائقأسئلة «قريب مني» وحركة المرور تستخدم منطقة المستخدم نفسه
حين كان المستخدم يطلب أماكن قريبة منه، كان أطلس يبحث دون موقعه، فلم تُرتَّب النتائج حسب القرب؛ وكان سؤال «كيف حركة المرور؟» يعيد ملخّصًا للشبكة كلها موسومًا على أنه منطقة المستخدم. وصار كلاهما يستخدم المنطقة المحيطة بالمستخدم حين يُعرف موقعه. وحين لا يُعرف، تقول إجابة حركة المرور إنها تغطي الشبكة كلها بدل تقديمها كأنها محلية.
POST /ai/atlasالوثائقمساعد التوثيق يقرأ التوثيق كله
كان المساعد في docs.navvo.io يجيب من مجموعة مختارة من الصفحات، مقتطعة لتناسب حدود نموذجه — ولا سيما بالعربية، حيث لم يكن التوثيق الكامل يتّسع. وصار يقرأ التوثيق كله بلغة السؤال في كل إجابة، وتُجاب الأسئلة المتكررة أسرع لأن التوثيق غير المتغيّر يُعاد استخدامه بينها. وحين لا يكون أمر ما موثّقًا يقول ذلك ويشير إلى أقرب صفحة بدل التخمين، وصار الخطأ يعرض رسالة قصيرة واضحة بدل التفاصيل التقنية.
السؤال الأول بعد كل تحديث لم يعد ينتظر قراءة التوثيق
يعيد المساعد استخدام التوثيق الذي قرأه بين سؤال وآخر، وهذا ما يجعل معظم الإجابات تبدأ خلال ثانية إلى ثلاث ثوانٍ. وبعد كل تحديث لموقع التوثيق كانت إعادة الاستخدام هذه تبدأ من الصفر، فكان السؤال الأول في كل لغة ينتظر نحو سبع عشرة ثانية بينما يقرأ المساعد التوثيق كله. وصار يقرأ اللغتين مرة واحدة عند بدء تشغيل الموقع، فيحصل أول زائر بعد التحديث عادةً على إجابة تبدأ خلال ثوانٍ قليلة بدل انتظار تلك القراءة الكاملة.
استعادة التوجيه والبحث في العناوين
عادت خطط المسارات والبحث في العناوين وهندسة التقاطعات إلى العمل بعد أن تركت إعادة تشغيل الخادم خدماتها المساندة غير قابلة للوصول.
تخطيط المسارات يعمل مجددًا
كان بدء جلسة ملاحة يُخفق برسالة «تعذّر تخطيط مسار بين نقطة الانطلاق والوجهة» لكل زوج من النقاط، ولم يكن البحث في العناوين يعيد شيئًا من الخريطة الأساسية. ولم تكن المشكلة في البيانات: إذ لم يكن الوصول إلى خدمتَي التوجيه والعناوين ممكنًا أصلًا. فقد أعادت إعادة تشغيل الخادم في 18 أيلول تحميل لقطة جدار حماية محفوظة ما زالت تحمل قواعد توجيه لجيل أقدم من تلك الخدمات، تشير بثلاثة عناوين داخلية إلى وجهات لم تعد موجودة. فكان أي شيء يستمع عليها غير مرئي مهما كانت سلامته. وتعمل الخدمات الآن على عناوين خاصة بها بعيدًا عن تلك القواعد، وعاد تخطيط المسارات والبحث في العناوين والبحث العكسي وهندسة الجسور والأنفاق خلف مشاهد التقاطعات إلى العمل. ولم يتغيّر شيء في الواجهة العامة — النقاط نفسها والاستجابات نفسها.
POST /navigation/sessionsPOST /routing/routeGET /geocode/searchGET /geocode/reverseGET /junction/structures
تعزيز أمان رمز عارض الصور
صار رمز عارض الصور يُصدر من بيانات اعتماد خاصة بالمتصفح، مع حقل جديد يتيح للعملاء التمييز بين غياب الصور وتعطيل العارض.
رمز العارض صار يُصدر من بيانات اعتماد مخصّصة للمتصفح
كان GET /imagery/nearest-image يعود إلى بيانات اعتماد من جهة الخادم عند عدم تهيئة رمز عارض مخصّص. أُزيل هذا التراجع: صار clientToken يُقدَّم فقط من رمز مقيَّد بالمتصفح، وتكون قيمته null عند عدم تهيئته. روابط الصور المصغّرة في image وnearby[] موقَّعة مسبقًا ولم تتأثر، لذا تستمر صور الأماكن المصغّرة بالعمل.
GET /imagery/nearest-imageالوثائقحقل viewerConfigured الجديد في nearest-image
صارت الاستجابات تتضمّن viewerConfigured، ليتمكّن العميل من التمييز بين «لا توجد صور عند هذه النقطة» و«العارض غير مُفعَّل في هذا التثبيت» بدل عرض رسالة واحدة للحالتين.
GET /imagery/nearest-imageالوثائق
إمكانية التحقق من ملكية النطاق قبل المراجعة الأمنية
أصبح بإمكان navvo.io إثبات سيطرتنا على النطاق لمُدقّق خارجي، تمهيدًا لإجراء تقييم أمني مُصرَّح به.
الخريطة الأساسية لم تعد تعرض أعمالًا لا يملكها نافّو
كانت بلاطات الخريطة الأساسية تصل حاملةً طبقة من المتاجر والبنوك والعيادات والفنادق والمكاتب ومواقف النقل من المسح الجغرافي المفتوح المبنية عليه. ولم تكن تلك بيانات نافّو يومًا، وهي تُزال الآن من كل بلاطة متجهية قبل تقديمها. ولأن الإزالة تجري في البلاطة نفسها لا في النمط، فهي تصمد مع أي راسم — أنماطنا، أو نمط كتبته أنت، أو نمط طرف ثالث موجَّه إلى بلاطاتنا — لا مع الخرائط المرسومة بالطريقة التي توقّعناها فحسب. وتنطبق القاعدة ذاتها الآن على الواجهة البرمجية: بحث العناوين يعيد شوارع وأحياء ومدنًا ولم يعد يُظهر أعمالًا من ذلك المسح، والبحث العكسي عن إحداثي يقع فوق إحداها يعيد شارعه وحيّه ومدينته مع إزالة اسم المنشأة وتصنيفها. والأماكن التي يعرضها نافّو هي التي في كتالوجه الخاص، ولا تُرسم على الخريطة الأساسية تلقائيًا أبدًا — اطلبها عبر البحث أو الأماكن القريبة أو نقطة إطار الخريطة واعرضها بنفسك. كما صارت البلاطات أصغر بنسبة 18–35% في المدن نتيجة لذلك. وتلتقط جلسات الخرائط القائمة هذا تلقائيًا، إذ يتغيّر عنوان البلاطة بتغيّر محتواها فلا يُقدَّم شيء من ذاكرة قديمة.
إغلاقات الطرق تُقتطع من بلاطات الخريطة مجددًا
ثلاث معالجات منفصلة للبلاطة المتجهية — إزالة الأعمال غير المملوكة، وتطبيق إعادة تسمية التسميات، واقتطاع الطرق المغلقة — كُتبت فروعًا يستبعد بعضها بعضًا، فكانت البلاطة تنال أول ما ينطبق منها لا غير. ومع تفعيل إعادة التسمية، وهي مفعّلة، لم تكن الطرق المغلقة تُقتطع فعليًا من أي بلاطة: الإغلاق يظهر كطبقة فوقية بينما يبقى الطريق تحته في بيانات الخريطة. وقد صارت الثلاث تتراكب الآن، فتنال البلاطة كل معالجة تنطبق عليها، ويسمّي عنوان ذاكرتها المؤقتة جميعها فلا يمكن لتغيير أيٍّ منها أن يقدّم نتيجة قديمة.
GET /tiles/vector/navvo/planet/{z}/{x}/{y}.pbfالوثائقالتسميات العربية تُقرأ بشكل صحيح في حزمة الويب مجددًا
كانت الخرائط المبنية بحزمة الويب تُظهر أسماء الأماكن والشوارع العربية غير مشكَّلة وفي الاتجاه الخاطئ، أو تُسقطها كليًا، بينما يبدو كل ما عداها على الخريطة سليمًا. فالحزمة تُحمّل إضافة صغيرة لتشكيل النص عند أول نص من اليمين إلى اليسار تصادفه، وكان العنوان الذي تُحمّلها منه يعيد «غير موجود»: الملف في مكانه، لكن المجلد الحاوي له لم يكن يحمل صلاحية التنفيذ، فلم يستطع خادم الويب الوصول إلى داخله. ولم يُخفق شيء بصوت مسموع — إذ ظلّت الخريطة تُرسم، ولم يفضح الأمر إلا العربية. وقد أُصلح المجلد، فصُحّح بذلك كل تكامل قائم دون تغيير سطر من شفرته أو إعادة نشر أي شيء، وصار هناك فحص يتحقق في أي وقت من أن كل أصل تجلبه الحزمة وقت التشغيل قابل للوصول فعلًا وأنه الملف الذي يدّعيه. وإن كانت صفحتك تحجب ذلك الطلب عبر سياسة أمان المحتوى، فيمكن استضافة الإضافة ذاتيًا وتمريرها في rtlTextPluginUrl.
بحث الأماكن عاد إلى محرّك البحث الحقيقي
كان بحث الأماكن يجيب بهدوء من مطابقة نصية بسيطة في قاعدة البيانات طوال ثمانية أيام، بعد أن أخفق محرّك البحث خلفه في العودة عقب إعادة تشغيل الخادم في 30 آب. ولم يبدُ شيء معطّلًا، لأن البحث مكتوب ليتراجع إلى بديل لا أن يُخفق: فظلّت النتائج تظهر، ولم تكن العلامة الخارجية الوحيدة سوى اعتماد واحد يُبلَّغ عنه بأنه متدهور. والذي فُقد هو كل ما يفعله المحرّك ولا تستطيعه المطابقة النصية البسيطة — التسامح مع خطأ إملائي، والترتيب حسب الصلة لا حسب ورود سلسلة نصية، ومطابقة العربية مطابقة سليمة. والمحرّك يعمل الآن مجددًا، وأُعيد بناء الفهرس على الكتالوج كاملًا، وضُبط ليعيد التشغيل تلقائيًا. والبحث عن «pharmcy» أو «hospitl» صار يجد الصيدليات والمستشفيات من جديد.
GET /searchالوثائق