Add function to calculate actual knowledge base size and update status messages
Browse files
app.py
CHANGED
@@ -74,6 +74,19 @@ def build_kb():
|
|
74 |
except Exception as e:
|
75 |
return f"API connection error: {str(e)}"
|
76 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
# Добавим функцию проверки статуса базы знаний
|
78 |
def check_kb_status():
|
79 |
try:
|
@@ -83,11 +96,25 @@ def check_kb_status():
|
|
83 |
if data["knowledge_base_exists"]:
|
84 |
kb_info = data["kb_info"]
|
85 |
version = kb_info.get('version', 'N/A')
|
86 |
-
|
87 |
-
|
|
|
|
|
|
|
|
|
88 |
else:
|
|
|
|
|
|
|
|
|
|
|
89 |
return "❌ База знаний не создана. Нажмите кнопку 'Create/Update Knowledge Base'"
|
90 |
except Exception as e:
|
|
|
|
|
|
|
|
|
|
|
91 |
return f"❌ Ошибка проверки статуса: {str(e)}"
|
92 |
|
93 |
# Create the Gradio interface
|
|
|
74 |
except Exception as e:
|
75 |
return f"API connection error: {str(e)}"
|
76 |
|
77 |
+
def get_kb_size():
|
78 |
+
"""Calculate actual knowledge base size from files"""
|
79 |
+
vector_store_path = "vector_store"
|
80 |
+
try:
|
81 |
+
total_size = 0
|
82 |
+
for file in ["index.faiss", "index.pkl"]:
|
83 |
+
file_path = os.path.join(vector_store_path, file)
|
84 |
+
if os.path.exists(file_path):
|
85 |
+
total_size += os.path.getsize(file_path)
|
86 |
+
return total_size / (1024 * 1024) # Convert to MB
|
87 |
+
except Exception:
|
88 |
+
return None
|
89 |
+
|
90 |
# Добавим функцию проверки статуса базы знаний
|
91 |
def check_kb_status():
|
92 |
try:
|
|
|
96 |
if data["knowledge_base_exists"]:
|
97 |
kb_info = data["kb_info"]
|
98 |
version = kb_info.get('version', 'N/A')
|
99 |
+
|
100 |
+
# Получаем реальный размер файлов
|
101 |
+
actual_size = get_kb_size()
|
102 |
+
size_text = f"{actual_size:.2f} MB" if actual_size is not None else "N/A"
|
103 |
+
|
104 |
+
return f"✅ База знаний готова к работе\nВерсия: {version}\nРазмер: {size_text}"
|
105 |
else:
|
106 |
+
# Проверяем, есть ли файлы на диске
|
107 |
+
if os.path.exists(os.path.join("vector_store", "index.faiss")):
|
108 |
+
actual_size = get_kb_size()
|
109 |
+
size_text = f"{actual_size:.2f} MB" if actual_size is not None else "N/A"
|
110 |
+
return f"✅ База знаний найдена на диске\nРазмер: {size_text}\nТребуется перезагрузка сервера"
|
111 |
return "❌ База знаний не создана. Нажмите кнопку 'Create/Update Knowledge Base'"
|
112 |
except Exception as e:
|
113 |
+
# Проверяем наличие файлов даже при ошибке соединения
|
114 |
+
if os.path.exists(os.path.join("vector_store", "index.faiss")):
|
115 |
+
actual_size = get_kb_size()
|
116 |
+
size_text = f"{actual_size:.2f} MB" if actual_size is not None else "N/A"
|
117 |
+
return f"⚠️ Ошибка соединения, но база знаний существует\nРазмер: {size_text}"
|
118 |
return f"❌ Ошибка проверки статуса: {str(e)}"
|
119 |
|
120 |
# Create the Gradio interface
|