الأدلة

تحقق من تطابق العنوان مع رمزه البريدي

قد يكتب العميل عنوان شارع حقيقيًا ورمزًا بريديًا حقيقيًا لا ينتميان فعلًا أحدهما إلى الآخر، وغالبًا ما يحدث ذلك بتبديل مواضع الأرقام أو بنسخ رمز بريدي قديم إلى عنوان جديد. ولا يكشف أي من الحقلين وحده المشكلة، لأن كلًا منهما صالح بمفرده.

استخراج كل حقل على حدة

رمّز العنوان الكامل جغرافيًا باستخدام /v1/forward لمعرفة الرمز البريدي الذي يُستخرج منه فعلًا، واستعلم بشكل منفصل عن الرمز البريدي الذي كتبه العميل باستخدام /v1/postcode لمعرفة المنطقة التي يغطيها.

GET /v1/forward?q=10 Downing Street, London&limit=1
{
  "status": "ok",
  "results": [
    {"formatted": "10 Downing Street, London, UK", "lat": 51.5033, "lon": -0.1276, "type": "address", "precision": "house", "confidence": 0.96, "place_id": "op678", "components": {"postcode": "SW1A 2AA", "city": "London"}}
  ]
}
GET /v1/postcode?code=SW1A 1AA&country=GB
{
  "status": "ok",
  "postcode": "SW1A 1AA",
  "country_code": "GB",
  "results": [{"lat": 51.5014, "lon": -0.1419, "components": {"city": "London", "region": "Greater London"}}]
}

مقارنة النتيجتين

إذا كان مكوّن postcode من استعلام العنوان لا يطابق الرمز البريدي الذي كتبه العميل، كما في هذا المثال، فهذا عدم تطابق يستحق الإشارة إليه، حتى لو ثبت أن العنوان والرمز البريدي حقيقيان كل على حدة. ومقارنة المكونين مباشرة أكثر موثوقية من مقارنة المسافة بين مجموعتي الإحداثيات، لأن منطقة الرمز البريدي قد تكون صغيرة بما يكفي بحيث لا يقع حتى التطابق الحقيقي بالضبط على إحداثيات العنوان.

مثال ثانٍ: عدم تطابق أكبر يستحق اكتشافه مبكرًا

يكشف الفحص نفسه أيضًا خطأً أوضح بكثير، وهو رمز بريدي أُدخل لدولة أو منطقة مختلفة تمامًا عن عنوان الشارع نفسه، كرمز بصيغة المملكة المتحدة مقرون بعنوان يقع فعلًا داخل دولة أخرى. ومقارنة مكوّن الدولة من نتيجة العنوان بمعامل الدولة المستخدم في استعلام الرمز البريدي، قبل الوصول حتى إلى مقارنة الرمز البريدي الأكثر تفصيلًا، فحص أولي زهيد التكلفة يستبعد هذا النوع من الأخطاء الكبيرة مبكرًا.

ما الذي تفعله عند عدم التطابق

اعرض القيمتين على العميل جنبًا إلى جنب واطلب منه تأكيد القيمة الصحيحة، بدلًا من اختيار إحداهما بصمت أو رفض الطلب كليًا. فالرقم المقلوب يسهل إصلاحه بمجرد الإشارة إليه، أما الحالة الحدّية الحقيقية التي يغطي فيها رمز بريدي بشكل مشروع حدًا بين قيمتين شائعتي الاستخدام فهي نادرة بما يكفي للتعامل معها بتأكيد يدوي سريع.

خطأ شائع يجب تجنبه

لا تقارن مجموعتي الإحداثيات مباشرة بعتبة مسافة بديلًا عن مقارنة مكونات الرمز البريدي نفسها. فمنطقة الرمز البريدي قد تكون صغيرة جغرافيًا بما يكفي بحيث يُظهر حتى التطابق الصحيح تمامًا بعض المسافة بين النقطة التمثيلية للرمز البريدي وإحداثيات مبنى العنوان المحدد، كما قد يكون رمز المنطقة الصغيرة كبيرًا جغرافيًا بما يكفي بحيث يقع زوج غير متطابق فعلًا ضمن عتبة مسافة متساهلة. ومقارنة نص الرمز البريدي نفسه فحص أكثر مباشرة وموثوقية من محاولة استنتاج التطابق من المسافة.

حالة حدّية تستحق أن تأخذها في الحسبان

قد تعيد منطقة رمز بريدي تقع تمامًا على الحد بين منطقتين إداريتين، بشكل مشروع، مجموعة مكونات تبدو مختلفة قليلًا بحسب نقطة النهاية التي استخرجتها، حتى عندما تكون كلتاهما صحيحة. تعامل مع التطابق النصي القريب غير التام، كالاختلاف في طريقة كتابة اسم المنطقة فقط، بتساهل أكبر من التعامل مع رمز بريدي مختلف تمامًا.

فحص طلبات كثيرة دفعة واحدة

بالنسبة إلى دفعة من الطلبات الحالية بدلًا من إرسال جديد واحد، تقبل نقطتا النهاية مصفوفة POST مجمّعة، لذا يمكن فحص الطلبات المتراكمة بإرسال العناوين في طلب مجمّع واحد إلى /v1/forward والرموز البريدية في طلب مجمّع آخر إلى /v1/postcode، ثم مقارنة مصفوفتي النتائج حسب الموضع.

تكلفة الطلبات

يستخدم هذا الفحص طلبين لكل طلب شراء، واحدًا للعنوان وواحدًا للرمز البريدي، ويُحتسب كلاهما من حصتك اليومية مثل أي استعلام آخر. وهذه تكلفة معقولة لاكتشاف خطأ كان سيظهر لولا ذلك في صورة توصيل فاشل.

اكتشاف رمز بريدي غير مطابق قبل شحن الطلب يستحق الطلب الثاني الذي يتطلبه الفحص. تفاصيل نقطتي النهاية متوفرة في توثيق الترميز الجغرافي الأمامي وتوثيق الاستعلام عن الرمز البريدي.