build 052: audit remaining legacy OHLCV dependencies

This commit is contained in:
2026-07-16 09:08:40 +03:00
parent 0b2187dac4
commit 642d607162

View File

@@ -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 без риска нарушения работы системы.