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
|