07.4.3.17 — Unified Active Screen Lifecycle
This commit is contained in:
84
docs/stages/ROADMAP_UPDATE_07.4.3.17.md
Normal file
84
docs/stages/ROADMAP_UPDATE_07.4.3.17.md
Normal file
@@ -0,0 +1,84 @@
|
||||
# ROADMAP UPDATE — Этап 07.4.3.17
|
||||
|
||||
## Завершено
|
||||
|
||||
### Active Screen Lifecycle
|
||||
- внедрён единый lifecycle основных экранов;
|
||||
- реализовано автоматическое закрытие предыдущего экрана;
|
||||
- устранено накопление Telegram UI-сообщений;
|
||||
- унифицировано поведение всех основных экранов.
|
||||
|
||||
---
|
||||
|
||||
## Обновлённая архитектура
|
||||
|
||||
### ActiveScreenManager
|
||||
Теперь отвечает за:
|
||||
- регистрацию активного экрана;
|
||||
- удаление предыдущего экрана;
|
||||
- переключение UI.
|
||||
|
||||
### LiveScreenRunner
|
||||
Теперь отвечает только за:
|
||||
- автообновление live-данных;
|
||||
- worker loop;
|
||||
- refresh Telegram message.
|
||||
|
||||
### Trading Runtime
|
||||
Теперь полностью независим от UI:
|
||||
- AutoTradeRunner;
|
||||
- DebugTradeRunner;
|
||||
- future push-events.
|
||||
|
||||
---
|
||||
|
||||
## Исправленные разделы
|
||||
|
||||
### Основные экраны
|
||||
- Главная
|
||||
- Мониторинг
|
||||
- Рынок
|
||||
- Портфель
|
||||
- Журнал
|
||||
- Торговля
|
||||
- Система
|
||||
- Автоторговля
|
||||
- Debug Auto
|
||||
|
||||
---
|
||||
|
||||
## Новое поведение системы
|
||||
|
||||
### UI
|
||||
- всегда существует только один основной экран;
|
||||
- при открытии нового старый удаляется автоматически.
|
||||
|
||||
### Background Runtime
|
||||
- продолжает работать независимо от UI;
|
||||
- готов к Telegram push-событиям.
|
||||
|
||||
---
|
||||
|
||||
# Следующий этап
|
||||
|
||||
## Planned
|
||||
|
||||
### Telegram Event Push Layer
|
||||
Планируется внедрение:
|
||||
- уведомлений об открытии позиции;
|
||||
- уведомлений о закрытии позиции;
|
||||
- уведомлений о сигналах;
|
||||
- runtime alerts;
|
||||
- system alerts;
|
||||
- execution events.
|
||||
|
||||
---
|
||||
|
||||
## Архитектурная готовность
|
||||
|
||||
Система теперь готова к:
|
||||
- background runtime;
|
||||
- multi-event notifications;
|
||||
- persistent runtime state;
|
||||
- restart-safe workflows;
|
||||
- production lifecycle management.
|
||||
@@ -0,0 +1,164 @@
|
||||
# Stage 07.4.3.17 - Active Screen Lifecycle & UI Refresh Policy
|
||||
|
||||
### Цель этапа
|
||||
|
||||
Привести Telegram UI к единой архитектуре экранов:
|
||||
|
||||
- в чате существует только один основной экран;
|
||||
- при открытии нового экрана предыдущий автоматически удаляется;
|
||||
- live-экраны продолжают работать независимо от UI;
|
||||
- фоновые процессы не зависят от существования Telegram-сообщения.
|
||||
|
||||
---
|
||||
|
||||
# Проблема до исправления
|
||||
|
||||
## Поведение экранов было разным
|
||||
|
||||
### Автоторговля
|
||||
- открытие другого экрана удаляло экран автоторговли.
|
||||
|
||||
### Мониторинг
|
||||
- повторное открытие удаляло старую копию;
|
||||
- но другие экраны не закрывали мониторинг.
|
||||
|
||||
### Торговля / Система
|
||||
- можно было открыть бесконечное количество копий;
|
||||
- старые экраны не очищались.
|
||||
|
||||
---
|
||||
|
||||
# Целевая архитектура
|
||||
|
||||
## Новая политика UI
|
||||
|
||||
При открытии любого основного экрана:
|
||||
|
||||
1. предыдущий основной экран удаляется;
|
||||
2. новый экран становится активным;
|
||||
3. live-обновления продолжают работать;
|
||||
4. фоновые процессы не останавливаются.
|
||||
|
||||
---
|
||||
|
||||
# Введён ActiveScreenManager
|
||||
|
||||
## Ответственность
|
||||
|
||||
`ActiveScreenManager` теперь управляет:
|
||||
|
||||
- текущим активным экраном;
|
||||
- удалением предыдущего экрана;
|
||||
- переключением между основными UI-разделами.
|
||||
|
||||
---
|
||||
|
||||
# Разделение ответственности
|
||||
|
||||
## ActiveScreenManager
|
||||
|
||||
Отвечает только за lifecycle UI:
|
||||
|
||||
- какой экран сейчас активен;
|
||||
- какой экран удалить;
|
||||
- какой экран зарегистрировать.
|
||||
|
||||
---
|
||||
|
||||
## LiveScreenRunner
|
||||
|
||||
Отвечает только за:
|
||||
|
||||
- автообновление live-экранов;
|
||||
- refresh Telegram message;
|
||||
- worker loop.
|
||||
|
||||
Больше НЕ управляет жизненным циклом экранов.
|
||||
|
||||
---
|
||||
|
||||
## AutoTradeRunner / DebugTradeRunner
|
||||
|
||||
Отвечают только за:
|
||||
|
||||
- фоновые процессы;
|
||||
- runtime state;
|
||||
- сигналы;
|
||||
- торговую логику.
|
||||
|
||||
Больше НЕ зависят от существования Telegram UI.
|
||||
|
||||
---
|
||||
|
||||
# Исправленные обработчики
|
||||
|
||||
Обновлены:
|
||||
|
||||
- home.py
|
||||
- monitoring.py
|
||||
- market.py
|
||||
- portfolio.py
|
||||
- journal.py
|
||||
- trade/main.py
|
||||
- system.py
|
||||
- auto/main.py
|
||||
- debug_auto/main.py
|
||||
|
||||
---
|
||||
|
||||
# Итоговое поведение
|
||||
|
||||
## Теперь работает правильно
|
||||
|
||||
### Любой основной экран:
|
||||
- закрывает предыдущий экран;
|
||||
- оставляет только один UI-экран в чате.
|
||||
|
||||
### Live-экраны:
|
||||
- продолжают обновляться;
|
||||
- не плодят копии сообщений.
|
||||
|
||||
### Автоторговля:
|
||||
- продолжает работать после закрытия UI;
|
||||
- готова к будущим Telegram push-уведомлениям.
|
||||
|
||||
---
|
||||
|
||||
# Архитектурная схема
|
||||
|
||||
```text
|
||||
UI Screen Lifecycle
|
||||
↓
|
||||
ActiveScreenManager
|
||||
↓
|
||||
удаляет предыдущий основной экран
|
||||
↓
|
||||
рендер нового экрана
|
||||
↓
|
||||
Runner обновляет только live-data
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Результат этапа
|
||||
|
||||
## Система стала:
|
||||
|
||||
- предсказуемой;
|
||||
- масштабируемой;
|
||||
- пригодной для push-событий;
|
||||
- пригодной для background runtime;
|
||||
- устойчивой к накоплению Telegram-сообщений.
|
||||
|
||||
---
|
||||
|
||||
# Следующие этапы
|
||||
|
||||
Дальше можно безопасно внедрять:
|
||||
|
||||
- push-уведомления;
|
||||
- сигналы;
|
||||
- алерты;
|
||||
- события открытия/закрытия позиций;
|
||||
- восстановление состояния после рестарта;
|
||||
- runtime monitoring.
|
||||
Reference in New Issue
Block a user