271 lines
5.6 KiB
Markdown
271 lines
5.6 KiB
Markdown
# Build 053 — Удаление неиспользуемого indicators_legacy.py
|
||
|
||
## Статус
|
||
|
||
**Завершён**
|
||
|
||
---
|
||
|
||
## Цель Build
|
||
|
||
Удалить подтверждённый мёртвый legacy-файл:
|
||
|
||
```text
|
||
src/trading/market_analysis/indicators_legacy.py
|
||
```
|
||
|
||
Файл больше не импортировался и не использовался ни production-кодом, ни тестами.
|
||
|
||
Build 053 выполняет только удаление этого файла и не затрагивает compatibility API `ExchangeService.get_klines()` или модели `Kline` и `KlineBatch`.
|
||
|
||
---
|
||
|
||
## Исходное состояние
|
||
|
||
По результатам Build 052 было подтверждено:
|
||
|
||
```text
|
||
grep indicators_legacy → пусто
|
||
```
|
||
|
||
Файл:
|
||
|
||
```text
|
||
src/trading/market_analysis/indicators_legacy.py
|
||
```
|
||
|
||
содержал legacy-реализацию ATR и зависел от:
|
||
|
||
```text
|
||
src.integrations.exchange.models.Kline
|
||
```
|
||
|
||
При этом активный вычислительный код уже использовал:
|
||
|
||
```text
|
||
src/trading/market_analysis/indicators/volatility.py
|
||
```
|
||
|
||
и каноническую модель:
|
||
|
||
```text
|
||
src.market_data.acquisition.models.candle.Candle
|
||
```
|
||
|
||
---
|
||
|
||
## Объём изменений
|
||
|
||
В Build 053 удалён только:
|
||
|
||
```text
|
||
src/trading/market_analysis/indicators_legacy.py
|
||
```
|
||
|
||
Добавлена документация:
|
||
|
||
```text
|
||
docs/migrations/build_053.md
|
||
```
|
||
|
||
Build 053 не изменяет:
|
||
|
||
```text
|
||
src/integrations/exchange/service.py
|
||
src/integrations/exchange/models.py
|
||
tests/unit/integrations/exchange/test_service_klines.py
|
||
```
|
||
|
||
Build также не удаляет:
|
||
|
||
```text
|
||
ExchangeService.get_klines()
|
||
ExchangeService._kline_from_candle()
|
||
Kline
|
||
KlineBatch
|
||
```
|
||
|
||
---
|
||
|
||
## Предварительная проверка потребителей
|
||
|
||
Перед удалением выполнена команда:
|
||
|
||
```bash
|
||
grep -RIn \
|
||
--exclude-dir="__pycache__" \
|
||
--exclude="*.pyc" \
|
||
"indicators_legacy\|from src\.trading\.market_analysis\.indicators_legacy" \
|
||
src tests
|
||
```
|
||
|
||
Результат:
|
||
|
||
```text
|
||
пусто
|
||
```
|
||
|
||
Это подтвердило отсутствие любых потребителей файла.
|
||
|
||
---
|
||
|
||
## Выполненное изменение
|
||
|
||
Удалён файл:
|
||
|
||
```text
|
||
src/trading/market_analysis/indicators_legacy.py
|
||
```
|
||
|
||
Объём удаления:
|
||
|
||
```text
|
||
67 строк
|
||
```
|
||
|
||
---
|
||
|
||
## Полный regression suite
|
||
|
||
После удаления выполнена команда:
|
||
|
||
```bash
|
||
python -m pytest -q
|
||
```
|
||
|
||
Результат:
|
||
|
||
```text
|
||
805 passed in 2.70s
|
||
```
|
||
|
||
Регрессий не обнаружено.
|
||
|
||
---
|
||
|
||
## Контроль отсутствия indicators_legacy
|
||
|
||
Выполнена команда:
|
||
|
||
```bash
|
||
grep -RIn \
|
||
--exclude-dir="__pycache__" \
|
||
--exclude="*.pyc" \
|
||
"indicators_legacy" \
|
||
src tests
|
||
```
|
||
|
||
Результат:
|
||
|
||
```text
|
||
пусто
|
||
```
|
||
|
||
---
|
||
|
||
## Контроль оставшихся Kline и KlineBatch
|
||
|
||
Выполнена команда:
|
||
|
||
```bash
|
||
grep -RIn \
|
||
--exclude-dir="__pycache__" \
|
||
--exclude="*.pyc" \
|
||
-E "\bKlineBatch\b|\bKline\b" \
|
||
src tests
|
||
```
|
||
|
||
Результат показывает, что `Kline` и `KlineBatch` остались только в:
|
||
|
||
```text
|
||
src/integrations/exchange/service.py
|
||
src/integrations/exchange/models.py
|
||
```
|
||
|
||
Они используются исключительно для compatibility API:
|
||
|
||
```text
|
||
ExchangeService.get_klines()
|
||
ExchangeService._kline_from_candle()
|
||
```
|
||
|
||
---
|
||
|
||
## Проверка форматирования
|
||
|
||
Выполнена команда:
|
||
|
||
```bash
|
||
git diff --check
|
||
```
|
||
|
||
Вывод отсутствует.
|
||
|
||
Whitespace-ошибок не обнаружено.
|
||
|
||
---
|
||
|
||
## Архитектурный результат
|
||
|
||
После Build 053 в `Market Analysis` больше не существует legacy-файлов, зависящих от `Kline`.
|
||
|
||
Активный вычислительный слой использует только:
|
||
|
||
```text
|
||
Candle
|
||
```
|
||
|
||
Оставшийся legacy OHLCV полностью локализован в compatibility-слое `ExchangeService`.
|
||
|
||
---
|
||
|
||
## Что намеренно не выполнено
|
||
|
||
Build 053 намеренно не включает:
|
||
|
||
- удаление `ExchangeService.get_klines()`;
|
||
- удаление `ExchangeService._kline_from_candle()`;
|
||
- удаление `tests/unit/integrations/exchange/test_service_klines.py`;
|
||
- удаление `Kline`;
|
||
- удаление `KlineBatch`;
|
||
- изменение Market Analysis;
|
||
- изменение Market Data Acquisition;
|
||
- изменение торговой логики;
|
||
- изменение архитектуры каталогов.
|
||
|
||
---
|
||
|
||
## Критерии завершения
|
||
|
||
Build 053 считается завершённым, поскольку:
|
||
|
||
- потребители `indicators_legacy.py` отсутствуют;
|
||
- файл удалён;
|
||
- полный test suite проходит;
|
||
- grep по `indicators_legacy` пустой;
|
||
- `Kline` и `KlineBatch` остались только в compatibility-слое;
|
||
- `git diff --check` чистый.
|
||
|
||
---
|
||
|
||
## Итог
|
||
|
||
**Build 053 завершён успешно.**
|
||
|
||
Текущее состояние:
|
||
|
||
```text
|
||
indicators_legacy.py — удалён
|
||
Full test suite — 805 passed
|
||
Legacy Kline/KlineBatch — только compatibility-слой
|
||
```
|
||
|
||
Следующий этап — удаление compatibility API:
|
||
|
||
```text
|
||
ExchangeService.get_klines()
|
||
ExchangeService._kline_from_candle()
|
||
tests/unit/integrations/exchange/test_service_klines.py
|
||
```
|
||
|
||
без одновременного удаления самих моделей `Kline` и `KlineBatch`. |