build 055: remove legacy Kline models

This commit is contained in:
2026-07-16 10:21:46 +03:00
parent 09f3f66a4e
commit ed69420196
2 changed files with 317 additions and 26 deletions

View File

@@ -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.