Compare commits
1 Commits
main
...
342182b7d8
| Author | SHA1 | Date | |
|---|---|---|---|
| 342182b7d8 |
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