Files
dzentra_bot/docs/migrations/build_054.md

355 lines
7.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```
после повторной глобальной проверки.