Skip to content

Latest commit

 

History

History
405 lines (278 loc) · 13.4 KB

File metadata and controls

405 lines (278 loc) · 13.4 KB

📚 e-gov API FastAPI

خادم API عالي السرعة لتوفير بيانات القوانين والسوابق القضائية اليابانية


📸 لقطات الشاشة

توثيق API (Swagger UI)

API Documentation

توثيق API المُنشأ تلقائيًا بواسطة FastAPI


مثال على استجابة البحث في القوانين

Law Search Response

نتائج البحث للكلمة الرئيسية "حرية التعبير"


مثال على استجابة البحث في السوابق القضائية

Case Search Response

نتائج البحث في السوابق القضائية للكلمة الرئيسية "معرض عدم حرية التعبير كانساي"


📖 نظرة عامة

e-gov API FastAPI هو خادم RESTful API يوفر وصولاً عالي السرعة إلى بيانات القوانين والسوابق القضائية اليابانية.

يتكامل مع e-gov Law API و موقع المحاكم لتوفير وصول في الوقت الفعلي إلى أحدث المعلومات القانونية.

الميزات الرئيسية:

  • 🔍 البحث في القوانين والاسترجاع التفصيلي وسجل التعديلات
  • ⚖️ البحث في السوابق القضائية والاسترجاع التفصيلي
  • 📊 تحليل العلاقات بين القوانين والسوابق القضائية
  • 🚀 أداء عالي السرعة مع التخزين المؤقت Redis
  • 🌐 دعم VPN/Tailscale

🎯 لماذا هذا ضروري + ماذا يفعل

المشكلة

عند الوصول إلى المعلومات القانونية اليابانية، هناك التحديات التالية:

  • بيانات قانونية مبعثرة: واجهات برمجة التطبيقات الحكومية صعبة الاستخدام مع توثيق غير كافٍ
  • صعوبة الحصول على بيانات السوابق القضائية: لا يوجد API منهجي
  • تعقيد تكامل البيانات: لا توجد آلية لتحليل العلاقات بين القوانين والسوابق القضائية

الحل

يقوم خادم API هذا بدمج مصادر بيانات متعددة، مما يسهل على المطورين الوصول إلى المعلومات القانونية اليابانية.

ماذا يفعل:

  • وصول موحد إلى قواعد بيانات القوانين
  • البحث والحصول على بيانات السوابق القضائية
  • تحليل العلاقات بين القوانين والسوابق القضائية
  • استجابة سريعة (وظيفة التخزين المؤقت)

حالات الاستخدام:

  • الواجهة الخلفية لتطبيقات الاستشارات القانونية
  • API أساسي لمنتجات LegalTech
  • تحليل وبحث البيانات القانونية
  • أنظمة التتبع التلقائي لتعديلات القوانين

🚀 التثبيت

المتطلبات الأساسية

  • Python 3.12+
  • Docker أو Podman
  • uv (مدير الحزم)

الطريقة 1: البدء باستخدام Docker/Podman (موصى به)

# استنساخ المستودع
git clone https://github.com/clearclown/e-gov-api-fastAPI.git
cd e-gov-api-fastapi

# تكوين متغيرات البيئة
cp .env.example .env

# البدء
podman compose up -d
# أو
docker compose up -d

# التحقق من العملية
curl http://localhost:8000/health

الطريقة 2: إعداد بيئة التطوير باستخدام uv

# تثبيت uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# إنشاء بيئة افتراضية
uv venv

# تفعيل البيئة الافتراضية
source .venv/bin/activate  # Linux/Mac
.venv\Scripts\activate     # Windows

# تثبيت التبعيات
uv pip install -e .

# بدء خادم التطوير
uv run uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

نقاط الوصول


🗑️ إلغاء التثبيت

بيئة Docker/Podman

# إيقاف وإزالة الخدمات
podman compose down

# الإزالة الكاملة بما في ذلك المجلدات
podman compose down -v

# إزالة الصور
podman rmi e-gov-api-fastapi-app

بيئة uv

# إزالة البيئة الافتراضية
rm -rf .venv

# مسح ذاكرة التخزين المؤقت
uv cache clean

📚 التوثيق

التقنيات الأساسية

الفئة التقنية
إطار العمل FastAPI
اللغة Python 3.12+
قاعدة البيانات PostgreSQL 16 + pgvector
التخزين المؤقت Redis 7
مدير الحزم uv
الحاوية Docker / Podman
واجهات برمجة التطبيقات الخارجية e-gov Law API، المحاكم

البنية المعمارية

┌─────────────┐
│   العميل    │
└──────┬──────┘
       │
       ▼
┌─────────────────────────────┐
│   تطبيق FastAPI             │
│  ┌──────────────────────┐  │
│  │  نقاط نهاية القوانين│  │
│  │  نقاط نهاية السوابق │  │
│  │  نقاط نهاية التحليل │  │
│  └──────────────────────┘  │
└──┬───────────┬──────────┬───┘
   │           │          │
   ▼           ▼          ▼
┌──────┐  ┌────────┐  ┌─────────┐
│Redis │  │Postgres│  │e-gov API│
│Cache │  │Database│  │Courts DB│
└──────┘  └────────┘  └─────────┘

تدفق البيانات:

  1. يرسل العميل طلب API
  2. يعالج FastAPI الطلب
  3. التحقق من التخزين المؤقت Redis (استجابة فورية عند الإصابة)
  4. عند عدم الإصابة في ذاكرة التخزين المؤقت، استرجاع البيانات من واجهات برمجة التطبيقات الخارجية (e-gov/المحاكم)
  5. حفظ البيانات المستردة في PostgreSQL
  6. إرجاع الاستجابة والتخزين المؤقت في Redis

البنية التحتية

بنية الملفات:

e-gov-api-fastapi/
├── app/                    # كود التطبيق
│   ├── api/               # نقاط نهاية API
│   ├── core/              # الإعدادات الأساسية واتصال DB
│   ├── services/          # منطق الأعمال
│   └── main.py            # نقطة الدخول
├── infra/
│   └── podmanOrDocker/    # تكوين Docker/Podman
│       ├── Dockerfile     # النسخة الكاملة (مع ميزات AI)
│       └── Dockerfile.lite # النسخة الخفيفة (API فقط)
├── docs/                   # التوثيق
│   ├── pics/              # لقطات الشاشة
│   └── readmeLang/        # README متعدد اللغات
├── scripts/               # نصوص برمجية مساعدة
├── docker-compose.yml     # تكوين Compose الرئيسي
├── pyproject.toml         # تكوين المشروع
└── .env                   # متغيرات البيئة

استخدام الموارد:

النسخة الخفيفة (افتراضي):

  • خادم API: ~600MB
  • PostgreSQL: ~500MB
  • Redis: ~50MB
  • الإجمالي: ~1.2GB

النسخة الكاملة (مع ميزات AI):

  • خادم API: ~3-4GB (PyTorch + CUDA)
  • PostgreSQL: ~500MB
  • Redis: ~50MB
  • الإجمالي: ~4-5GB

الشبكة

طرق الوصول:

جميع الخدمات تستمع على 0.0.0.0 ويمكن الوصول إليها عبر:

  1. Localhost: http://localhost:8000
  2. الشبكة المحلية: http://[IP المضيف]:8000
  3. Tailscale/VPN: http://[IP Tailscale]:8000

تكوين المنفذ (قابل للتغيير في .env):

  • خادم API: 8000
  • PostgreSQL: 5432
  • Redis: 6379

دعم VPN/Tailscale:

ربط 0.0.0.0 يتيح الوصول عن بُعد.

خارطة الطريق

المرحلتان 1 و2: الميزات الأساسيةمكتمل

  • تنفيذ عميل e-gov API
  • نقاط نهاية البحث والاسترجاع التفصيلي للقوانين
  • وظيفة استخراج البيانات والبحث في السوابق القضائية
  • تنفيذ التخزين المؤقت Redis
  • تكامل قاعدة بيانات PostgreSQL
  • دعم Docker/Podman الكامل

المرحلة 3: تكامل AI 🔄 مخطط

  • AgenticRAG للبحث الدلالي
  • البحث الشعاعي (استخدام pgvector)
  • تكامل Claude API
  • الأسئلة والأجوبة باللغة الطبيعية
  • تنفيذ خادم MCP

المرحلة 4: التحليلات المتقدمة 🔄 مخطط

  • تصور رسم بياني للعلاقات بين القوانين والسوابق القضائية
  • تحليل شبكة الاستشهادات بالسوابق القضائية
  • توليد ملخص تلقائي
  • واجهة استشارات قانونية على شكل محادثة

🤝 المساهمة

المساهمات في المشروع مرحب بها!

تقارير الأخطاء وطلبات الميزات:

يرجى الإبلاغ في GitHub Issues.

طلبات السحب:

  1. Fork هذا المستودع
  2. إنشاء فرع ميزة
  3. Commit التغييرات
  4. دفع إلى الفرع
  5. إنشاء طلب سحب

إرشادات التطوير:

  • نمط الكود: اتباع PEP 8
  • رسائل Commit: تنسيق Conventional Commits
  • الاختبار: إضافة اختبارات دائمًا للميزات الجديدة

📚 الموارد

التوثيق الرسمي

المشاريع ذات الصلة

  • pgvector - امتداد البحث الشعاعي PostgreSQL
  • Claude API - Anthropic Claude AI

مصادر البيانات


⚖️ الترخيص

يتم توفير هذا المشروع بموجب ترخيص مزدوج:

ترخيص MIT

مثالي للاستخدام الشخصي والتجاري

انظر LICENSE-MIT

ترخيص Apache 2.0

للاستخدام المؤسسي وحماية براءات الاختراع

انظر LICENSE-APACHE

يمكنك اختيار أي ترخيص يناسب احتياجاتك.


⭐ إذا كان هذا المشروع مفيدًا، يرجى إعطاؤه نجمة!

Made with ❤️ by clearclown

📧 الاتصال: clearclown@gmail.com