317 lines
6.4 KiB
Markdown
317 lines
6.4 KiB
Markdown
# 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. |