Spaces:
Paused
Paused
| import os | |
| from typing import Dict, Any | |
| from dotenv import load_dotenv | |
| # تحميل متغيرات البيئة من ملف .env | |
| load_dotenv() | |
| # إعدادات عامة | |
| APP_NAME = "نظام تحليل المناقصات" | |
| APP_VERSION = "1.0.0" | |
| DEBUG = os.getenv("DEBUG", "False").lower() in ("true", "1", "t") | |
| # مسارات الملفات | |
| DATA_DIR = os.getenv("DATA_DIR", "data") | |
| TEMPLATES_DIR = os.path.join(DATA_DIR, "templates") | |
| VECTOR_DB_DIR = os.path.join(DATA_DIR, "vector_db") | |
| OUTPUT_DIR = os.getenv("OUTPUT_DIR", "output") | |
| LOGS_DIR = os.getenv("LOGS_DIR", "logs") | |
| # التأكد من وجود المجلدات | |
| for directory in [DATA_DIR, TEMPLATES_DIR, VECTOR_DB_DIR, OUTPUT_DIR, LOGS_DIR]: | |
| os.makedirs(directory, exist_ok=True) | |
| # إعدادات API | |
| API_KEYS = { | |
| "ANTHROPIC_API_KEY": os.getenv("ANTHROPIC_API_KEY"), | |
| "MUNAFASAT_API_KEY": os.getenv("MUNAFASAT_API_KEY"), | |
| "ETIMAD_API_KEY": os.getenv("ETIMAD_API_KEY"), | |
| "BALADY_API_KEY": os.getenv("BALADY_API_KEY") | |
| } | |
| # إعدادات نماذج الذكاء الاصطناعي | |
| AI_MODELS = { | |
| "default_llm": os.getenv("DEFAULT_LLM", "claude-3-haiku-20240307"), | |
| "use_rag": os.getenv("USE_RAG", "True").lower() in ("true", "1", "t"), | |
| "embedding_model": os.getenv("EMBEDDING_MODEL", "huggingface/arabic-embedding-base") | |
| } | |
| # إعدادات المحتوى المحلي | |
| LOCAL_CONTENT = { | |
| "min_percentage": { | |
| "الإنشاءات": 30, | |
| "تقنية المعلومات": 25, | |
| "عام": 20 | |
| }, | |
| "target_percentage": { | |
| "الإنشاءات": 60, | |
| "تقنية المعلومات": 50, | |
| "عام": 40 | |
| } | |
| } | |
| # إعدادات واجهة المستخدم | |
| UI_SETTINGS = { | |
| "theme": os.getenv("UI_THEME", "light"), | |
| "language": os.getenv("UI_LANGUAGE", "ar"), | |
| "page_size": int(os.getenv("UI_PAGE_SIZE", "10")), | |
| "charts_theme": os.getenv("UI_CHARTS_THEME", "blue") | |
| } | |
| # إعدادات قاعدة البيانات | |
| DB_SETTINGS = { | |
| "vector_db": { | |
| "path": VECTOR_DB_DIR, | |
| "dimension": 384, | |
| "similarity_threshold": 0.75 | |
| } | |
| } | |
| # وظيفة للحصول على إعدادات محددة | |
| def get_config(section: str = None) -> Dict[str, Any]: | |
| """ | |
| الحصول على إعدادات محددة أو جميع الإعدادات | |
| المعاملات: | |
| ---------- | |
| section : str, optional | |
| اسم قسم الإعدادات المطلوب (افتراضي: None = جميع الإعدادات) | |
| المخرجات: | |
| -------- | |
| Dict[str, Any] | |
| الإعدادات المطلوبة | |
| """ | |
| config = { | |
| "app": { | |
| "name": APP_NAME, | |
| "version": APP_VERSION, | |
| "debug": DEBUG | |
| }, | |
| "paths": { | |
| "data_dir": DATA_DIR, | |
| "templates_dir": TEMPLATES_DIR, | |
| "vector_db_dir": VECTOR_DB_DIR, | |
| "output_dir": OUTPUT_DIR, | |
| "logs_dir": LOGS_DIR | |
| }, | |
| "api_keys": API_KEYS, | |
| "ai_models": AI_MODELS, | |
| "local_content": LOCAL_CONTENT, | |
| "ui": UI_SETTINGS, | |
| "db": DB_SETTINGS | |
| } | |
| if section: | |
| return config.get(section, {}) | |
| return config |