84 lines
3.9 KiB
Markdown
84 lines
3.9 KiB
Markdown
# Dzentra
|
||
|
||
Dzentra — модульный монолит автоматической торговой системы с
|
||
Telegram-интерфейсом. В текущем принятом Production scope полностью
|
||
собрана вертикаль Trades Feed: получение сделок, проверка
|
||
последовательности, reconnect/recovery, опциональное сохранение в
|
||
PostgreSQL и восстановление после перезапуска.
|
||
|
||
## Текущий scope
|
||
|
||
- Production ingestion, Consistency, Recovery, persistent checkpoint и
|
||
Startup Recovery реализованы для Trades.
|
||
- Historical Access и deterministic Replay доступны как отдельные API и
|
||
не запускаются автоматически.
|
||
- REST-потоки Quotes и Candles продолжают использоваться Trading/UI.
|
||
Новые WebSocket Runtime, Consistency/Recovery и persistent writer
|
||
wiring для них пока не подключены.
|
||
- Retention и создание месячных партиций выполняются только явным вызовом.
|
||
- Обычный запуск приложения требует PostgreSQL для журнала и balance
|
||
snapshots, даже если Trade Stream и Market Data Storage выключены.
|
||
|
||
Подробное фактическое состояние описано в
|
||
[архитектуре Trades Feed](docs/architecture/trades_feed.md).
|
||
|
||
## Быстрый старт существующего checkout
|
||
|
||
Требуются Python 3.12, доступный PostgreSQL и Telegram Bot Token. Команды
|
||
выполняются из корня репозитория:
|
||
|
||
```bash
|
||
python3.12 -m venv app/.venv
|
||
app/.venv/bin/python -m pip install --upgrade pip
|
||
app/.venv/bin/python -m pip install -r app/requirements-dev.txt
|
||
test -e app/.env || cp app/.env.example app/.env
|
||
```
|
||
|
||
Заполните созданный `app/.env`, не добавляйте его в Git и не
|
||
перезаписывайте уже существующий файл. Затем запустите приложение:
|
||
|
||
```bash
|
||
cd app
|
||
.venv/bin/python -m src.main
|
||
```
|
||
|
||
Настройки режимов, PostgreSQL и безопасный Docker-запуск приведены в
|
||
[эксплуатационном руководстве](docs/operations/trades_feed_runtime.md).
|
||
Более подробная инструкция для разработчика находится в
|
||
[app/README.md](app/README.md).
|
||
|
||
## Обязательные проверки
|
||
|
||
Из корня репозитория:
|
||
|
||
```bash
|
||
./scripts/check_python_types.sh
|
||
app/.venv/bin/python scripts/check_documentation_integrity.py
|
||
```
|
||
|
||
Ожидаемый результат Pyright — `0 errors, 0 warnings`, а documentation
|
||
gate — `issues=0`. Обычная offline-регрессия запускается из `app`:
|
||
|
||
```bash
|
||
cd app
|
||
.venv/bin/python -m pytest -q
|
||
```
|
||
|
||
Default pytest-набор исключает opt-in группы `integration`, `stress` и
|
||
`live`, но включает статическую проверку Pyright. Целевой тест не
|
||
заменяет полный type gate.
|
||
|
||
## Навигация
|
||
|
||
- [Обзор архитектуры](docs/architecture/overview.md)
|
||
- [Структура проекта](docs/architecture/project_structure.md)
|
||
- [Текущая архитектура Trades Feed](docs/architecture/trades_feed.md)
|
||
- [Эксплуатация Trade Stream Runtime](docs/operations/trades_feed_runtime.md)
|
||
- [Архитектура Build 060.30](docs/migrations/build_060_30_architecture.md)
|
||
|
||
## Исторический bootstrap
|
||
|
||
`bootstrap_project.py` — исторический генератор первоначального каркаса.
|
||
Для установки или запуска существующего checkout его использовать не
|
||
нужно.
|