system-prompts-and-models-o.../dealix/docs/ar/architecture.md
2026-05-01 14:03:52 +03:00

3.0 KiB
Raw Blame History

المعمارية

المستند الإنجليزي الكامل: architecture.md

نظرة سريعة

المشروع مبني على ٣ طبقات رئيسية:

  1. FastAPI Gateway — بوابة HTTP مع middleware للسجلات و CORS و request-id
  2. Pipeline / Agents — المرحلتان 8 و 9 كوكلاء مستقلين + منسقين يجمعانهم
  3. LLM Router — يوزّع كل مهمة على أفضل مزود مع سلسلة احتياط

كل الإعدادات تأتي من .env فقط عبر pydantic-settings. لا يوجد أي مفتاح مكتوب داخل الكود.

هيكل المجلدات

ai-company-saudi/
├── core/                         # الأساس
│   ├── config/                   # الإعدادات + جدول التوجيه
│   ├── llm/                      # عملاء المزودين + الموجّه
│   ├── agents/                   # الوكيل الأساسي + المنسّق
│   └── prompts/                  # prompts وسكربتات مبيعات
├── auto_client_acquisition/      # المرحلة 8
├── autonomous_growth/            # المرحلة 9
├── integrations/                 # التكاملات الخارجية
├── api/                          # FastAPI
├── db/                           # قاعدة البيانات
├── tests/                        # الاختبارات
└── docs/                         # التوثيق

قرارات التصميم الرئيسية

١. تحميل الإعدادات من .env فقط

كل الأسرار تُحمَّل في core/config/settings.py وتُغلَّف بـ SecretStr. لا يقرأ أي module متغير بيئة مباشرة.

٢. توجيه المهام مع احتياط

core/config/models.py يحدد جدول توجيه لكل Task إلى Provider رئيسي + سلسلة احتياط. الموجّه يجرّب الرئيسي ثم الاحتياطات بالترتيب.

٣. الوكلاء يشتركون في فئة أساسية

BaseAgent يوفر: سجل مهيكل مع سياق الوكيل، وصولاً للموجّه، ودالة قوية لتحليل JSON من خرج LLM.

٤. القمع كمنسِّق لا ككتلة واحدة

كل خطوة مغلّفة بـ try/except خاص. فشل خطوة لا يوقف القمع — يظهر في warnings.

٥. ثنائية اللغة من الصميم

  • اكتشاف اللغة من الـ Unicode
  • المهام العربية تُوجَّه لـ GLM افتراضياً
  • سكربتات المبيعات و prompts متوفرة بالعربية والإنجليزية

٦. الأمن افتراضياً

  • .gitignore يمنع .env* ماعدا .env.example
  • pre-commit يشغّل gitleaks + detect-secrets
  • CI يضيف trufflehog
  • LinkedIn معطّل افتراضياً (التزام بالشروط)
  • Docker يعمل بمستخدم غير جذري