Build 060.12: add WebSocket Trade Value Validation

This commit is contained in:
2026-07-19 20:12:34 +03:00
parent d3f8680921
commit 6d121abe96
3 changed files with 1416 additions and 0 deletions

View File

@@ -18,6 +18,7 @@ from src.market_data.acquisition.adapters.dzengi.models import (
DzengiTicker24hrResponse,
DzengiWebSocketOhlcEvent,
DzengiWebSocketQuoteResponse,
DzengiWebSocketTradeEvent,
)
from src.market_data.acquisition.exceptions import (
CandleValueError,
@@ -820,6 +821,44 @@ def _candle_decimal(
return decimal_value
def validate_dzengi_websocket_trade_values(
event: DzengiWebSocketTradeEvent,
) -> None:
"""
Проверить допустимость значений transport-модели Dzengi WebSocket Trade.
Функция не изменяет transport-модель, не преобразует raw numeric
значения в Decimal и не выполняет mapping во внутреннюю модель Trade.
"""
_trade_positive_int(
event.trade_id,
path="$.payload.id",
)
_trade_positive_decimal(
event.price,
path="$.payload.price",
)
_trade_positive_decimal(
event.size,
path="$.payload.size",
)
_trade_positive_int(
event.timestamp,
path="$.payload.ts",
)
if not event.symbol.strip():
raise TradeValueError(
"$.payload.symbol не должен быть пустым."
)
if not event.order_id.strip():
raise TradeValueError(
"$.payload.orderId не должен быть пустым."
)
def validate_rest_agg_trade_values(
trades: tuple[DzengiRestAggTrade, ...],
) -> None: