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