جواز السفر يسافر مع صاحبه، أما بطاقة الهوية الوطنية فتبقى عادة داخل البلد الذي أصدرها. وهذا الفرق هو أصل معظم التعقيد في التحقق منها. فلا توجد هيئة عالمية واحدة تنشر قواعد موحدة لكل البلدان، بل توجد مجموعات قواعد وطنية مستقلة تشترك في الشكل العام وتتباعد في كل تفصيل عملي تقريبا.
والمشكلة العملية ليست في صعوبة الحساب، فمعظم هذه الأنظمة حساب رقم تحقق بسيط. المشكلة أن المنتج الذي يقبل معرفات من عدة بلدان يحتاج جدولا يتغير باستمرار، وأن الجدول نفسه لا يكفي لأنه يحتاج معرفة محلية لا يستطيع الكود اكتسابها بنفسه.
ما المقصود بقواعد التحقق الوطنية؟
المقصود هو مجموعة الشروط التي يضعها بلد واحد لرقم هويته. تشمل الطول الكلي، والأحرف المسموح بها سواء كانت أرقاما فقط أو مزيجا، وموضع رقم التحقق، والخوارزمية المستخدمة، ونطاقات الأرقام المخصصة لمناطق أو فترات إصدار، والأرقام المحجوزة لأغراض معينة، وحالات الاستثناء.
وهذه الشروط ليست مواصفة تقنية منشورة دائما في وثيقة واحدة. ففي أكثر الحالات هي مزيج من قرار إداري وجدول منشور على بوابة حكومية وسلوك مرصود في تعاملات فعلية. ومن هنا يأتي أهم فرق بين التحقق من المعرف الوطني والتحقق من رقم بطاقة مصرفية: الثاني تعرفه مواصفة دولية دقيقة، والأول يعرفه البلد الذي أصدره.
ولذلك تصف هذه المقالة الوضع العام بدل رصف قواعد بلد بعينه، لأن الجدول المنقول إلى صفحة داخلية يتقادم قبل أن يلاحظ أحد. أما المبادئ فلا تتقادم بهذه السرعة. والخطوة الأولى في أي عمل جدي هي أن تجمع المصادر التي ستبني عليها، وأن تكتب بجانب كل قاعدة من أين جاءت ومتى روجعت آخر مرة.
لماذا تختلف القواعد من بلد إلى بلد؟
الطول أولا. فالبلد الذي بدأ الترقيم قبل الحواسيب اختار عددا من المواضع كافيا للعدد المتوقع من السكان، ثم اضطره النمو إلى إضافات متفرقة، فينتج رقم أطول مما يحتاجه نظيره الحديث. والبلد الذي بنى نظامه بعد الحواسيب اختار الطول المناسب من البداية.
والاستعمال ثانيا. فبعض الأنظمة تحمل هوية المواطن والملف الضريبي والسجل الاجتماعي في رقم واحد، فيلزم معرف واحد لكل مواطن على مدار حياته. وبلدان أخرى تفصل الأدوار وتصدر معرفا ضريبيا مختلفا عن بطاقة الهوية، ولذلك يقبل النموذج الواحد أنواعا مختلفة من الأرقام دون أن يخلط بينها.
وهناك الإرث الإداري. فالنطاقات المخصصة للمناطق أو الولايات أو فترات التسجيل تجعل سطح النطاق اعتبارا حقيقيا في أي تنفيذ. ثم تأتي دراسة الحالة البرازيلية لتوضح الصورة عن قرب: نظامان متوازيان في بلد واحد، أحدهما للأشخاص والآخر للكيانات، وقد شرح الاثنان في مقالة التحقق من CPF و CNPJ.
الخانة الرقمية: الشرط المشترك الوحيد؟
ليست شرطا مشتركا بالمعنى الدقيق. معظم الأنظمة الوطنية تنتهي برقم تحقق، لكن بعضها لا ينتهي به، والاختلاف بين الصنفين هو أهم فرق يجب أن يظهر في الكود.
وحيث يوجد رقم التحقق، تختلف التفاصيل على ثلاثة مستويات: العائلة المستخدمة، وهي مبينة في مقالة خوارزميات رقم التحقق، ثم الأوزان المحددة لكل موضع، ثم الطريقة التي تعامل بها الأرقام والنقاط التي تفصل بين أجزاء الرقم عند الإدخال. والفرق الثالث هو الذي يفسد التنفيذ بصمت، لأن النقاط والواصلات تظهر في كل رقم تقريبا تتلقاه الأداة.
وحيث لا يوجد رقم تحقق، لا يستطيع الفاحص أن يقول أكثر من أن الشكل مقبول. وقد بسطت مقالة الأرقام بلا رقم تحقق هذا الوضع وشرحت لماذا التنسيق وحده نتيجة أضعف بكثير من نتيجة الحساب.
ما الذي لا تستطيع أداة عامة أن تعرفه؟
الأولى أن وجود النتيجة مقبولة لا يعني أن الرقم صادر فعلا. فالحساب يتحقق من إتفاق الخانة مع المتن، ولا يستشار أي سجل وطني في أثناء ذلك. وأي قيمة مبنية على قاعدة صحيحة ستمر من الفحص، وهذا هو الغرض من أداة إنشاء بيانات الاختبار بالضبط.
والثانية هي النطاقات المحجوزة. فمعظم الأنظمة تحتفظ بمجموعات من الأرقام للاختبارات الداخلية أو لوثائق نموذجية مطبوعة، وقد تستبعد بعض الأرقام من الاستعمال العادي. والأداة التي لا تعرف هذه النطاقات تقبل قيما يعرف الموظف المحلي أنها ليست حقيقية.
والثالثة هي التغيير الزمني. فالطول قد يتغير، والنطاق قد ينتقل بين منطقة وأخرى، والخانة الرقمية قد تنتقل من موضع إلى موضع آخر. وهذه التغيرات لا تصل إلى الصفحات المترجمة في الوقت نفسه الذي تصل فيه إلى الموظفين.
للمطورين: تصميم حقل مرن للمعرفات الوطنية
خطة العمل هنا بسيطة ومملة، وهذا جيد.
- أنشئ جدول قواعد لكل بلد كبيانات لا كشروط موزعة في الكود، حتى يصبح التعديل سطرا واحدا.
- سجل لكل بلد الطول أو الأطوال المقبولة، والأحرف المسموحة، ومعامل الحساب، وطريقة التعامل مع الفواصل.
- ميز في القيمة المعادة بين ثلاثة نتائج لا نتيجتين: مقبول، مرفوض، ونظام غير معروف.
- لا تعامل الحقل الفارغ على أنه فشل، بل غياب قيمة.
- اختبر الحدود: أقل طول، أطول طول، أحرف مختلطة، وحالة الرقم الذي ينتمي إلى بلد آخر.
والبند الثالث هو الأكثر إهمالا. فالخلط بين الرقم الخاطئ والنظام المجهول يجعل تقارير الأخطاء غير قابلة للاستعمال، لأن الفريق يرى سيلا من الحالات المرفوضة لا يعرف أيها يستحق التعديل.
الخصوصية والتعامل مع أرقام الهوية
رقم الهوية معرف مفتوح نسبيا داخل بلد مركزه، ولا يجوز التعامل معه كسر مطلق. ولذلك لا تدخل قيم حقيقية في بيئات الاختبار أبدا. القيمة الوهمية المبنية على القاعدة الصحيحة تكفي لاختبار الكود، وتدفع ثمن الخطأ مرة واحدة عند تغيير القاعدة.
والممارسة الجيدة الثانية هي الإخفاء عند العرض والتسجيل. أبق بضعة أحرف أولى كما هي، واحذف ما يكفي من الباقي ليجعل القيمة غير قابلة للمطابقة، ولا تكتب الرقم الكامل في سجلات التشخيص. وتبين أداة التحقق من الأرقام كيف تصف نتيجة الفحص دون طبع القيمة المدخلة كاملة.
الخطوات التالية
اكتب قائمة البلدان التي يخدمها منتجك، ثم اكتب لكل واحد منها الطول ومصدر القاعدة. وابدأ بالأكثر تكرارا في بياناتك الفعلية، لأن الجدول الناقص يمكن إكماله لاحقا أما الجدول الخاطئ فيرفض عملاء صحيحين. وحين تكون القاعدة الدولية على الطرف الآخر من المقارنة، أرجع إلى كيف يعمل التحقق من الأرقام لتثبيت الخطوات الأربع التي لا تختلف مهما تغير البلد.