07.4.3.17 — Unified Active Screen Lifecycle

This commit is contained in:
2026-05-09 16:25:03 +03:00
parent e97dcd372b
commit 3181ac680c
17 changed files with 1032 additions and 424 deletions

View 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.

View File

@@ -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.