Stage 05.7 - trade draft UI restructuring and order context display
This commit is contained in:
@@ -1 +0,0 @@
|
||||
docs_stage-03-3-exchange-info
|
||||
241
docs/stages/stage_05-7-trade-draft-UI-restructuring.md
Normal file
241
docs/stages/stage_05-7-trade-draft-UI-restructuring.md
Normal file
@@ -0,0 +1,241 @@
|
||||
# Stage 05.7 — trade draft UI restructuring and order context display
|
||||
|
||||
## Что сделано
|
||||
|
||||
На этом этапе был завершён крупный блок улучшений сценария создания черновика ордера в разделе **Торговля**.
|
||||
|
||||
Основные изменения:
|
||||
|
||||
- переработан UI сценария нового ордера
|
||||
- вынесены и унифицированы экранные рендеры
|
||||
- вынесены части логики в отдельные файлы
|
||||
- добавлено отображение контекста ордера на ключевых экранах
|
||||
- добавлены валюта котировки и базовый актив в отображение параметров ордера
|
||||
- улучшена работа экранов черновиков
|
||||
- введена общая UI-линия режима аккаунта
|
||||
- подготовлена база для дальнейшей декомпозиции trade-модуля
|
||||
|
||||
---
|
||||
|
||||
## Структурные изменения
|
||||
|
||||
### Разделение сценария нового ордера
|
||||
|
||||
Монолитный сценарий `new_order.py` был разложен на логические части:
|
||||
|
||||
- `new_order_core.py` — общая точка ядра сценария
|
||||
- `new_order_flow.py` — основной FSM flow создания/редактирования черновика
|
||||
- `new_order_navigation.py` — навигационные переходы и back-логика
|
||||
- `new_order_ui.py` — клавиатуры, рендеры экранов, форматирование и список черновиков
|
||||
- `new_order.py` — точка сборки роутеров сценария
|
||||
|
||||
Это позволило уменьшить связанность кода и подготовить модуль к дальнейшему безопасному рефакторингу.
|
||||
|
||||
---
|
||||
|
||||
## UI и UX улучшения
|
||||
|
||||
### 1. Единый стиль экранов Trade
|
||||
|
||||
Интерфейс экранов нового ордера приведён к единому стилю:
|
||||
|
||||
- единый заголовок
|
||||
- единая строка режима аккаунта
|
||||
- единый формат шагов сценария
|
||||
- единый стиль ошибок и подтверждений
|
||||
|
||||
### 2. Отображение контекста ордера
|
||||
|
||||
На экранах сценария теперь показываются:
|
||||
|
||||
- количество с базовым активом
|
||||
пример: `0.01 BTC`
|
||||
- цена с валютой котировки
|
||||
пример: `84500.00 USD`
|
||||
- сумма ордера с валютой котировки
|
||||
пример: `845.00 USD`
|
||||
|
||||
### 3. Улучшение экранов ручного ввода
|
||||
|
||||
Для ручного ввода количества и цены теперь отображаются:
|
||||
|
||||
- шаг
|
||||
- минимальный допустимый ввод
|
||||
- оценочная сумма ордера
|
||||
- пример корректного значения
|
||||
- ориентир цены с валютой котировки
|
||||
|
||||
### 4. Улучшение экрана подтверждения
|
||||
|
||||
На шаге подтверждения черновика теперь выводятся:
|
||||
|
||||
- инструмент
|
||||
- сторона
|
||||
- тип ордера
|
||||
- количество с активом
|
||||
- цена или ориентир цены
|
||||
- итоговая сумма ордера
|
||||
|
||||
---
|
||||
|
||||
## Логика ордера
|
||||
|
||||
### Контекст входа в ордер
|
||||
|
||||
Сервис формирования черновика теперь возвращает расширенный `OrderEntryContext`, в котором учитываются:
|
||||
|
||||
- `balance_currency`
|
||||
- `quote_currency`
|
||||
- `base_currency`
|
||||
- `reference_price`
|
||||
- `available_balance`
|
||||
- `bid_price`
|
||||
- `ask_price`
|
||||
- `last_price`
|
||||
|
||||
### Валюты и активы
|
||||
|
||||
Добавлена корректная работа с:
|
||||
|
||||
- `base_currency` — актив инструмента
|
||||
- `quote_currency` — валюта котировки
|
||||
|
||||
Это позволило явно показывать пользователю, в каких единицах отображаются:
|
||||
|
||||
- количество
|
||||
- цена
|
||||
- сумма
|
||||
|
||||
### Защита от некорректного символа инструмента
|
||||
|
||||
Если биржа не возвращает `base_asset` или `quote_asset`, сервис больше не продолжает работу молча, а:
|
||||
|
||||
- логирует ошибку
|
||||
- поднимает исключение
|
||||
- предотвращает некорректный расчёт контекста ордера
|
||||
|
||||
---
|
||||
|
||||
## Черновики
|
||||
|
||||
### Список черновиков
|
||||
|
||||
Экран последних черновиков был обновлён и приведён к общему стилю.
|
||||
|
||||
Поддерживается:
|
||||
|
||||
- список последних записей
|
||||
- пагинация
|
||||
- открытие карточки черновика
|
||||
- переход в редактирование
|
||||
- возврат назад
|
||||
|
||||
### Детальный экран черновика
|
||||
|
||||
На экране конкретного черновика теперь корректно отображаются:
|
||||
|
||||
- количество с активом
|
||||
- цена с валютой
|
||||
- статус
|
||||
- время создания
|
||||
|
||||
---
|
||||
|
||||
## Навигация и FSM
|
||||
|
||||
### Улучшение сценарных переходов
|
||||
|
||||
Были исправлены и стабилизированы переходы между шагами:
|
||||
|
||||
- side → type
|
||||
- type → quantity
|
||||
- quantity → price
|
||||
- price → confirm
|
||||
- manual quantity back
|
||||
- manual price back
|
||||
- confirm back
|
||||
|
||||
### Поддержка edit mode
|
||||
|
||||
Сценарий редактирования черновика теперь использует тот же улучшенный UI и повторно использует общий flow.
|
||||
|
||||
---
|
||||
|
||||
## Общая UI инфраструктура
|
||||
|
||||
### Единая mode line
|
||||
|
||||
Строка режима аккаунта была унифицирована через общую функцию:
|
||||
|
||||
- один источник правды
|
||||
- единое отображение на разных экранах
|
||||
- отсутствие дублирования в нескольких обработчиках
|
||||
|
||||
---
|
||||
|
||||
## Документация
|
||||
|
||||
Добавлен файл:
|
||||
|
||||
- `docs/terminology.md`
|
||||
|
||||
Он фиксирует соответствие между:
|
||||
|
||||
- терминологией биржи
|
||||
- терминологией UI бота
|
||||
- внутренними именами в коде
|
||||
|
||||
Это нужно для снижения путаницы перед следующими этапами развития торгового модуля.
|
||||
|
||||
---
|
||||
|
||||
## Какие файлы были затронуты
|
||||
|
||||
### Trade / order draft
|
||||
- `app/src/telegram/handlers/trade/new_order.py`
|
||||
- `app/src/telegram/handlers/trade/new_order_core.py`
|
||||
- `app/src/telegram/handlers/trade/new_order_flow.py`
|
||||
- `app/src/telegram/handlers/trade/new_order_navigation.py`
|
||||
- `app/src/telegram/handlers/trade/new_order_ui.py`
|
||||
- `app/src/telegram/handlers/trade/main.py`
|
||||
|
||||
### Trading domain
|
||||
- `app/src/trading/orders/models.py`
|
||||
- `app/src/trading/orders/service.py`
|
||||
|
||||
### Общий UI / menu / handlers
|
||||
- `app/src/telegram/ui/`
|
||||
- `app/src/telegram/keyboards/reply.py`
|
||||
- `app/src/telegram/handlers/start.py`
|
||||
- `app/src/telegram/handlers/home.py`
|
||||
- `app/src/telegram/handlers/system.py`
|
||||
- `app/src/telegram/handlers/market.py`
|
||||
- `app/src/telegram/handlers/portfolio.py`
|
||||
- `app/src/telegram/handlers/auto.py`
|
||||
- `app/src/telegram/handlers/journal.py`
|
||||
|
||||
### Docs
|
||||
- `docs/terminology.md`
|
||||
|
||||
---
|
||||
|
||||
## Результат этапа
|
||||
|
||||
После завершения Stage 05.7 модуль trade draft flow стал:
|
||||
|
||||
- понятнее по структуре
|
||||
- стабильнее по FSM-переходам
|
||||
- чище по UI
|
||||
- информативнее для пользователя
|
||||
- готовым к следующему этапу декомпозиции и UX-улучшений
|
||||
|
||||
---
|
||||
|
||||
## Что подготовлено для следующего этапа
|
||||
|
||||
Этот этап подготовил основу для:
|
||||
|
||||
- отображения пути формируемого ордера на каждом шаге
|
||||
- дальнейшего дробления trade-модуля
|
||||
- выноса navigation/drafts/ui в ещё более чистую структуру
|
||||
- перехода к терминологии, ближе к терминологии биржи
|
||||
Reference in New Issue
Block a user