Stage 04.1 - storage foundation (PostgreSQL) and system dashboard UI

This commit is contained in:
2026-04-14 21:38:52 +03:00
parent 1deb676585
commit c35deeaefa
15 changed files with 657 additions and 90 deletions

View 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 будут развиваться без смены движка

View 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

View 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

View 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

View 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