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