# Stage 07.4.3.5 — Debug Commands & Test Mode

## Цель этапа

Добавить безопасный механизм тестирования автоторговли без зависимости от рыночных условий.

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

- принудительно генерировать сигналы BUY / SELL / READY;
- тестировать Telegram-уведомления;
- тестировать Execution Engine;
- проверять состояние автоторговли в реальном времени.

---

## Что реализовано

### 1. Debug Mode через ENV

Добавлен флаг:

```env
DEBUG_ENABLED=true
```

При значении `false`:

- debug-команды полностью отключены;
- любые попытки их вызвать возвращают сообщение "Debug mode выключен".

Это обеспечивает безопасность для production.

---

### 2. Debug API в AutoTradeService

Добавлен метод:

```python
debug_force_signal(...)
```

Позволяет вручную задать:

- signal (BUY / SELL / HOLD)
- confidence
- repeat_count
- reason

Метод:

- обновляет `AutoTradeState`;
- выставляет `decision_status = READY` (для BUY/SELL);
- эмитит событие `auto_decision_changed`.

---

### 3. Интеграция с EventBus

После debug-сигнала:

```text
AutoTradeService
↓
EventBus.emit(...)
↓
AutoTradeRunner
```

Это позволяет тестировать всю цепочку без изменения стратегий.

---

### 4. Мгновенная обработка событий

Добавлен метод:

```python
AutoTradeRunner.process_last_event_now()
```

Он позволяет:

- обработать событие сразу;
- не ждать следующий цикл (`run_cycle`);
- использовать debug-команды в реальном времени.

---

### 5. Telegram Debug Commands

Добавлен handler:

```text
app/src/telegram/handlers/debug.py
```

Доступные команды:

```text
/debug_signal BUY
/debug_signal SELL
/debug_ready
/debug_state
```

---

### 6. Поведение команд

#### `/debug_signal BUY`

- выставляет сигнал BUY;
- делает его READY;
- запускает обработку EventBus;
- отправляет alert (если включён этап 07.4.3.4).

---

#### `/debug_ready`

- shortcut для READY BUY;
- максимальная уверенность;
- используется для быстрого теста execution и alert.

---

#### `/debug_state`

Показывает текущее состояние:

```text
Status
Symbol
Strategy
Risk
Leverage

Signal
Repeats
Confidence
Decision

Position
Entry
PnL
```

---

### 7. Логирование

Добавлено событие:

```text
debug_signal_forced
```

Позволяет:

- отслеживать тестовые действия;
- отделять debug от реальных сигналов.

---

## Изменённые файлы

```text
app/src/core/config.py
app/src/trading/auto/service.py
app/src/trading/auto/runner.py
app/src/telegram/handlers/debug.py
app/src/telegram/routers.py
```

---

## Проверка

### 1. Включить debug

```env
DEBUG_ENABLED=true
```

---

### 2. Запустить приложение

```bash
python -m src.main
```

---

### 3. Открыть автоторговлю

Важно: чтобы runner получил bot/chat_id.

---

### 4. Выполнить команды

```text
/debug_signal BUY
/debug_signal SELL
/debug_ready
/debug_state
```

---

### 5. Ожидаемый результат

- приходит debug confirmation;
- приходит Telegram alert (если READY);
- обновляется UI;
- пишется журнал.

---

## Важное замечание

Debug-режим нельзя оставлять включённым в production:

```env
DEBUG_ENABLED=false
```

Иначе:

- можно форсировать сделки;
- можно обойти стратегию;
- нарушается безопасность.

---

## Ограничения

Пока не реализовано:

- авторизация debug-команд (по user_id);
- rate limit debug-команд;
- отдельный debug-чат;
- UI toggle debug mode.

---

## Результат

Добавлен полноценный test harness для автоторговли.

Теперь можно тестировать:

```text
Strategy → Signal → Decision → EventBus → Runner → Telegram → Execution
```

без ожидания рынка.

---

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

```text
Stage 07.4.3.6 — Position lifecycle & PnL
```

- закрытие позиции;
- расчёт прибыли;
- обновление UI;
- подготовка к Risk Engine.
