Spaces:
Sleeping
Sleeping
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
|