build 053: remove unused legacy market indicators

This commit is contained in:
2026-07-16 09:13:05 +03:00
parent 642d607162
commit f027436e2f
2 changed files with 271 additions and 67 deletions

View File

@@ -0,0 +1,271 @@
# 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`.