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