---
name: legislation-laws-path
description: "مسار التشريعات: extract, analyze, index and search ONLY the user's bound legislation PDF and its derived database. Use for مسار التشريعات, مسار التشريعات والقوانين, internal legal-file analysis, article lookup, page-grounded answers, and preparing this module for later integration with Sabeq. Do not use external legal search, scraping or supplementary sources unless the user explicitly changes the file-only scope."
---

# مسار التشريعات

ابنِ قاعدة مرجعية من الملف المحدد وحده، وابحث وحلّل داخلها مع إرجاع النص والصفحة. الاسم المعتمد «مسار التشريعات»؛ أبقِ `legislation-laws-path` معرّفاً تقنياً متوافقاً مع النسخة السابقة.

## اضبط النطاق

- استخدم ملف المستخدم والقاعدة المشتقة منه فقط. استبعد بحث الإنترنت وكشط المواقع والمصادر الخارجية من مسار الإجابة والتحليل والتحديث.
- استخدم Google Drive لجلب الملف الذي حدده المستخدم نفسه، وLibrary لحفظ القاعدة واسترجاعها؛ هذه عمليات ملف محدد وليست بحثاً قانونياً خارجياً.
- لا تضف مواد أو أحكاماً أو تواريخ من ذاكرة النموذج إلى محتوى القاعدة. إذا غابت الإجابة فقل «غير موجود في الملف المتاح».
- افصل صحة الاستخراج من صحة القانون حالياً. اذكر تاريخ التعديلات كما يعلنه الملف، دون ادعاء تحقّق خارجي.
- جهّز وحدة قابلة للتركيب على سابق. لا تغيّر مشروع سابق أو تنشر Backend لمجرد تجهيز المسار؛ المستخدم حدّد التركيب مرحلة لاحقة.

## استرجع المصدر والقاعدة

1. اقرأ [إعداد المصدر الخاص](references/bound-source.json) و[دليل القاعدة](references/corpus-workflow.md). عند وجود `corpus_library` في إعداد المصدر، استخدم معرّفات الملفات المحفوظة لاسترجاع القاعدة الحالية بدلاً من إعادة استخراج الملف كله.
2. طابق معرّف المصدر وتاريخ تعديله وحجمه وبصمته مع الاستيراد. إذا تغيّر المصدر، أنشئ إصدار قاعدة جديداً واحتفظ بالسابق؛ لا تخلط النسختين.
3. عند غياب نسخة محلية، طبّق مهارة Library لجلب القاعدة المسجلة. عند غياب قاعدة مشتقة، طبّق مهارة Google Drive لقراءة بيانات الملف المحدد ثم تنزيله حسب نوعه.
4. إذا غاب معرّف المصدر في النسخة العامة، اطلب تهيئة خاصة. إذا رفض الوصول أو أعيد 404، لا تخمّن محتوى الملف أو اسمه ولا تغيّر المشاركة تلقائياً.

## طبّق مراحل التحليل المناسبة للملف

استخدم المراحل التالية كوظائف محددة داخل المسار، دون ادعاء تثبيت أدوات أو مستودعات لم تُثبت فعلياً:

1. **محلل الوثيقة:** افحص الصفحات والتشفير والنص الرقمي والصور والفهارس والترقيم المطبوع.
2. **مستخرج المحتوى:** احفظ النص المنطقي والنص الخام ومواقع الكتل والروابط والصور والجداول المكتشفة، مع الأصل والبصمة.
3. **مصنّف المحتوى:** ميّز فهارس الأقسام والتشريعات واللوائح والملاحق والجداول. افصل الحدود المأخوذة من فهرس المصدر عن الحدود المستنتجة من تكرار العناوين.
4. **محلل المواد والإحالات:** اكتشف عناوين المواد وأرقامها و«مكرر» ومواد الإصدار. جمّع الاستمرار عبر الصفحات بإزاحات النص، وافصل المذكرات والحواشي وعناوين الأبواب والتوقيعات. أبقِ مكوّنات الإصدار والقانون المرافق مستقلة عند تكرار الرقم.
5. **مفهرس البحث:** ابنِ فهرس كلمات عربية وفلاتر القسم ورقم المادة والصفحة. طبّع للبحث فقط وأبقِ النص المعروض مطابقاً للاستخراج.
6. **مراجع الجودة:** افحص اكتمال الصفحات والبصمات والأرقام والاتجاه والعينات البصرية والتكرار والبحث السلبي. ميّز تجميع حدود المادة من تدقيق محارفها؛ لا تعتبر ثقة OCR مراجعة بصرية.

هذا تطبيق داخلي لمبادئ التخطيط والتوجيه والتحليل والمراجعة. لا تستخدم Agent-Reach أو Scrapling أو متصفحاً لجلب معلومات خارج هذا الملف في النطاق الحالي.

## استخرج وابنِ القاعدة

اقرأ [سياسة المصدر الواحد](references/sources.md) و[عقد السجلات](references/records.md). استخدم مهارات PDF وWord وSpreadsheets حسب نوع المصدر. يتولى `scripts/import_compendium.py` ملفات PDF الرقمية، ويحتاج PyMuPDF وPoppler:

```bash
python3 scripts/import_compendium.py --pdf /private/legal/source.pdf --output-dir /private/legal/import-v1 --source-url SOURCE_URL
```

- احفظ كل صفحة حتى إن فشل تصنيفها. ميّز رقم صفحة PDF عن المطبوع.
- افحص ترتيب العربية بصرياً؛ لا تصلح الكلمات القانونية أو الأرقام صامتاً. استخدم OCR فقط إذا احتاجه الملف وبأداة محلية متاحة، مع الاحتفاظ بنتيجته مستقلة عن الأصل.
- شغّل `scripts/refine_compendium.py --db DATABASE --output-dir DATA_DIR` بعد الاستيراد. يبني `article_units` و`article_segments` من أجزاء مطابقة للصفحات حرفياً؛ كل جزء يحمل الإزاحات والبصمة. تبقى الحدود المستنتجة بحاجة مراجعة، ولا يمثل عدد التجميعات عدداً من المواد المعتمدة.
- احتفظ بملف `structure_reviews.json` الخاص مع الحزمة. يطبق المراجع المثبتة ببصمات الصفحات والأسطر: عناوين مدمجة مع المتن أو الحاشية، جداول الملحق، إشعارات نطاقات المواد، ومشكلات الأصل. ترفض إعادة البناء إسقاط هذه المراجعات إذا كانت مسجلة في القاعدة وغاب ملفها.
- احفظ المراجعات الصريحة في ملف خاص مربوط ببصمة النص/الصورة. طبّق `scripts/apply_extraction_reviews.py` لمراجعات الحدود والعناوين و`scripts/review_image_layers.py` لتفريغ الصور المدقق بصرياً. أعد تطبيقها بعد إعادة التجميع؛ لا تنشئ اعتماداً من التخمين.
- احفظ صور المصدر والجداول المكتشفة بشكل مستقل. لا تعتبر عدم اكتشاف جدول آلياً دليلاً على غيابه من الصفحة.
- استخدم `needs_review` و`temporal_status=unknown` للسجلات المستخرجة، مع `provenance=user_document`. لا تضع اعتماداً خارجياً لم يحصل.

## ابحث وأجب من الملف

استخدم `scripts/corpus_query.py` للبحث الداخلي؛ لا يحتاج شبكة أو نموذجاً خارجياً:

```bash
python3 scripts/corpus_query.py --db /private/legal/import-v1/kuwait_laws_database.sqlite search 'قانون المرافعات'
python3 scripts/corpus_query.py --db /private/legal/import-v1/kuwait_laws_database.sqlite article --document-id DOCUMENT_ID --number '٣'
python3 scripts/corpus_query.py --db /private/legal/import-v1/kuwait_laws_database.sqlite page 4
python3 scripts/corpus_query.py --db /private/legal/import-v1/kuwait_laws_database.sqlite documents
```

- أرجع القسم ورقم المادة إن وُجد وصفحات البداية والنهاية والترقيم المطبوع وأجزاء المصدر وحدود الاستخراج. استرجاع `article` يستخدم التجميعات، وتبقى `article_fragments` طبقة قديمة للمقاطع. استخدم الصفحات الكاملة للشروح والملاحق.
- عند رقم مشترك بين قوانين، اعرض الخيارات أو اطلب تحديد القانون. لا تختَر عشوائياً.
- إذا ظهر `requires_component_selection=true` فاعرض مكوّن الإصدار والقانون المرافق، واستخدم `--component-id` لتحديد المقصود. لا تدمج مواد متساوية الرقم.
- إذا تكرر الرقم داخل المكوّن نفسه فاحترم `requires_article_selection` واستخدم `--article-id` بعد عرض النص والصفحة لكل موضع. افحص `page_content_zones` في نتائج الصفحات والبحث لتمييز الشرح من المتن داخل الصفحة المختلطة.
- افصل `page_annotations` عن متن المادة؛ نسبتُها للمادة غير محسومة لمجرد وقوعها في الصفحة نفسها. ميّز `related_quoted_provisions` عن المادة المستقلة.
- افحص `boundary_review` و`transcription_verified` و`complete_article_verified`؛ لا تساوِ التجميع الآلي بالمطابقة البصرية أو التدقيق الحرفي.
- افحص `source_issues` و`answer_status` قبل الاقتباس. `source_incomplete` يعني نصاً منقطعاً في الأصل، و`source_gap` يعني فجوة ظاهرة في العناوين. لا تستكملها من الذاكرة ولا تعِد ترقيم مواضع متكررة. أعِد النص المتاح وصفحة النقص بوضوح.
- عند `source_range_notice` أعِد إشعار نطاق المواد كما ورد في الملف، وصفحته، مع `article_text_available=false`؛ لا تعرضه كنص كامل للمادة أو تحقق مستقل من الإلغاء. تبقى `related_numbered_provisions` خيارات قريبة، ولا تحل مادة «مكرر» محل الرقم الأساسي تلقائياً.
- يقبل الاسترجاع اختلاف تنسيق الرقم مثل «٥١٩ مكرر (ج)» و«519 مكررا ج» دون تغيير الرقم أو النص. يحافظ البحث على اتحاد النتائج الحرفية وبدائل خرائط الخطوط حتى عند وجود نتائج حرفية؛ افحص `total_match_count` ونمط المطابقة في كل نتيجة، ولا تخلط عدد النتائج المعروضة بعدد المطابقات الكلي.
- افحص `unreviewed_ocr_candidates` حتى عند خلو النتائج النصية. حالة `needs_image_review` تعني وجود تطابق محتمل داخل صورة، لا غياب المعلومة. لا تقتبس أرقاماً أو رموزاً كيميائية أو نصوصاً قانونية من هذه الطبقة قبل معاينة الصورة. النص المدقق بصرياً يظهر في `reviewed_image_transcriptions` منفصلاً عن OCR الخام.
- افصل اقتباس الملف عن الشرح والاستنتاج. حلّل الروابط والتعارضات داخل الملف دون ملء فجوة من مصدر آخر.
- أبلغ عن عدم العثور بوضوح. لا تستخدم مسار بحث خارجي احتياطياً، حتى لو تعذرت الإجابة.
- أبقِ `current_law_verified=false` في النتائج. يجوز شرح ما يورده الملف، دون الزعم بسريانه الحالي أو ملاءمته النهائية لقضية محددة.

## جهّز الربط بسابق واختبر

اقرأ [عقد الربط](references/integration.md). مرّر نتيجة البحث بالنص والصفحة ومعرّف المصدر إلى المساعد ومولد المذكرات عند تنفيذ مرحلة التركيب لاحقاً. أبقِ الملفات الخاصة والأسرار خارج GitHub العام.

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

أبلغ بما أُنشئ واستُورد واختُبر فعلاً، وأعطِ رابط GitHub للوحدة وملفات القاعدة المحفوظة. حافظ على الفرق بين قاعدة مستخرجة قابلة للبحث، ومراجعة حدود المواد، وربط الإنتاج الذي لم يُنفذ بعد.
