build 055: remove legacy Kline models
This commit is contained in:
317
docs/migrations/build_055.md
Normal file
317
docs/migrations/build_055.md
Normal 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.
|
||||
Reference in New Issue
Block a user