# Build 054 — Удаление legacy API get_klines и compatibility bridge ## Статус **Завершён** --- ## Цель Build Удалить больше не используемый compatibility API legacy OHLCV: ```text ExchangeService.get_klines() ``` а также внутренний bridge: ```text ExchangeService._kline_from_candle() ``` и связанный test-only файл: ```text tests/unit/integrations/exchange/test_service_klines.py ``` Build 054 не удаляет сами модели: ```text Kline KlineBatch ``` Они сохраняются до отдельного Build после повторной глобальной проверки зависимостей. --- ## Исходное состояние По результатам Build 052 было подтверждено: - production-вызовы `ExchangeService.get_klines()` отсутствуют; - `get_klines()` используется только тестами; - `_kline_from_candle()` используется только внутри `get_klines()` и его тестов; - `Kline` и `KlineBatch` остаются только внутри compatibility-слоя; - активный Market Analysis полностью использует `ExchangeService.get_candles()`. После Build 053 также был удалён последний неиспользуемый production-файл: ```text src/trading/market_analysis/indicators_legacy.py ``` Таким образом compatibility API больше не обслуживал ни одного рабочего потребителя. --- ## Объём изменений В Build 054 изменён: ```text src/integrations/exchange/service.py ``` Удалён: ```text tests/unit/integrations/exchange/test_service_klines.py ``` Добавлена документация: ```text docs/migrations/build_054.md ``` Build 054 не изменяет: ```text src/integrations/exchange/models.py src/market_data/acquisition/ src/trading/market_analysis/ ``` Build также не удаляет: ```text Kline KlineBatch ``` --- ## Изменения в ExchangeService Из файла: ```text src/integrations/exchange/service.py ``` удалены импорты: ```text Kline KlineBatch ``` Удалён публичный legacy-метод: ```text ExchangeService.get_klines() ``` Удалён внутренний compatibility helper: ```text ExchangeService._kline_from_candle() ``` Остальной код `ExchangeService` сохранён без изменений. --- ## Удаление test-only compatibility coverage Удалён файл: ```text tests/unit/integrations/exchange/test_service_klines.py ``` Он полностью покрывал уже удалённые компоненты: ```text get_klines() _kline_from_candle() Candle → Kline KlineBatch ``` Новый канонический API продолжает покрываться файлом: ```text tests/unit/integrations/exchange/test_service_candles.py ``` --- ## Архитектурный результат До Build 054: ```text ExchangeService.get_klines() ↓ ExchangeService.get_candles() ↓ Candle ↓ _kline_from_candle() ↓ Kline ↓ KlineBatch ``` После Build 054: ```text ExchangeService.get_candles() ↓ tuple[Candle, ...] ``` Compatibility bridge полностью удалён. --- ## Полный regression suite После удаления выполнена команда: ```bash python -m pytest -q ``` Результат: ```text 779 passed in 2.66s ``` Снижение количества тестов связано с удалением test-only файла: ```text tests/unit/integrations/exchange/test_service_klines.py ``` Регрессий не обнаружено. --- ## Контроль отсутствия get_klines Выполнена команда: ```bash grep -RIn \ --exclude-dir="__pycache__" \ --exclude="*.pyc" \ "\.get_klines(" \ src tests ``` Результат: ```text пусто ``` --- ## Контроль отсутствия _kline_from_candle Выполнена команда: ```bash grep -RIn \ --exclude-dir="__pycache__" \ --exclude="*.pyc" \ "_kline_from_candle" \ src tests ``` Результат: ```text пусто ``` --- ## Контроль оставшихся Kline и KlineBatch Выполнена команда: ```bash grep -RIn \ --exclude-dir="__pycache__" \ --exclude="*.pyc" \ -E "\bKlineBatch\b|\bKline\b" \ src tests ``` Результат: ```text src/integrations/exchange/models.py:93:class Kline: src/integrations/exchange/models.py:110:class KlineBatch: src/integrations/exchange/models.py:113: candles: list[Kline] ``` Следовательно, после Build 054 `Kline` и `KlineBatch` существуют только как неиспользуемые определения моделей. --- ## Проверка форматирования Выполнена команда: ```bash git diff --check ``` Вывод отсутствует. Whitespace-ошибок не обнаружено. --- ## Фактический diff Перед добавлением документации: ```text app/src/integrations/exchange/service.py | 69 ------------------ app/tests/unit/integrations/exchange/test_service_klines.py | 551 ----------------------------------------------------------------------------------------------------------------------------------------------- 2 files changed, 620 deletions(-) ``` --- ## Что намеренно не выполнено Build 054 намеренно не включает: - удаление `Kline`; - удаление `KlineBatch`; - изменение `src/integrations/exchange/models.py`; - изменение `ExchangeService.get_candles()`; - изменение Market Data Acquisition; - изменение Market Analysis; - изменение торговой логики; - изменение структуры каталогов. --- ## Критерии завершения Build 054 считается завершённым, поскольку: - production-потребители `get_klines()` отсутствовали до удаления; - `get_klines()` удалён; - `_kline_from_candle()` удалён; - test-only compatibility coverage удалено; - полный suite проходит; - grep по `get_klines()` пустой; - grep по `_kline_from_candle()` пустой; - `Kline` и `KlineBatch` остались только в `models.py`; - `git diff --check` чистый. --- ## Итог **Build 054 завершён успешно.** Текущее состояние: ```text get_klines — удалён _kline_from_candle — удалён test_service_klines.py — удалён Full test suite — 779 passed Kline/KlineBatch — только неиспользуемые определения в models.py ``` Следующий этап — удалить модели: ```text Kline KlineBatch ``` из: ```text src/integrations/exchange/models.py ``` после повторной глобальной проверки.