build 052: audit remaining legacy OHLCV dependencies
This commit is contained in:
482
docs/migrations/build_052.md
Normal file
482
docs/migrations/build_052.md
Normal 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 без риска нарушения работы системы.
|
||||||
Reference in New Issue
Block a user