Stage 04.1 - storage foundation (PostgreSQL) and system dashboard UI
This commit is contained in:
15
docs/decisions/0009-postgres-storage-foundation.md
Normal file
15
docs/decisions/0009-postgres-storage-foundation.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# 0009 — PostgreSQL for Storage Foundation
|
||||
|
||||
## Решение
|
||||
Сразу строить storage foundation на PostgreSQL, а не на SQLite.
|
||||
|
||||
## Причины
|
||||
- проект ориентирован на рост
|
||||
- нужны нормальные concurrent writes и server DB
|
||||
- удобно хранить JSONB payloads
|
||||
- это снижает риск будущей миграции БД
|
||||
|
||||
## Последствия
|
||||
- dev setup становится чуть сложнее
|
||||
- зато storage строится сразу на целевой БД
|
||||
- journal, snapshots и order flow будут развиваться без смены движка
|
||||
88
docs/roadmap/master-roadmap.md
Normal file
88
docs/roadmap/master-roadmap.md
Normal file
@@ -0,0 +1,88 @@
|
||||
# Dzentra Bot — Master Roadmap
|
||||
|
||||
## Stage 01 — Bootstrap
|
||||
✔ структура проекта
|
||||
✔ virtualenv
|
||||
✔ запуск приложения
|
||||
✔ базовый bootstrap
|
||||
|
||||
---
|
||||
|
||||
## Stage 02 — System layer
|
||||
✔ экран ⚙️ Система
|
||||
✔ базовая диагностика
|
||||
✔ структура компонентов
|
||||
|
||||
---
|
||||
|
||||
## Stage 03 — Exchange Integration
|
||||
|
||||
### 03.1
|
||||
✔ mock exchange
|
||||
|
||||
### 03.2
|
||||
✔ время / timestamp
|
||||
|
||||
### 03.3
|
||||
✔ exchangeInfo
|
||||
✔ валидация символа
|
||||
|
||||
### 03.4
|
||||
✔ private auth (HMAC, headers, timestamp)
|
||||
|
||||
### 03.5
|
||||
✔ первый private endpoint (account)
|
||||
✔ баланс
|
||||
✔ экран 💼 Портфель
|
||||
✔ UX улучшения
|
||||
|
||||
---
|
||||
|
||||
## Stage 04 — Storage / Journal (NEXT)
|
||||
|
||||
### 04.1
|
||||
⏳ storage foundation
|
||||
|
||||
### 04.2
|
||||
⏳ journal / event log
|
||||
|
||||
### 04.3
|
||||
⏳ repositories
|
||||
|
||||
### 04.4
|
||||
⏳ UI integration
|
||||
|
||||
---
|
||||
|
||||
## Stage 03.6 — Orders (после storage)
|
||||
⏳ orders skeleton
|
||||
⏳ dry-run режим
|
||||
⏳ валидация ордеров
|
||||
|
||||
---
|
||||
|
||||
## Stage 05 — Trading logic
|
||||
⏳ стратегии
|
||||
⏳ риск-менеджмент
|
||||
⏳ сигналы
|
||||
|
||||
---
|
||||
|
||||
## Stage 06 — Automation
|
||||
⏳ авто-режим
|
||||
⏳ планировщик
|
||||
⏳ фоновые задачи
|
||||
|
||||
---
|
||||
|
||||
## Stage 07 — Observability
|
||||
⏳ логирование
|
||||
⏳ алерты
|
||||
⏳ метрики
|
||||
|
||||
---
|
||||
|
||||
## Текущий статус
|
||||
|
||||
👉 Stage 03.5 — завершён
|
||||
👉 Следующий шаг: Stage 04.1
|
||||
75
docs/roadmap/stage-03-roadmap.md
Normal file
75
docs/roadmap/stage-03-roadmap.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# Stage 03 — Exchange Integration Roadmap
|
||||
|
||||
## Цель
|
||||
Интеграция с биржей:
|
||||
- public API
|
||||
- private API
|
||||
- базовый UI
|
||||
|
||||
---
|
||||
|
||||
## 03.1 — Mock exchange
|
||||
✔ имитация данных
|
||||
✔ структура клиента
|
||||
|
||||
---
|
||||
|
||||
## 03.2 — Time handling
|
||||
✔ обработка timestamp
|
||||
✔ локализация времени
|
||||
|
||||
---
|
||||
|
||||
## 03.3 — exchangeInfo
|
||||
✔ загрузка символов
|
||||
✔ валидация символа
|
||||
✔ защита от ошибок API
|
||||
|
||||
---
|
||||
|
||||
## 03.4 — Private auth
|
||||
✔ API key
|
||||
✔ secret
|
||||
✔ HMAC подпись
|
||||
✔ headers
|
||||
✔ timestamp
|
||||
|
||||
---
|
||||
|
||||
## 03.5 — Account + Portfolio
|
||||
✔ private endpoint `/account`
|
||||
✔ парсер баланса
|
||||
✔ сервисный слой
|
||||
✔ экран 💼 Портфель
|
||||
|
||||
### UX улучшения
|
||||
✔ иконки валют
|
||||
✔ сортировка
|
||||
✔ скрытие нулевых балансов
|
||||
✔ группировка активов
|
||||
|
||||
---
|
||||
|
||||
## Результат Stage 03
|
||||
|
||||
✔ бот умеет:
|
||||
- получать цену
|
||||
- валидировать символ
|
||||
- работать с private API
|
||||
- получать баланс
|
||||
- отображать портфель
|
||||
|
||||
---
|
||||
|
||||
## Ограничения
|
||||
|
||||
- нет ордеров
|
||||
- нет хранения
|
||||
- нет журнала
|
||||
- нет стратегии
|
||||
|
||||
---
|
||||
|
||||
## Следующий шаг
|
||||
|
||||
➡ Stage 04 — Storage / Journal
|
||||
72
docs/roadmap/stage-04-roadmap.md
Normal file
72
docs/roadmap/stage-04-roadmap.md
Normal file
@@ -0,0 +1,72 @@
|
||||
# Stage 04 — Storage / Journal Roadmap
|
||||
|
||||
## Цель
|
||||
Добавить слой хранения и журналирования.
|
||||
|
||||
---
|
||||
|
||||
## 04.1 — Storage foundation
|
||||
|
||||
Цель:
|
||||
- подключить БД
|
||||
- создать базовые модели
|
||||
|
||||
Что добавить:
|
||||
- storage/session.py
|
||||
- storage/schema.py
|
||||
- SQLite
|
||||
|
||||
Сущности:
|
||||
- BalanceSnapshot
|
||||
- JournalEvent
|
||||
- OrderDraft
|
||||
|
||||
---
|
||||
|
||||
## 04.2 — Journal / event log
|
||||
|
||||
Цель:
|
||||
- логировать действия бота
|
||||
|
||||
Что логировать:
|
||||
- ошибки API
|
||||
- запросы
|
||||
- события системы
|
||||
|
||||
---
|
||||
|
||||
## 04.3 — Repositories
|
||||
|
||||
Цель:
|
||||
- хранить данные
|
||||
|
||||
Добавить:
|
||||
- repository balance
|
||||
- repository orders
|
||||
- repository journal
|
||||
|
||||
---
|
||||
|
||||
## 04.4 — UI integration
|
||||
|
||||
Цель:
|
||||
- показать storage в интерфейсе
|
||||
|
||||
Добавить:
|
||||
- статус БД в ⚙️ Система
|
||||
- последние события
|
||||
- snapshot баланса
|
||||
|
||||
---
|
||||
|
||||
## Результат Stage 04
|
||||
|
||||
✔ данные сохраняются
|
||||
✔ есть история
|
||||
✔ есть журнал
|
||||
|
||||
---
|
||||
|
||||
## Следующий шаг
|
||||
|
||||
➡ Stage 03.6 — Orders skeleton
|
||||
142
docs/stages/stage-04-1-storage.md
Normal file
142
docs/stages/stage-04-1-storage.md
Normal file
@@ -0,0 +1,142 @@
|
||||
# Stage 04.1 — Storage Foundation (PostgreSQL) and System Dashboard
|
||||
|
||||
## Цель
|
||||
Подключить слой хранения на PostgreSQL и одновременно привести системный экран к продовому виду (операционный dashboard).
|
||||
|
||||
---
|
||||
|
||||
## Что добавлено
|
||||
|
||||
### Storage
|
||||
- PostgreSQL как основная база данных
|
||||
- подключение через `psycopg`
|
||||
- инициализация схемы при старте приложения
|
||||
- базовые таблицы:
|
||||
- balance_snapshots
|
||||
- journal_events
|
||||
- order_drafts
|
||||
- health check БД
|
||||
|
||||
---
|
||||
|
||||
### System Dashboard (⚙️ Система)
|
||||
Экран системы переработан из технического вывода в операционный статус.
|
||||
|
||||
#### Компоненты системы
|
||||
Добавлен компактный статус всех ключевых частей:
|
||||
|
||||
- Приложение
|
||||
- База данных
|
||||
- Telegram
|
||||
- Биржа (public API + символ)
|
||||
- Аккаунт (private API)
|
||||
|
||||
Поведение:
|
||||
- при 🟢 → только краткий статус
|
||||
- при 🔴 → добавляется описание ошибки
|
||||
|
||||
---
|
||||
|
||||
### Биржа (объединённый статус)
|
||||
Объединены проверки:
|
||||
- доступность public API
|
||||
- валидность символа (exchangeInfo)
|
||||
|
||||
Теперь это один сигнал:
|
||||
- 🟢 Биржа → всё работает
|
||||
- 🔴 Биржа → проблема (API или символ)
|
||||
|
||||
---
|
||||
|
||||
### Аккаунт
|
||||
Добавлен статус private API:
|
||||
|
||||
- проверка API ключей
|
||||
- проверка доступа к аккаунту
|
||||
|
||||
---
|
||||
|
||||
## Блок "🌐 Окружение"
|
||||
|
||||
Экран упрощён до минимально полезного набора параметров:
|
||||
|
||||
🌐 Окружение
|
||||
• приложение: Dzentra Bot 2.0.0
|
||||
• база данных: PostgreSQL 17.9
|
||||
• часовой пояс: Europe/Minsk
|
||||
• режим: ДЕМО аккаунт / РЕАЛЬНЫЙ аккаунт
|
||||
• инструмент: BTC/USD_LEVERAGE
|
||||
|
||||
### Принципы отбора
|
||||
Оставлены только параметры, которые:
|
||||
- влияют на поведение системы
|
||||
- важны для диагностики
|
||||
- критичны для безопасности (режим торговли)
|
||||
|
||||
Удалены:
|
||||
- env
|
||||
- exchange_enabled
|
||||
- exchange_name
|
||||
- os
|
||||
- python
|
||||
|
||||
---
|
||||
|
||||
## Режим работы (важное изменение)
|
||||
|
||||
Вместо технического параметра:
|
||||
|
||||
env: dev
|
||||
|
||||
используется бизнес-понятие:
|
||||
|
||||
режим: ДЕМО аккаунт / РЕАЛЬНЫЙ аккаунт
|
||||
|
||||
Источник:
|
||||
- exchange_testnet
|
||||
|
||||
Зачем:
|
||||
- снижает риск ошибок
|
||||
- сразу понятно, используются ли реальные деньги
|
||||
|
||||
---
|
||||
|
||||
## Отображение PostgreSQL
|
||||
|
||||
Реализовано корректное отображение версии БД:
|
||||
|
||||
PostgreSQL 17.9
|
||||
|
||||
Особенности:
|
||||
- версия берётся напрямую из БД (SELECT version())
|
||||
- из строки извлекается только нужная часть
|
||||
- исключены технические строки типа OK: db=...
|
||||
|
||||
---
|
||||
|
||||
## Архитектурный результат
|
||||
|
||||
После Stage 04.1 система получила:
|
||||
|
||||
- полноценный storage layer (PostgreSQL)
|
||||
- health-check инфраструктуры
|
||||
- единый системный dashboard
|
||||
- разделение:
|
||||
- технических параметров
|
||||
- пользовательского UI
|
||||
|
||||
---
|
||||
|
||||
## Почему это важно
|
||||
|
||||
- система готова к журналированию
|
||||
- можно диагностировать проблемы без логов
|
||||
- UI стал безопасным (режим торговли)
|
||||
- база данных интегрирована как часть системы, а не внешний компонент
|
||||
|
||||
---
|
||||
|
||||
## Что дальше
|
||||
|
||||
- Stage 04.2 — Journal / event log
|
||||
- Stage 04.3 — Repositories
|
||||
Reference in New Issue
Block a user