From ed69420196aa9df7cc6e5e8874257a2c9e821d17 Mon Sep 17 00:00:00 2001 From: Sergey Date: Thu, 16 Jul 2026 10:21:46 +0300 Subject: [PATCH] build 055: remove legacy Kline models --- app/src/integrations/exchange/models.py | 26 -- docs/migrations/build_055.md | 317 ++++++++++++++++++++++++ 2 files changed, 317 insertions(+), 26 deletions(-) create mode 100644 docs/migrations/build_055.md diff --git a/app/src/integrations/exchange/models.py b/app/src/integrations/exchange/models.py index 0e7a46c..b49f5d5 100644 --- a/app/src/integrations/exchange/models.py +++ b/app/src/integrations/exchange/models.py @@ -88,32 +88,6 @@ class ExchangeMarketStatus: message: str -# Одна свеча 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 - - # Информация о торговой комиссии для инструмента. @dataclass(slots=True) class TradingFee: diff --git a/docs/migrations/build_055.md b/docs/migrations/build_055.md new file mode 100644 index 0000000..a6399dd --- /dev/null +++ b/docs/migrations/build_055.md @@ -0,0 +1,317 @@ +# Build 055 — Удаление legacy-моделей Kline и KlineBatch + +## Статус + +**Завершён** + +--- + +## Цель Build + +Удалить больше не используемые legacy-модели OHLCV: + +```text +Kline +KlineBatch +``` + +из файла: + +```text +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 изменён только: + +```text +src/integrations/exchange/models.py +``` + +Удалены определения: + +```text +Kline +KlineBatch +``` + +Добавлена документация: + +```text +docs/migrations/build_055.md +``` + +Build 055 не изменяет: + +```text +src/integrations/exchange/service.py +src/market_data/acquisition/ +src/trading/market_analysis/ +tests/ +``` + +--- + +## Предварительная проверка зависимостей + +Перед удалением выполнена команда: + +```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] +``` + +Это подтвердило, что модели больше нигде не используются. + +--- + +## Удалённый блок + +Из `src/integrations/exchange/models.py` удалены: + +```python +# Одна свеча 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 +``` + +Остальные модели файла сохранены без изменений. + +--- + +## Проверка компиляции + +Выполнена команда: + +```bash +python -m compileall \ + src/integrations/exchange/models.py +``` + +Результат: + +```text +успешно +``` + +--- + +## Полный regression suite + +Выполнена команда: + +```bash +python -m pytest -q +``` + +Результат: + +```text +779 passed in 2.46s +``` + +Регрессий не обнаружено. + +--- + +## Контроль отсутствия Kline и KlineBatch + +Выполнена команда: + +```bash +grep -RIn \ + --exclude-dir="__pycache__" \ + --exclude="*.pyc" \ + -E "\bKlineBatch\b|\bKline\b" \ + src tests +``` + +Результат: + +```text +пусто +``` + +Это подтверждает полное удаление legacy-моделей OHLCV из исходного кода и тестов. + +--- + +## Контроль отсутствия legacy compatibility-компонентов + +Выполнена команда: + +```bash +grep -RIn \ + --exclude-dir="__pycache__" \ + --exclude="*.pyc" \ + "get_klines\|_kline_from_candle\|indicators_legacy" \ + src tests +``` + +Результат: + +```text +пусто +``` + +--- + +## Проверка форматирования + +Выполнена команда: + +```bash +git diff --check +``` + +Вывод отсутствует. + +Whitespace-ошибок не обнаружено. + +--- + +## Фактический diff + +Перед добавлением документации: + +```text +app/src/integrations/exchange/models.py | 26 -------------------------- +1 file changed, 26 deletions(-) +``` + +--- + +## Архитектурный результат + +После Build 055 legacy OHLCV полностью удалён из моделей Exchange Integration. + +Активная архитектура использует только каноническую модель: + +```text +src.market_data.acquisition.models.candle.Candle +``` + +Текущий путь: + +```text +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 завершён успешно.** + +Текущее состояние: + +```text +Kline — удалён +KlineBatch — удалён +get_klines — отсутствует +_kline_from_candle — отсутствует +indicators_legacy — отсутствует +Full test suite — 779 passed +``` + +Следующий этап — финальная архитектурная верификация всей миграции OHLCV Feed. \ No newline at end of file