Files
dzentra_bot/docs/migrations/build_055.md

6.4 KiB
Raw Permalink Blame History

Build 055 — Удаление legacy-моделей Kline и KlineBatch

Статус

Завершён


Цель Build

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

Kline
KlineBatch

из файла:

src/integrations/exchange/models.py

Build 055 завершает удаление legacy-моделей свечей после предварительного удаления всех их production-потребителей, compatibility API и test-only зависимостей.


Исходное состояние

До Build 055 было подтверждено:

  • ExchangeService.get_klines() удалён в Build 054;
  • ExchangeService._kline_from_candle() удалён;
  • tests/unit/integrations/exchange/test_service_klines.py удалён;
  • src/trading/market_analysis/indicators_legacy.py удалён в Build 053;
  • глобальный grep показывал Kline и KlineBatch только как определения в src/integrations/exchange/models.py;
  • активный production-код полностью использует каноническую модель Candle.

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

В Build 055 изменён только:

src/integrations/exchange/models.py

Удалены определения:

Kline
KlineBatch

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

docs/migrations/build_055.md

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

src/integrations/exchange/service.py
src/market_data/acquisition/
src/trading/market_analysis/
tests/

Предварительная проверка зависимостей

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

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]

Это подтвердило, что модели больше нигде не используются.


Удалённый блок

Из src/integrations/exchange/models.py удалены:

# Одна свеча OHLCV.
@dataclass(slots=True)
class Kline:
    symbol: str
    interval: str

    open_time: int

    open_price: float
    high_price: float
    low_price: float
    close_price: float
    volume: float

    source: str


# Пакет свечей.
@dataclass(slots=True)
class KlineBatch:
    symbol: str
    interval: str
    candles: list[Kline]
    source: str

Остальные модели файла сохранены без изменений.


Проверка компиляции

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

python -m compileall \
  src/integrations/exchange/models.py

Результат:

успешно

Полный regression suite

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

python -m pytest -q

Результат:

779 passed in 2.46s

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


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

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

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

Результат:

пусто

Это подтверждает полное удаление legacy-моделей OHLCV из исходного кода и тестов.


Контроль отсутствия legacy compatibility-компонентов

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

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

Результат:

пусто

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

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

git diff --check

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

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


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

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

app/src/integrations/exchange/models.py | 26 --------------------------
1 file changed, 26 deletions(-)

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

После Build 055 legacy OHLCV полностью удалён из моделей Exchange Integration.

Активная архитектура использует только каноническую модель:

src.market_data.acquisition.models.candle.Candle

Текущий путь:

Dzengi REST API
    ↓
CandlesDocumentSource
    ↓
schema validation
    ↓
parser
    ↓
value validation
    ↓
mapper
    ↓
Candle
    ↓
CandlesFeed
    ↓
CandlesFeedRegistry
    ↓
CandlesAcquisitionService
    ↓
ExchangeService.get_candles()
    ↓
Market Analysis

Что намеренно не выполнено

Build 055 намеренно не включает:

  • изменение канонической модели Candle;
  • изменение ExchangeService.get_candles();
  • изменение Market Data Acquisition;
  • изменение Market Analysis;
  • изменение торговой логики;
  • изменение структуры каталогов;
  • дополнительную cleanup-перестройку unrelated-моделей.

Критерии завершения

Build 055 считается завершённым, поскольку:

  • Kline не используется до удаления;
  • KlineBatch не используется до удаления;
  • оба определения удалены;
  • полный test suite проходит;
  • grep по Kline и KlineBatch пустой;
  • grep по get_klines, _kline_from_candle и indicators_legacy пустой;
  • git diff --check чистый.

Итог

Build 055 завершён успешно.

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

Kline — удалён
KlineBatch — удалён
get_klines — отсутствует
_kline_from_candle — отсутствует
indicators_legacy — отсутствует
Full test suite — 779 passed

Следующий этап — финальная архитектурная верификация всей миграции OHLCV Feed.