diff --git a/docs/migrations/build_052.md b/docs/migrations/build_052.md new file mode 100644 index 0000000..3dbb1c1 --- /dev/null +++ b/docs/migrations/build_052.md @@ -0,0 +1,482 @@ +# Build 052 — Аудит оставшихся зависимостей legacy OHLCV + +## Статус + +**Completed** + +--- + +## Цель Build + +Провести полный аудит оставшихся компонентов legacy OHLCV после завершения миграции активной системы на каноническую модель `Candle`. + +Данный Build **не изменяет production-код**. + +Его задача — документально подтвердить: + +- отсутствие активных потребителей `ExchangeService.get_klines()`; +- отсутствие использования `KlineBatch`; +- отсутствие использования `Kline` в рабочем коде; +- определить оставшийся compatibility-слой; +- определить объём безопасного удаления legacy-компонентов. + +--- + +# Исходное состояние + +После завершения Build 051 система уже использует единый pipeline: + +```text +REST + ↓ +Parser + ↓ +Mapper + ↓ +Validation + ↓ +CandlesFeed + ↓ +Registry + ↓ +CandlesAcquisitionService + ↓ +ExchangeService.get_candles() + ↓ +Market Analysis +``` + +Все активные вычислительные компоненты используют: + +```text +src.market_data.acquisition.models.candle.Candle +``` + +--- + +# Выполненный аудит + +Были выполнены глобальные проверки по всему проекту. + +--- + +# Проверка production-вызовов get_klines() + +Выполнена команда: + +```bash +grep -RIn \ + "\.get_klines(" \ + src tests +``` + +Получен результат: + +```text +tests/unit/integrations/exchange/test_service_klines.py +``` + +В каталоге: + +```text +src/ +``` + +вызовы полностью отсутствуют. + +--- + +## Вывод + +Production-код больше не использует: + +```text +ExchangeService.get_klines() +``` + +--- + +# Проверка Kline и KlineBatch + +Выполнена команда: + +```bash +grep -RIn \ + "\bKline\b|\bKlineBatch\b" \ + src tests +``` + +Получены результаты: + +### integrations/exchange/models.py + +```text +class Kline +class KlineBatch +``` + +Это определения моделей. + +--- + +### integrations/exchange/service.py + +Используются исключительно внутри compatibility API: + +```text +get_klines() +_kline_from_candle() +``` + +--- + +### indicators_legacy.py + +Файл содержит: + +```text +list[Kline] +``` + +--- + +## Вывод + +Активных production-потребителей моделей: + +```text +Kline +KlineBatch +``` + +не обнаружено. + +--- + +# Проверка compatibility bridge + +Выполнена команда: + +```bash +grep \ + "_kline_from_candle|get_klines" +``` + +Получено: + +```text +ExchangeService.get_klines() +ExchangeService._kline_from_candle() +``` + +Кроме тестов больше никто данные функции не использует. + +--- + +## Вывод + +Compatibility bridge полностью локализован в одном месте: + +```text +src/integrations/exchange/service.py +``` + +--- + +# Проверка импортов legacy моделей + +Выполнена команда: + +```bash +grep \ +from src.integrations.exchange.models +``` + +Получены импорты различных моделей. + +Из legacy OHLCV обнаружен только: + +```text +src/trading/market_analysis/indicators_legacy.py +``` + +--- + +## Вывод + +Рабочий код не импортирует: + +```text +Kline +KlineBatch +``` + +--- + +# Проверка indicators_legacy.py + +Выполнена команда: + +```bash +grep indicators_legacy +``` + +Результат: + +```text +пусто +``` + +--- + +## Вывод + +Файл: + +```text +src/trading/market_analysis/indicators_legacy.py +``` + +не используется. + +Он представляет собой полностью мёртвый legacy-код. + +--- + +# Проверка batch.candles + +Выполнена команда: + +```bash +grep \ +batch.candles +``` + +Результат: + +```text +пусто +``` + +Также отсутствуют: + +```text +batch.symbol +batch.interval +batch.source +``` + +--- + +## Вывод + +Legacy контейнер: + +```text +KlineBatch +``` + +больше нигде не используется. + +--- + +# Проверка канонической модели Candle + +Выполнена команда: + +```bash +grep \ +models.candle import Candle +``` + +Получены результаты: + +```text +Market Data Acquisition +ExchangeService +MarketAnalysis +HTF +Volatility +Structure +Quality +Unit tests +``` + +--- + +## Вывод + +Каноническая модель: + +```text +Candle +``` + +используется во всей активной архитектуре. + +--- + +# Проверка полного regression + +Выполнена команда: + +```bash +python -m pytest -q +``` + +Результат: + +```text +805 passed +``` + +--- + +# Проверка Git + +```bash +git status +``` + +Результат: + +```text +working tree clean +``` + +--- + +# Классификация оставшихся legacy-компонентов + +## Production + +```text +нет +``` + +--- + +## Compatibility + +```text +ExchangeService.get_klines() + +ExchangeService._kline_from_candle() + +Kline + +KlineBatch +``` + +--- + +## Test only + +```text +tests/unit/integrations/exchange/test_service_klines.py +``` + +--- + +## Dead code + +```text +src/trading/market_analysis/indicators_legacy.py +``` + +--- + +# Архитектурное состояние + +Активная система полностью использует: + +```text +ExchangeService.get_candles() + +↓ + +tuple[Candle, ...] + +↓ + +Market Analysis +``` + +Legacy OHLCV используется исключительно как compatibility-слой. + +--- + +# План дальнейшей очистки + +## Build 053 + +Удаление: + +```text +src/trading/market_analysis/indicators_legacy.py +``` + +--- + +## Build 054 + +Удаление compatibility API: + +```text +ExchangeService.get_klines() + +ExchangeService._kline_from_candle() + +tests/unit/integrations/exchange/test_service_klines.py +``` + +--- + +## Build 055 + +Удаление моделей: + +```text +Kline + +KlineBatch +``` + +из: + +```text +src/integrations/exchange/models.py +``` + +--- + +## Build 056 + +Финальная архитектурная проверка OHLCV. + +Проверяется отсутствие: + +```text +get_klines + +Kline + +KlineBatch + +_kline_from_candle + +indicators_legacy +``` + +После успешной проверки миграция OHLCV считается полностью завершённой. + +--- + +# Итог + +Build 052 подтвердил: + +- активных production-зависимостей от legacy OHLCV больше нет; +- compatibility-слой полностью локализован; +- dead code выделен отдельно; +- проект готов к поэтапному удалению compatibility API без риска нарушения работы системы. \ No newline at end of file