Spaces:
Paused
Paused
Create config.py
Browse files
config.py
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
from typing import Dict, Any
|
| 3 |
+
from dotenv import load_dotenv
|
| 4 |
+
|
| 5 |
+
# تحميل متغيرات البيئة من ملف .env
|
| 6 |
+
load_dotenv()
|
| 7 |
+
|
| 8 |
+
# إعدادات عامة
|
| 9 |
+
APP_NAME = "نظام تحليل المناقصات"
|
| 10 |
+
APP_VERSION = "1.0.0"
|
| 11 |
+
DEBUG = os.getenv("DEBUG", "False").lower() in ("true", "1", "t")
|
| 12 |
+
|
| 13 |
+
# مسارات الملفات
|
| 14 |
+
DATA_DIR = os.getenv("DATA_DIR", "data")
|
| 15 |
+
TEMPLATES_DIR = os.path.join(DATA_DIR, "templates")
|
| 16 |
+
VECTOR_DB_DIR = os.path.join(DATA_DIR, "vector_db")
|
| 17 |
+
OUTPUT_DIR = os.getenv("OUTPUT_DIR", "output")
|
| 18 |
+
LOGS_DIR = os.getenv("LOGS_DIR", "logs")
|
| 19 |
+
|
| 20 |
+
# التأكد من وجود المجلدات
|
| 21 |
+
for directory in [DATA_DIR, TEMPLATES_DIR, VECTOR_DB_DIR, OUTPUT_DIR, LOGS_DIR]:
|
| 22 |
+
os.makedirs(directory, exist_ok=True)
|
| 23 |
+
|
| 24 |
+
# إعدادات API
|
| 25 |
+
API_KEYS = {
|
| 26 |
+
"ANTHROPIC_API_KEY": os.getenv("ANTHROPIC_API_KEY"),
|
| 27 |
+
"MUNAFASAT_API_KEY": os.getenv("MUNAFASAT_API_KEY"),
|
| 28 |
+
"ETIMAD_API_KEY": os.getenv("ETIMAD_API_KEY"),
|
| 29 |
+
"BALADY_API_KEY": os.getenv("BALADY_API_KEY")
|
| 30 |
+
}
|
| 31 |
+
|
| 32 |
+
# إعدادات نماذج الذكاء الاصطناعي
|
| 33 |
+
AI_MODELS = {
|
| 34 |
+
"default_llm": os.getenv("DEFAULT_LLM", "claude-3-haiku-20240307"),
|
| 35 |
+
"use_rag": os.getenv("USE_RAG", "True").lower() in ("true", "1", "t"),
|
| 36 |
+
"embedding_model": os.getenv("EMBEDDING_MODEL", "huggingface/arabic-embedding-base")
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
# إعدادات المحتوى المحلي
|
| 40 |
+
LOCAL_CONTENT = {
|
| 41 |
+
"min_percentage": {
|
| 42 |
+
"الإنشاءات": 30,
|
| 43 |
+
"تقنية المعلومات": 25,
|
| 44 |
+
"عام": 20
|
| 45 |
+
},
|
| 46 |
+
"target_percentage": {
|
| 47 |
+
"الإنشاءات": 60,
|
| 48 |
+
"تقنية المعلومات": 50,
|
| 49 |
+
"عام": 40
|
| 50 |
+
}
|
| 51 |
+
}
|
| 52 |
+
|
| 53 |
+
# إعدادات واجهة المستخدم
|
| 54 |
+
UI_SETTINGS = {
|
| 55 |
+
"theme": os.getenv("UI_THEME", "light"),
|
| 56 |
+
"language": os.getenv("UI_LANGUAGE", "ar"),
|
| 57 |
+
"page_size": int(os.getenv("UI_PAGE_SIZE", "10")),
|
| 58 |
+
"charts_theme": os.getenv("UI_CHARTS_THEME", "blue")
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
# إعدادات قاعدة البيانات
|
| 62 |
+
DB_SETTINGS = {
|
| 63 |
+
"vector_db": {
|
| 64 |
+
"path": VECTOR_DB_DIR,
|
| 65 |
+
"dimension": 384,
|
| 66 |
+
"similarity_threshold": 0.75
|
| 67 |
+
}
|
| 68 |
+
}
|
| 69 |
+
|
| 70 |
+
# وظيفة للحصول على إعدادات محددة
|
| 71 |
+
def get_config(section: str = None) -> Dict[str, Any]:
|
| 72 |
+
"""
|
| 73 |
+
الحصول على إعدادات محددة أو جميع الإعدادات
|
| 74 |
+
|
| 75 |
+
المعاملات:
|
| 76 |
+
----------
|
| 77 |
+
section : str, optional
|
| 78 |
+
اسم قسم الإعدادات المطلوب (افتراضي: None = جميع الإعدادات)
|
| 79 |
+
|
| 80 |
+
المخرجات:
|
| 81 |
+
--------
|
| 82 |
+
Dict[str, Any]
|
| 83 |
+
الإعدادات المطلوبة
|
| 84 |
+
"""
|
| 85 |
+
config = {
|
| 86 |
+
"app": {
|
| 87 |
+
"name": APP_NAME,
|
| 88 |
+
"version": APP_VERSION,
|
| 89 |
+
"debug": DEBUG
|
| 90 |
+
},
|
| 91 |
+
"paths": {
|
| 92 |
+
"data_dir": DATA_DIR,
|
| 93 |
+
"templates_dir": TEMPLATES_DIR,
|
| 94 |
+
"vector_db_dir": VECTOR_DB_DIR,
|
| 95 |
+
"output_dir": OUTPUT_DIR,
|
| 96 |
+
"logs_dir": LOGS_DIR
|
| 97 |
+
},
|
| 98 |
+
"api_keys": API_KEYS,
|
| 99 |
+
"ai_models": AI_MODELS,
|
| 100 |
+
"local_content": LOCAL_CONTENT,
|
| 101 |
+
"ui": UI_SETTINGS,
|
| 102 |
+
"db": DB_SETTINGS
|
| 103 |
+
}
|
| 104 |
+
|
| 105 |
+
if section:
|
| 106 |
+
return config.get(section, {})
|
| 107 |
+
|
| 108 |
+
return config
|