# app/src/trading/decision/validation.py from __future__ import annotations from src.trading.market_intelligence.common.models import CoordinatorResult from src.trading.decision.exceptions import ( TradingValidationError, ) class TradingValidation: """Проверка входного CoordinatorResult для Trading Layer.""" def validate( self, coordinator_result: CoordinatorResult, ) -> None: """Проверить CoordinatorResult перед принятием торгового решения.""" self._validate_result_exists(coordinator_result) self._validate_result_usable(coordinator_result) self._validate_result_has_no_errors(coordinator_result) def _validate_result_exists( self, coordinator_result: CoordinatorResult, ) -> None: """Проверить, что CoordinatorResult передан.""" if coordinator_result is None: raise TradingValidationError( "CoordinatorResult is required for Trading." ) def _validate_result_usable( self, coordinator_result: CoordinatorResult, ) -> None: """Проверить пригодность CoordinatorResult для принятия решения.""" if not coordinator_result.is_usable: raise TradingValidationError( "CoordinatorResult is not usable." ) def _validate_result_has_no_errors( self, coordinator_result: CoordinatorResult, ) -> None: """Проверить отсутствие критических ошибок Coordinator.""" if coordinator_result.has_errors: raise TradingValidationError( "CoordinatorResult contains errors." )