build 055: remove legacy Kline models
This commit is contained in:
@@ -88,32 +88,6 @@ class ExchangeMarketStatus:
|
|||||||
message: str
|
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)
|
@dataclass(slots=True)
|
||||||
class TradingFee:
|
class TradingFee:
|
||||||
|
|||||||
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