diff --git a/src/orchestrator.py b/src/orchestrator.py
index 28c6e14..9fa352b 100644
--- a/src/orchestrator.py
+++ b/src/orchestrator.py
@@ -60,7 +60,55 @@ class AppOrchestrator:
self.logger = logging.getLogger(self.__class__.__name__)
self._setup()
-
+ def _register_run(self):
+ """Регистрирует текущий запуск в базе данных."""
+ if not self.db_manager:
+ return
+ try:
+ with self.db_manager as conn:
+ conn.execute(
+ "INSERT INTO parsing_runs (run_id, start_time) VALUES (?, ?)",
+ (self.run_id, datetime.now())
+ )
+ conn.commit()
+ self.logger.info(f"Запуск {self.run_id} зарегистрирован в БД.")
+ except sqlite3.Error as e:
+ self.logger.error(f"Не удалось зарегистрировать запуск {self.run_id} в БД: {e}")
+ raise
+
+ @contextmanager
+ def _error_context(self, operation: str):
+ """Контекстный менеджер для обработки ошибок с детальной диагностикой."""
+ try:
+ yield
+ except Exception as e:
+ self.logger.error(f"[{operation.upper()}] Ошибка в операции '{operation}': {e}", exc_info=True)
+ self._log_error_details(operation, e)
+ raise
+
+ #
+ # description: "Логирует расширенную информацию об ошибке для упрощения диагностики."
+ #
+ #
+ def _log_error_details(self, operation: str, error: Exception):
+ """Логирует детальную информацию об ошибке."""
+ error_info = {
+ 'operation': operation,
+ 'error_type': type(error).__name__,
+ 'error_message': str(error),
+ 'run_id': self.run_id,
+ 'timestamp': datetime.now().isoformat(),
+ 'stats': self.stats.copy()
+ }
+ self.logger.error(f"[HELPER:_log_error_details] Детали ошибки: {error_info}")
+ #
+
+ #
+ # description: "Шаг 0: Инициализация всех систем (БД, логирование, RabbitMQ)."
+ #
+ #
+ def _setup(self):
+ """Инициализация всех систем перед началом парсинга."""
with self._error_context("setup"):
#
self.stats['start_time'] = datetime.now()