# Stage 07.4.3.6 — Smart Alert Throttling

## 🎯 Цель

Добавить интеллектуальное ограничение отправки Telegram-уведомлений о сильных сигналах (BUY / SELL), чтобы:

* исключить спам при повторяющихся сигналах
* сохранить информативность уведомлений
* не влиять на execution (открытие/закрытие позиций)

---

## ⚙️ Основные изменения

### 1. Cooldown для сигналов

Добавлено ограничение:

* одинаковый сигнал (по ключу) не отправляется чаще, чем раз в N секунд
* по умолчанию:

_strong_alert_cooldown_seconds = 120

---

### 2. Уникальный ключ сигнала

Формируется alert_key:

symbol + strategy + signal + repeat_count + confidence + decision_status + reason

Это позволяет:

* различать похожие сигналы
* не блокировать новые реальные сигналы

---

### 3. Хранение времени отправки

_last_strong_alert_at_by_key: dict[str, float]

Используется time.monotonic() для стабильного расчёта времени.

---

### 4. Подавление повторных alert-ов

Если сигнал приходит повторно в пределах cooldown:

* Telegram-сообщение НЕ отправляется
* создаётся запись в журнале:

event_type = auto_strong_signal_alert_suppressed

---

### 5. Журналирование suppressed событий

Фиксируется:

* сигнал
* инструмент
* стратегия
* confidence
* repeat_count
* оставшийся cooldown

Это позволяет:

* дебажить поведение системы
* анализировать частоту сигналов

---

## 🧠 Архитектура

Важно:

Signal (EventBus)
    ↓
Alert (Telegram)
    ↓
Execution (отдельно)

Throttling применяется только к alert-слою:

* ❌ не влияет на ExecutionEngine
* ❌ не влияет на AutoTradeService
* ❌ не ломает debug режим
* ✅ влияет только на отправку сообщений

---

## 🧪 Проверка

### Сценарий 1 — повтор сигнала

/debug_signal BUY
/debug_signal BUY

Ожидаемо:

* 1-й сигнал → сообщение отправлено
* 2-й сигнал → подавлен (suppressed)

---

### Сценарий 2 — другой сигнал

/debug_signal BUY
/debug_signal SELL

Ожидаемо:

* оба сообщения отправлены

---

### Сценарий 3 — после cooldown

Через 120 сек:

/debug_signal BUY

Ожидаемо:

* сообщение снова отправляется

---

### 📊 Результат

Система:

* не спамит одинаковыми сигналами
* сохраняет реакцию на новые сигналы
* полностью совместима с production execution
* логирует подавленные события

---

## 🔜 Следующий этап:

07.4.3.7 — Alert Priority & Aggregation

🧭 Обновление master-roadmap

В блоке AutoTrade / Alerts:

- Smart alert throttling (cooldown + suppression) — completed

---

## ✅ Коммит

git add .
git commit -m "Stage 07.4.3.6 — Smart alert throttling"