### 🔧 Fixed - **🧾 Database Table Creation**: Унифицирован подход к созданию таблиц БД между продакшеном и тестами - Исправлена ошибка "no such table: author" в тестах - Обновлена функция `create_all_tables()` в `storage/schema.py` для использования стандартного SQLAlchemy подхода - Улучшены фикстуры тестов с принудительным импортом всех ORM моделей - Добавлена детальная диагностика создания таблиц в тестах - Добавлены fallback механизмы для создания таблиц в проблемных окружениях ### 🧪 Testing - Все RBAC тесты теперь проходят успешно - Исправлены фикстуры `test_engine`, `db_session` и `test_session_factory` - Добавлены функции `ensure_all_tables_exist()` и `ensure_all_models_imported()` для диагностики ### 📝 Technical Details - Заменен подход `create_table_if_not_exists()` на стандартный `Base.metadata.create_all()` - Улучшена обработка ошибок при создании таблиц - Добавлена проверка регистрации всех критических таблиц в metadata
This commit is contained in:
@@ -9,28 +9,6 @@ import numpy as np
|
||||
from settings import MUVERA_INDEX_NAME, SEARCH_MAX_BATCH_SIZE, SEARCH_PREFETCH_SIZE
|
||||
from utils.logger import root_logger as logger
|
||||
|
||||
|
||||
# Простые метрики производительности поиска
|
||||
class SearchMetrics:
|
||||
def __init__(self) -> None:
|
||||
self.indexing_start_time: float | None = None
|
||||
self.documents_indexed: int = 0
|
||||
|
||||
def start_indexing(self, doc_count: int):
|
||||
self.indexing_start_time = time.time()
|
||||
self.documents_indexed = doc_count
|
||||
print(f"🔍 Индексация {doc_count} документов...")
|
||||
|
||||
def end_indexing(self):
|
||||
if self.indexing_start_time:
|
||||
duration = time.time() - self.indexing_start_time
|
||||
rate = self.documents_indexed / duration if duration > 0 else 0
|
||||
print(f"✅ Индексация завершена за {duration:.2f}s ({rate:.1f} doc/s)")
|
||||
|
||||
|
||||
# Глобальный экземпляр метрик
|
||||
search_metrics = SearchMetrics()
|
||||
|
||||
# Global collection for background tasks
|
||||
background_tasks: List[asyncio.Task] = []
|
||||
|
||||
@@ -303,7 +281,6 @@ class SearchService:
|
||||
return
|
||||
|
||||
# Запускаем метрики индексации
|
||||
search_metrics.start_indexing(len(shouts))
|
||||
start_time = time.time()
|
||||
logger.info(f"Starting Muvera bulk indexing of {len(shouts)} documents")
|
||||
|
||||
@@ -375,8 +352,6 @@ class SearchService:
|
||||
f"Muvera bulk indexing completed in {elapsed:.2f}s: "
|
||||
f"{len(documents)} documents indexed, {total_skipped} shouts skipped"
|
||||
)
|
||||
# Завершаем метрики индексации
|
||||
search_metrics.end_indexing()
|
||||
except Exception as e:
|
||||
logger.exception(f"Muvera bulk indexing failed: {e}")
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user