build 054: remove legacy klines compatibility API
This commit is contained in:
355
docs/migrations/build_054.md
Normal file
355
docs/migrations/build_054.md
Normal file
@@ -0,0 +1,355 @@
|
||||
# Build 054 — Удаление legacy API get_klines и compatibility bridge
|
||||
|
||||
## Статус
|
||||
|
||||
**Завершён**
|
||||
|
||||
---
|
||||
|
||||
## Цель Build
|
||||
|
||||
Удалить больше не используемый compatibility API legacy OHLCV:
|
||||
|
||||
```text
|
||||
ExchangeService.get_klines()
|
||||
```
|
||||
|
||||
а также внутренний bridge:
|
||||
|
||||
```text
|
||||
ExchangeService._kline_from_candle()
|
||||
```
|
||||
|
||||
и связанный test-only файл:
|
||||
|
||||
```text
|
||||
tests/unit/integrations/exchange/test_service_klines.py
|
||||
```
|
||||
|
||||
Build 054 не удаляет сами модели:
|
||||
|
||||
```text
|
||||
Kline
|
||||
KlineBatch
|
||||
```
|
||||
|
||||
Они сохраняются до отдельного Build после повторной глобальной проверки зависимостей.
|
||||
|
||||
---
|
||||
|
||||
## Исходное состояние
|
||||
|
||||
По результатам Build 052 было подтверждено:
|
||||
|
||||
- production-вызовы `ExchangeService.get_klines()` отсутствуют;
|
||||
- `get_klines()` используется только тестами;
|
||||
- `_kline_from_candle()` используется только внутри `get_klines()` и его тестов;
|
||||
- `Kline` и `KlineBatch` остаются только внутри compatibility-слоя;
|
||||
- активный Market Analysis полностью использует `ExchangeService.get_candles()`.
|
||||
|
||||
После Build 053 также был удалён последний неиспользуемый production-файл:
|
||||
|
||||
```text
|
||||
src/trading/market_analysis/indicators_legacy.py
|
||||
```
|
||||
|
||||
Таким образом compatibility API больше не обслуживал ни одного рабочего потребителя.
|
||||
|
||||
---
|
||||
|
||||
## Объём изменений
|
||||
|
||||
В Build 054 изменён:
|
||||
|
||||
```text
|
||||
src/integrations/exchange/service.py
|
||||
```
|
||||
|
||||
Удалён:
|
||||
|
||||
```text
|
||||
tests/unit/integrations/exchange/test_service_klines.py
|
||||
```
|
||||
|
||||
Добавлена документация:
|
||||
|
||||
```text
|
||||
docs/migrations/build_054.md
|
||||
```
|
||||
|
||||
Build 054 не изменяет:
|
||||
|
||||
```text
|
||||
src/integrations/exchange/models.py
|
||||
src/market_data/acquisition/
|
||||
src/trading/market_analysis/
|
||||
```
|
||||
|
||||
Build также не удаляет:
|
||||
|
||||
```text
|
||||
Kline
|
||||
KlineBatch
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Изменения в ExchangeService
|
||||
|
||||
Из файла:
|
||||
|
||||
```text
|
||||
src/integrations/exchange/service.py
|
||||
```
|
||||
|
||||
удалены импорты:
|
||||
|
||||
```text
|
||||
Kline
|
||||
KlineBatch
|
||||
```
|
||||
|
||||
Удалён публичный legacy-метод:
|
||||
|
||||
```text
|
||||
ExchangeService.get_klines()
|
||||
```
|
||||
|
||||
Удалён внутренний compatibility helper:
|
||||
|
||||
```text
|
||||
ExchangeService._kline_from_candle()
|
||||
```
|
||||
|
||||
Остальной код `ExchangeService` сохранён без изменений.
|
||||
|
||||
---
|
||||
|
||||
## Удаление test-only compatibility coverage
|
||||
|
||||
Удалён файл:
|
||||
|
||||
```text
|
||||
tests/unit/integrations/exchange/test_service_klines.py
|
||||
```
|
||||
|
||||
Он полностью покрывал уже удалённые компоненты:
|
||||
|
||||
```text
|
||||
get_klines()
|
||||
_kline_from_candle()
|
||||
Candle → Kline
|
||||
KlineBatch
|
||||
```
|
||||
|
||||
Новый канонический API продолжает покрываться файлом:
|
||||
|
||||
```text
|
||||
tests/unit/integrations/exchange/test_service_candles.py
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Архитектурный результат
|
||||
|
||||
До Build 054:
|
||||
|
||||
```text
|
||||
ExchangeService.get_klines()
|
||||
↓
|
||||
ExchangeService.get_candles()
|
||||
↓
|
||||
Candle
|
||||
↓
|
||||
_kline_from_candle()
|
||||
↓
|
||||
Kline
|
||||
↓
|
||||
KlineBatch
|
||||
```
|
||||
|
||||
После Build 054:
|
||||
|
||||
```text
|
||||
ExchangeService.get_candles()
|
||||
↓
|
||||
tuple[Candle, ...]
|
||||
```
|
||||
|
||||
Compatibility bridge полностью удалён.
|
||||
|
||||
---
|
||||
|
||||
## Полный regression suite
|
||||
|
||||
После удаления выполнена команда:
|
||||
|
||||
```bash
|
||||
python -m pytest -q
|
||||
```
|
||||
|
||||
Результат:
|
||||
|
||||
```text
|
||||
779 passed in 2.66s
|
||||
```
|
||||
|
||||
Снижение количества тестов связано с удалением test-only файла:
|
||||
|
||||
```text
|
||||
tests/unit/integrations/exchange/test_service_klines.py
|
||||
```
|
||||
|
||||
Регрессий не обнаружено.
|
||||
|
||||
---
|
||||
|
||||
## Контроль отсутствия get_klines
|
||||
|
||||
Выполнена команда:
|
||||
|
||||
```bash
|
||||
grep -RIn \
|
||||
--exclude-dir="__pycache__" \
|
||||
--exclude="*.pyc" \
|
||||
"\.get_klines(" \
|
||||
src tests
|
||||
```
|
||||
|
||||
Результат:
|
||||
|
||||
```text
|
||||
пусто
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Контроль отсутствия _kline_from_candle
|
||||
|
||||
Выполнена команда:
|
||||
|
||||
```bash
|
||||
grep -RIn \
|
||||
--exclude-dir="__pycache__" \
|
||||
--exclude="*.pyc" \
|
||||
"_kline_from_candle" \
|
||||
src tests
|
||||
```
|
||||
|
||||
Результат:
|
||||
|
||||
```text
|
||||
пусто
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Контроль оставшихся Kline и KlineBatch
|
||||
|
||||
Выполнена команда:
|
||||
|
||||
```bash
|
||||
grep -RIn \
|
||||
--exclude-dir="__pycache__" \
|
||||
--exclude="*.pyc" \
|
||||
-E "\bKlineBatch\b|\bKline\b" \
|
||||
src tests
|
||||
```
|
||||
|
||||
Результат:
|
||||
|
||||
```text
|
||||
src/integrations/exchange/models.py:93:class Kline:
|
||||
src/integrations/exchange/models.py:110:class KlineBatch:
|
||||
src/integrations/exchange/models.py:113: candles: list[Kline]
|
||||
```
|
||||
|
||||
Следовательно, после Build 054 `Kline` и `KlineBatch` существуют только как неиспользуемые определения моделей.
|
||||
|
||||
---
|
||||
|
||||
## Проверка форматирования
|
||||
|
||||
Выполнена команда:
|
||||
|
||||
```bash
|
||||
git diff --check
|
||||
```
|
||||
|
||||
Вывод отсутствует.
|
||||
|
||||
Whitespace-ошибок не обнаружено.
|
||||
|
||||
---
|
||||
|
||||
## Фактический diff
|
||||
|
||||
Перед добавлением документации:
|
||||
|
||||
```text
|
||||
app/src/integrations/exchange/service.py | 69 ------------------
|
||||
app/tests/unit/integrations/exchange/test_service_klines.py | 551 -----------------------------------------------------------------------------------------------------------------------------------------------
|
||||
2 files changed, 620 deletions(-)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Что намеренно не выполнено
|
||||
|
||||
Build 054 намеренно не включает:
|
||||
|
||||
- удаление `Kline`;
|
||||
- удаление `KlineBatch`;
|
||||
- изменение `src/integrations/exchange/models.py`;
|
||||
- изменение `ExchangeService.get_candles()`;
|
||||
- изменение Market Data Acquisition;
|
||||
- изменение Market Analysis;
|
||||
- изменение торговой логики;
|
||||
- изменение структуры каталогов.
|
||||
|
||||
---
|
||||
|
||||
## Критерии завершения
|
||||
|
||||
Build 054 считается завершённым, поскольку:
|
||||
|
||||
- production-потребители `get_klines()` отсутствовали до удаления;
|
||||
- `get_klines()` удалён;
|
||||
- `_kline_from_candle()` удалён;
|
||||
- test-only compatibility coverage удалено;
|
||||
- полный suite проходит;
|
||||
- grep по `get_klines()` пустой;
|
||||
- grep по `_kline_from_candle()` пустой;
|
||||
- `Kline` и `KlineBatch` остались только в `models.py`;
|
||||
- `git diff --check` чистый.
|
||||
|
||||
---
|
||||
|
||||
## Итог
|
||||
|
||||
**Build 054 завершён успешно.**
|
||||
|
||||
Текущее состояние:
|
||||
|
||||
```text
|
||||
get_klines — удалён
|
||||
_kline_from_candle — удалён
|
||||
test_service_klines.py — удалён
|
||||
Full test suite — 779 passed
|
||||
Kline/KlineBatch — только неиспользуемые определения в models.py
|
||||
```
|
||||
|
||||
Следующий этап — удалить модели:
|
||||
|
||||
```text
|
||||
Kline
|
||||
KlineBatch
|
||||
```
|
||||
|
||||
из:
|
||||
|
||||
```text
|
||||
src/integrations/exchange/models.py
|
||||
```
|
||||
|
||||
после повторной глобальной проверки.
|
||||
Reference in New Issue
Block a user