build 054: remove legacy klines compatibility API

This commit is contained in:
2026-07-16 09:28:42 +03:00
parent f027436e2f
commit 09f3f66a4e
3 changed files with 355 additions and 620 deletions

View File

@@ -21,8 +21,6 @@ from src.integrations.exchange.models import (
BalanceSummary,
ExchangeHealth,
ExecutionPriceSnapshot,
Kline,
KlineBatch,
PrivateAuthHealth,
SymbolValidationResult,
TimeSyncStatus,
@@ -554,59 +552,6 @@ class ExchangeService:
)
raise ExchangeError(str(exc)) from exc
# Сохранить legacy KlineBatch как compatibility-фасад над canonical Candle.
def get_klines(
self,
symbol: str | None = None,
*,
interval: str = "1m",
limit: int = 200,
price_type: str = "bid",
) -> KlineBatch:
symbol_to_use = symbol or self.settings.default_symbol
if not self.settings.exchange_enabled:
raise ExchangeError(
"Klines are not available in mock exchange mode."
)
if limit <= 0:
normalized_limit = 200
elif limit > 200:
normalized_limit = 200
else:
normalized_limit = limit
normalized_price_type = price_type.strip().lower()
if normalized_price_type not in {"bid", "ask"}:
normalized_price_type = "bid"
canonical_candles = self.get_candles(
symbol=symbol_to_use,
interval=interval,
limit=normalized_limit,
price_type=normalized_price_type,
)
candles = [
self._kline_from_candle(candle)
for candle in canonical_candles[-normalized_limit:]
]
normalized_symbol = (
canonical_candles[0].symbol
if canonical_candles
else normalize_symbol(symbol_to_use)
)
return KlineBatch(
symbol=normalized_symbol,
interval=interval,
candles=candles,
source=f"rest_klines:{normalized_price_type}",
)
# Собрать Candles acquisition pipeline и вернуть канонические модели Candle.
def _load_candles_via_acquisition(
self,
@@ -642,20 +587,6 @@ class ExchangeService:
price_type=price_type,
)
# Временно преобразовать canonical Candle в legacy Kline.
def _kline_from_candle(self, candle: Candle) -> Kline:
return Kline(
symbol=candle.symbol,
interval=candle.interval,
open_time=int(candle.open_time.timestamp() * 1000),
open_price=float(candle.open_price),
high_price=float(candle.high_price),
low_price=float(candle.low_price),
close_price=float(candle.close_price),
volume=float(candle.volume),
source=candle.source,
)
# Проверить публичную доступность биржи.
def get_health(self) -> ExchangeHealth:
if not self.settings.exchange_enabled: