feat: add market data architecture and complete migration through build 039
This commit is contained in:
51
app/src/trading/decision/validation.py
Normal file
51
app/src/trading/decision/validation.py
Normal file
@@ -0,0 +1,51 @@
|
||||
# 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."
|
||||
)
|
||||
Reference in New Issue
Block a user