# Runbook Operativo

## Timezone
Todo el sistema opera en **UTC**. Reset pérdida diaria: 00:00 UTC.

## Alertas y acciones

| Alerta | Severidad | Acción |
|--------|-----------|--------|
| WebSocket caído > 30s | WARNING | Auto-reconnect; si > 5 min → circuit breaker |
| API error rate > 5% | HIGH | Pausar trading; revisar logs |
| API weight > 80% | WARNING | Reducir frecuencia workers |
| Pérdida diaria ≥ límite | CRITICAL | Lock automático + notificación |
| Heartbeat perdido | CRITICAL | Watchdog cancela órdenes + alerta |
| Reconciliación fallida | CRITICAL | NO operar hasta resolver manualmente |
| Flash crash > 5% en 5 min | HIGH | Circuit breaker 15 min |

## Reiniciar workers

```bash
docker-compose restart worker-market worker-strategy worker-orders celery-beat
```

Al reiniciar, el worker ejecuta **reconciliación automática** antes de operar.

## Reconciliación manual

```bash
docker-compose exec api python -c "
from app.services.reconciliation_service import reconciliation_service
import asyncio
asyncio.run(reconciliation_service.reconcile_all())
"
```

## Kill switch

1. Dashboard → botón EMERGENCIA
2. API: `POST /api/v1/emergency-stop {"active": true}` con header `X-TOTP-Code`
3. Telegram: comando `/stop` (si configurado)

Rearme: solo admin con 2FA, requiere `POST /api/v1/operations/circuit-breaker/reset` con header `X-TOTP-Code`.

## 2FA operativo

Configurar después del primer login:

```bash
POST /api/v1/auth/2fa/setup
POST /api/v1/auth/2fa/enable?code=123456
```

Enviar `X-TOTP-Code: 123456` en acciones críticas:

- `POST /api/v1/emergency-stop`
- `PUT /api/v1/risk/config`
- `POST /api/v1/operations/circuit-breaker/reset`
- `POST /api/v1/operations/reconcile`
- `GET /api/v1/operations/go-no-go`
- `GET /api/v1/operations/reports/tax-export`

Auditoría:

```bash
GET /api/v1/operations/audit
```

## Restaurar backup PostgreSQL

```bash
pg_restore -d tradingbinance backup_YYYYMMDD.dump
# Luego ejecutar reconciliación
```

## Contactos
Definir en `.env`: `ONCALL_EMAIL`, `TELEGRAM_CHAT_ID`
