Files
dzentra_bot/docs/migrations/build_054.md

7.1 KiB
Raw Permalink Blame History

Build 054 — Удаление legacy API get_klines и compatibility bridge

Статус

Завершён


Цель Build

Удалить больше не используемый compatibility API legacy OHLCV:

ExchangeService.get_klines()

а также внутренний bridge:

ExchangeService._kline_from_candle()

и связанный test-only файл:

tests/unit/integrations/exchange/test_service_klines.py

Build 054 не удаляет сами модели:

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-файл:

src/trading/market_analysis/indicators_legacy.py

Таким образом compatibility API больше не обслуживал ни одного рабочего потребителя.


Объём изменений

В Build 054 изменён:

src/integrations/exchange/service.py

Удалён:

tests/unit/integrations/exchange/test_service_klines.py

Добавлена документация:

docs/migrations/build_054.md

Build 054 не изменяет:

src/integrations/exchange/models.py
src/market_data/acquisition/
src/trading/market_analysis/

Build также не удаляет:

Kline
KlineBatch

Изменения в ExchangeService

Из файла:

src/integrations/exchange/service.py

удалены импорты:

Kline
KlineBatch

Удалён публичный legacy-метод:

ExchangeService.get_klines()

Удалён внутренний compatibility helper:

ExchangeService._kline_from_candle()

Остальной код ExchangeService сохранён без изменений.


Удаление test-only compatibility coverage

Удалён файл:

tests/unit/integrations/exchange/test_service_klines.py

Он полностью покрывал уже удалённые компоненты:

get_klines()
_kline_from_candle()
Candle → Kline
KlineBatch

Новый канонический API продолжает покрываться файлом:

tests/unit/integrations/exchange/test_service_candles.py

Архитектурный результат

До Build 054:

ExchangeService.get_klines()
    ↓
ExchangeService.get_candles()
    ↓
Candle
    ↓
_kline_from_candle()
    ↓
Kline
    ↓
KlineBatch

После Build 054:

ExchangeService.get_candles()
    ↓
tuple[Candle, ...]

Compatibility bridge полностью удалён.


Полный regression suite

После удаления выполнена команда:

python -m pytest -q

Результат:

779 passed in 2.66s

Снижение количества тестов связано с удалением test-only файла:

tests/unit/integrations/exchange/test_service_klines.py

Регрессий не обнаружено.


Контроль отсутствия get_klines

Выполнена команда:

grep -RIn \
  --exclude-dir="__pycache__" \
  --exclude="*.pyc" \
  "\.get_klines(" \
  src tests

Результат:

пусто

Контроль отсутствия _kline_from_candle

Выполнена команда:

grep -RIn \
  --exclude-dir="__pycache__" \
  --exclude="*.pyc" \
  "_kline_from_candle" \
  src tests

Результат:

пусто

Контроль оставшихся Kline и KlineBatch

Выполнена команда:

grep -RIn \
  --exclude-dir="__pycache__" \
  --exclude="*.pyc" \
  -E "\bKlineBatch\b|\bKline\b" \
  src tests

Результат:

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 существуют только как неиспользуемые определения моделей.


Проверка форматирования

Выполнена команда:

git diff --check

Вывод отсутствует.

Whitespace-ошибок не обнаружено.


Фактический diff

Перед добавлением документации:

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 завершён успешно.

Текущее состояние:

get_klines — удалён
_kline_from_candle — удалён
test_service_klines.py — удалён
Full test suite — 779 passed
Kline/KlineBatch — только неиспользуемые определения в models.py

Следующий этап — удалить модели:

Kline
KlineBatch

из:

src/integrations/exchange/models.py

после повторной глобальной проверки.