Stage 05.3 - order validation, error handling and journal logging
This commit is contained in:
82
docs/stages/stage-05-2-plus-interactive-draft-builder.md
Normal file
82
docs/stages/stage-05-2-plus-interactive-draft-builder.md
Normal 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
|
||||
120
docs/stages/stage-05-3-order-validation-and-logging.md
Normal file
120
docs/stages/stage-05-3-order-validation-and-logging.md
Normal 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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user