المواصفات التقنية
بنية RAG حديثة مع رؤية الذكاء الاصطناعي.
البنية في لمحة
ManualNinja هو تطبيق RAG متعدد المستأجرين مع خلفية Python وواجهة React SPA وقاعدة بيانات PostgreSQL وقاعدة بيانات شعاعية Qdrant.
واجهة API الخلفية
FastAPI + Uvicorn (Python 3.13). نقاط نهاية REST للمصادقة والکتب والمحادثة والفوترة والإدارة. مصادقة قائمة على JWT بأسرار قوية.
الواجهة الأمامية
React 18 + Vite. تطبيق صفحة واحدة مع واجهة محادثة ولوحة إدارة وبوابة فوترة ولوحة تحكم superadmin.
قاعدة البيانات
PostgreSQL 17. تخزن المؤسسات والمستخدمين والکتب وجلسات المحادثة وتتبع الاستخدام والإعدادات القابلة للتكوين.
مخزن شعاعي
Qdrant 1.19. بحث دلالي على أجزاء الکتب مع تصفية حسب المؤسسة.
التضمينات
BAAI/bge-small-en-v1.5 (384 بُعداً، CPU). استنتاج محلي — لا استدعاءات API تضمين خارجية.
LLM (نص)
API متوافق مع OpenAI. النموذج الافتراضي: deepseek/deepseek-v3-0324. قابل للتكوين عبر لوحة تحكم superadmin.
تريد ذكاءً اصطناعياً محلياً للأمن؟ لا مشکلة. اتصل بنا
LLM (رؤية)
نموذج رؤية Novita AI — google/gemma-3-27b-it. يحلل الصور المرفوعة (ملصقات الأجهزة، شاشات الأخطاء، اللوحات التعريفية) مع OCR وتحديد.
استخراج PDF
PyMuPDF (fitz). تقسيم على مستوى الصفحة مع حفظ البيانات الوصفية لإشارات دقيقة.
Web URL ingestion
Add manuals by URL instead of uploading a PDF. ManualNinja fetches the page, follows pagination across all sub-pages, and extracts the full manual text. SSRF-protected (internal IPs blocked), 50 MB per page limit, up to 200 pages per manual.
المصادقة
رموز JWT + Google OAuth 2.0 + LinkedIn OAuth 2.0 (OpenID Connect). تحقق بالبريد الإلكتروني مع SMTP قابل للتكوين.
المدفوعات
Stripe — اشتراکات متکررة عبر Checkout، بوابة العميل للإدارة الذاتية، أحداث دورة حياة مدفوعة بـ webhook.
وكيل عكسي
Caddy — HTTPS تلقائي عبر Let's Encrypt، دعم HTTP/2، HTTP/3.
تعدد المستأجرين والعزل
کل مؤسسة عميل تحصل على مساحة عمل معزولة بالکامل:
- مستخدمون وکتب وجلسات محادثة محددة بالمؤسسة
- حمولات Qdrant تتضمن org_id — البحث الشعاعي دائماً مصفى
- حدود حسب الفئة: أسئلة/شهر، تخزين، طول السؤال، عدد الکتب
- جميع مفاتيح التکامل (Stripe، Google، LinkedIn، LLM، SMTP، reCAPTCHA) قابلة للتكوين لکل نشر عبر واجهة الإدارة
الأمن وحماية البيانات
تم بناء ManualNinja مع الأمن کأولوية من الدرجة الأولى. کل طبقة من النظام معززة لحماية بياناتك وخصوصيتك.
تشفير من طرف إلى طرف
کل حركة المرور تُقدم عبر HTTPS مع TLS 1.2/1.3 عبر Caddy مع شهادات Let's Encrypt تلقائية. لا اتصالات نصية واضحة تُعرض أبداً.
مصادقة آمنة
مصادقة قائمة على JWT بأسرار قوية، تجزئة کلمة مرور bcrypt، OAuth 2.0 مع تحقق حالة محمي من CSRF، ورموز قصيرة العمر.
الحماية من هجمات القوة الغاشمة
تقييد معدل تسجيل الدخول (10 محاولات لکل 5 دقائق لکل IP)، تقييد معدل التسجيل (3 لکل IP يومياً)، وGoogle reCAPTCHA إلزامي.
عزل متعدد المستأجرين
کل استعلام قاعدة بيانات وکل بحث شعاعي محدود بـ organization_id. لا تسريب بيانات بين المستأجرين — کتبك لا تختلط أبداً مع کتب عميل آخر.
رفع ملفات آمن
رفع PDF يُتحقق منه بالبايتات السحرية ونوع المحتوى وحد حجم صارم 50 ميجابايت. الملفات تُخزن بأسماء UUID ولا تُقدم مباشرة أبداً.
webhooks موثقة
webhooks دفع Stripe دائماً موثقة بالتوقيع. لا تُعالج أحداث دفع غير موثقة أبداً — النظام يتجاهل الطلبات المزيفة.
خدمات داخلية فقط
خلفية FastAPI وقاعدة بيانات Qdrant الشعاعية ترتبط بـ 127.0.0.1 فقط. لا يمكن الوصول إليها مباشرة من الإنترنت أبداً.
التحقق بالبريد الإلکتروني
التسجيل يتطلب تحققاً بالبريد الإلکتروني برموز محدودة المدة (انتهاء 24 ساعة). الحسابات غير الموثقة لا يمكنها تسجيل الدخول.
تسجيل التدقيق
جميع إجراءات المسؤول وsuperadmin — إنشاء المؤسسة، إدارة المستخدمين، تغييرات الإعدادات — تُسجل في جدول تدقيق مخصص.