Skip to content

جودة البيانات وحداثتها ​

تتقادم البيانات المرجعية القانونية بهدوء: يُنشر سعر فائدة جديد، أو تنتقل محكمة، أو يدمج قانون كانتونين. تشرح هذه الصفحة كيف تواكب الحزمة ذلك، وإلى أي حد يمكنك الوثوق بكل مجموعة بيانات.

من أين تأتي كل مجموعة بيانات ​

مجموعة البياناتالمصدرطريقة البناءتتغير حينالمراجعة كل
المناطق القضائية، الدوائر القضائيةGerechtelijk Wetboek / Code judiciaire، الملحق، المادتان 4–5يدويًايعيد قانون رسم الخريطة القضائية (نادر؛ آخر مرة في 2014)24 شهرًا
الكانتوناتGerechtelijk Wetboek / Code judiciaire، الملحق، المادة 1 (nl + fr)مولَّدة: pnpm build:cantonsيغيّر قانون الملحق؛ تندمج بلديات12 شهرًا
حدود الكانتوناتNGI ‏(geo.be)أسبوعيًا: لقطات + pnpm build:dataينشر NGI نسخة جديدةأسبوعيًا
البلدياتالبيانات المفتوحة لـStatbelمولَّدة: pnpm build:cantonsتندمج بلديات (2019، 2025)12 شهرًا
الأقاليم، المقاطعاتقائمة رموز REFNIS لدى Statbelأسبوعيًا: لقطات + pnpm build:dataتغيّر Statbel سجلّها (آخر مرة في 1995)أسبوعيًا
المحاكمtribunaux-rechtbanken.beأسبوعيًا: لقطات + pnpm build:dataتنتقل محكمة أو تغيّر بيانات الاتصال أو مواعيد العملأسبوعيًا
السجونjustitie.belgium.beأسبوعيًا: لقطات + pnpm build:dataيُفتتح سجن أو يُغلق أو يغيّر بيانات الاتصالأسبوعيًا
Justitiehuizen / maisons de justicevlaanderen.be، maisonsdejustice.beأسبوعيًا: لقطات + pnpm build:dataتنتقل إحداها أو تغيّر بيانات الاتصالأسبوعيًا
الرموز البريديةجدول التحويل لدى Statbelأسبوعيًا: لقطات + pnpm build:dataتنشر Statbel جدولًا جديدًا (اندماجات، رموز جديدة)أسبوعيًا
أسعار الفائدةFOD Financiën، Belgisch Staatsbladيدويًاكل سنة (القانونية) وكل نصف سنة (التجارية)6 أشهر

لا تُعدَّل مجموعات البيانات المولَّدة يدويًا أبدًا. يحلّل pnpm build:cantons النص الرسمي ويرفض كتابة أي شيء ما لم تتطابق النسختان الهولندية والفرنسية وتُغطَّ كل بلدية؛ ويرفض pnpm build:data حين لا يمكن تصنيف صفحة، أو لا يكون لكانتون محكمة، أو لا يكون لكانتون حد في ملف NGI.

كيف تُبنى البيانات ​

official site ──fetch──> snapshots (sources branch) ──parse──> data/*.json ──> pull request
  1. الجلب. كل يوم اثنين يجلب workflow المصادر كل صفحة من المصادر (scripts/sources)، بتهذيب: طلب واحد في الثانية لكل موقع، مع user agent يسمّي المشروع. ويحفظ كل صفحة على الفرع sources، مع فهرس لما جُلب ومتى، وبصمة (hash) لمحتواه. لا تُخزَّن الصفحة من جديد إلا حين يتغير محتواها، فيُظهر تاريخ الفرع ما تغيّر وفي أي يوم. والصفحة التي تفشل (خطأ خادم، 404) تحتفظ بآخر لقطة سليمة لها وتوقف التشغيل، فيُفتح issue: لا تُعاد بناء البيانات أبدًا من صورة ناقصة. والصفحة التي لم يعد المصدر يربط إليها تُحذف من اللقطات؛ أما سجلها فيبقى في البيانات، منتهيًا بـvalidTo (اليوم السابق للفحص الذي لم يجدها)، فيبقى معرّفها صالحًا ولا يزال البحث عن يوم سابق يجده. والصفحة التي تظهر تحصل على سجل بـvalidFrom.
  2. التحليل. يقرأ pnpm build:data اللقطات (scripts/parse) ويكتب المحاكم والسجون والـjustitiehuizen / maisons de justice وحدود الكانتونات. ويبلّغ عمّا لا يستطيع قراءته، ويفشل حين لا يمكن تصنيف صفحة.
  3. الاختبار. يجري الـworkflow فحص الأنواع ويشغّل الاختبارات على البيانات الجديدة.
  4. المراجعة. حين تتغير البيانات، يفتح pull request واحدًا أو يحدّثه مع الفروق وقائمة القيم غير المقروءة. يراجعه شخص مقابل المصادر ويدمجه.

لتشغيله بنفسك: pnpm fetch:sources (يكتب .sources/)، ثم pnpm build:data.

تُعاد بناء الكانتونات والبلديات يدويًا بـpnpm build:cantons: موقع Belgisch Staatsblad / Moniteur belge (الجريدة الرسمية البلجيكية) يرفض خوادم GitHub (#52).

الفحوص الآلية ​

عند كل تغيير (CI) ​

  • التحقق من المخطط: كل ملف بيانات يطابق JSON Schema الخاص به.
  • السلامة: المعرّفات فريدة وصحيحة الصيغة؛ كل إشارة (دائرة قضائية، كانتون، بلدية، محكمة، حد) تشير إلى سجل موجود؛ لكل كانتون حد واحد، بصيغة GeoJSON صالحة داخل بلجيكا، ومجموعها يساوي مساحة البلد بلا تداخل؛ كل بلدية في كانتون واحد بالضبط أو مقسّمة على عدة كانتونات؛ كل كانتون يبقى ضمن مقاطعات دائرته القضائية؛ لكل كانتون vredegerecht / justice de paix واحد بالضبط؛ لكل قسم نوع محكمته ومنطقتها؛ لكل صنف من المحاكم العدد الذي يحدده القانون؛ كل كانتون يتبع محكمة واحدة من كل نوع (واحدة لكل لغة في Brussel)، وكانتونات المحكمة تقع في دائرتها القضائية ومنطقتها القضائية.
  • المحلّلات: مختبرة من الطرف إلى الطرف على نسخ مقتطعة من صفحات حقيقية (test/fixtures/sources)، وكل قارئ (أرقام الهواتف، IBAN، العناوين، مواعيد العمل) على الصيغ التي رُئيت في المصادر وعلى ما يجب أن يرفضه.
  • أسعار الفائدة: الفترات مرتبة، ولا تتداخل أبدًا ولا تترك فجوات؛ السعر القانوني يسري لكل سنة تقويمية والتجاري لكل نصف سنة؛ وسعر قاعدة تاريخ العقد للفترة 2013–2015 لا يظهر إلا في تلك الفترة.
  • بيانات الاتصال: كل IBAN يجتاز رقم التحقق وفق ISO 13616، وأرقام الهواتف أرقام بلجيكية بصيغة E.164، وعناوين البريد الإلكتروني بأحرف صغيرة، ومواعيد العمل تطابق صياغة opening_hours.
  • الكود: TypeScript الصارم (بما في ذلك الوصول غير المتحقَّق منه إلى الفهارس والخصائص الاختيارية الدقيقة)، وESLint بقواعد واعية بالأنواع، وPrettier، وتغطية اختبارات 100 % لـsrc/.
  • التحزيم: الحزمة المبنية تُحمَّل بـimport وrequire()، من كل entry point، على Node 22.12 و22 و24 و26؛ ويفحص publint وarethetypeswrong حقل exports وتعريفات الأنواع.

كل أسبوع (مجدول) ​

يعمل workflow الحداثة كل يوم اثنين ويفتح issue بالوسم data-freshness حين يجد شيئًا:

  • أسعار ناقصة: لا سعر قانونيًا ولا تجاريًا لليوم، أو لا سعر تجاريًا للأسبوعين القادمين (تنشره FOD Financiën قبل بداية نصف السنة).
  • مراجعات متأخرة: تاريخ lastReviewed لمجموعة بيانات في datapackage.json أقدم من reviewEveryMonths الخاص بها.
  • مصادر معطّلة: رابط مصدر رسمي في datapackage.json لم يعد يستجيب.

شغّلها بنفسك بـpnpm test:freshness (أضف FRESHNESS_ONLINE=1 لفحص الروابط).

كيف تقرأ قيمة ​

  • الغياب ليس صفرًا. تُرجع getInterestRate القيمة null ليوم لا سعر مسجَّلًا له، بدلًا من التخمين؛ والحقل الذي لا يعطيه المصدر (عنوان محكمة، مواعيد عمل قابلة للقراءة آليًا) يغيب بدلًا من أن يُملأ. تعامل مع الحالتين.
  • المبكر جدًا خطأ. البحث عن يوم يسبق تغطية مجموعة البيانات يرمي RangeError: البيانات لا تستطيع الإجابة، وإجابة اليوم ستبدو كأنها الصحيحة.
  • بيانات الاتصال هي الأقل استقرارًا. أرقام الهواتف وعناوين البريد الإلكتروني ومواعيد العمل تتغير دون إشعار. يذكر كل سجل الصفحات التي قُرئ منها ومتى (sources)؛ راجع صفحة المحكمة (website) حين يكون الأمر مهمًا.
  • النص القانوني هو الغالب. في البلديات المقسّمة، territory الكانتون هو نص القانون نفسه، حرفيًا. حين يختلف ملخص، أو حدود NGI، عن النص، فالنص هو الصحيح.

الإبلاغ عن خطأ ​

افتح تصحيح بيانات مع معرّف السجل ورابط إلى المصدر الرسمي. تصدر التصحيحات في إصدارات patch.

الكود مرخّص بـMIT، والبيانات بـCC BY 4.0. بيانات مرجعية، لا استشارة قانونية: راجع المصادر الرسمية.