Stage 05.3 - order validation, error handling and journal logging

This commit is contained in:
2026-04-17 13:00:15 +03:00
parent 8e696ef582
commit 295bf176e5
3 changed files with 202 additions and 28 deletions

View File

@@ -0,0 +1,82 @@
# Stage 05.2+ — Interactive Draft Builder (Advanced)
## 📌 Общая цель
Реализовать полноценный интерактивный конструктор черновиков ордеров с UX, приближенным к реальному торговому интерфейсу, но без отправки ордеров на биржу.
## 🚀 Что реализовано
### 1. FSM Flow создания ордера
Пошаговый сценарий:
1. Выбор стороны (BUY / SELL)
2. Выбор типа (MARKET / LIMIT)
3. Выбор количества
4. (если LIMIT) выбор цены
Состояния:
- waiting_side
- waiting_type
- waiting_quantity
- waiting_price
### 2. Экранный UX (edit_message)
- Все шаги происходят в одном сообщении (edit_text)
- Нет “засорения” чата
- Поведение как у мини-приложения внутри Telegram
### 3. Навигация
- Кнопка ⬅️ Назад на каждом этапе
- Кнопка ✖️ Отмена
- Возврат к предыдущему шагу или в экран "Торговля"
### 4. Smart Draft Builder
Количество:
- 25% / 50% / 75% / 100%
- ручной ввод
Цена (LIMIT):
- Bid / Ask / Last
- ручной ввод
### 5. Контекст от биржи
- инструмент (symbol)
- доступный баланс
- ориентир цены
- Bid / Ask / Last
### 6. Валидация
- проверка количества
- проверка цены
- ошибки через ValueError
### 7. Сохранение черновиков
- через OrderDraftsService
- статус: draft
### 8. Экран "Черновики"
- по 3 записи
- пагинация:
- ⏮️ ⬅️ X/Y ➡️
- кнопка: ⬅️ К торговле
### 9. Единый стиль экранов
Формат:
⚡ Торговля — <раздел>
### 10. Режим работы
‼️ Режим черновика
- ордера не отправляются
- безопасный режим
## 📊 Итог
Stage 05.2+:
- FSM builder ✅
- UI через кнопки ✅
- экранный режим ✅
- smart presets ✅
- пагинация ✅
## 🔜 Следующий этап
Stage 05.3 или Stage 06
## 🧾 Commit
Stage 05.2+ - advanced interactive draft builder

View File

@@ -0,0 +1,120 @@
# Stage 05.3 — Order Validation & Error Logging
## 📌 Общая цель
Усилить надежность системы создания ордеров через строгую валидацию, обработку ошибок и логирование всех критичных событий.
---
## 🚀 Что реализовано
### 1. Расширенная валидация ордеров
Добавлены проверки:
- корректность количества (quantity > 0)
- корректность цены (price > 0 для LIMIT)
- обязательность цены для LIMIT ордеров
- допустимость значений
Ошибки агрегируются и возвращаются списком.
---
### 2. Обработка ошибок
Все ошибки:
- перехватываются на уровне handler
- отображаются пользователю
Формат:
❌ Черновик не сохранён
Причины:
• ...
• ...
---
### 3. Логирование ошибок (Journal)
При возникновении ошибок:
- событие записывается в JournalService
- уровень логирования:
- ERROR
- WARNING
- INFO
Примеры событий:
- order_draft_validation_failed
- order_draft_saved
- order_draft_error
---
### 4. Уровни логирования
Добавлена градация:
- INFO — обычные события
- ⚠️ WARNING — потенциальные проблемы
- ❌ ERROR — ошибки
---
### 5. Интеграция с Journal UI
Ошибки отображаются в:
📒 Журнал
Пользователь может:
- видеть последние события
- листать страницы
- различать уровни по emoji
---
### 6. UX при ошибках
- пользователь остаётся в контексте
- ошибки отображаются понятно
- есть возможность начать заново
---
## 🧠 Архитектура
Компоненты:
- OrderDraftsService (валидация)
- JournalService (логирование)
- Telegram handlers (отображение)
---
## 📊 Итог
Stage 05.3 включает:
| Функция | Статус |
|--------|--------|
| Валидация ордера | ✅ |
| Агрегация ошибок | ✅ |
| Логирование | ✅ |
| Уровни логов | ✅ |
| Интеграция с UI | ✅ |
---
## 🔜 Следующий этап
Stage 06:
- подтверждение ордера
- отправка на биржу
- обработка ответа
---
## 🧾 Commit
Stage 05.3 - order validation, error handling and journal logging

View File

@@ -1,28 +0,0 @@
# Stage 05.3 — Order Validation
## Цель
Добавить слой валидации черновика ордера перед сохранением в БД.
## Что реализовано
- `OrderValidationResult`
- `validate_draft()` в `OrderDraftsService`
- проверки:
- сторона BUY / SELL
- тип MARKET / LIMIT
- валидность символа
- количество > 0
- цена для LIMIT
- соответствие цены шагу `tickSize`, если он доступен
## UX
- невалидный draft не сохраняется
- пользователь видит понятный список причин
- в журнале пишется `order_draft_validation_failed`
## Ограничения
- пока нет `minQty`
- пока нет `minNotional`
- пока нет confirm screen
## Следующий этап
- Stage 05.4 — confirmation screen