# Конфигурация

Все настройки опциональны. Приложение работает «из коробки» с разумными значениями по умолчанию.

## Разрешённые команды

Контроль видимости команд в интерфейсе. Только команды из этого списка будут доступны.

```python
# settings.py (production)
MANAGEMENT_UI = {
    "COMMANDS": ["migrate", "collectstatic", "clearsessions"],
}
```

По умолчанию: без фильтра (все команды видны). Если ключ `COMMANDS` отсутствует, разрешены все команды.

Это подход allowlist — доступны только явно перечисленные команды. Для окружений разработки не указывайте ключ `COMMANDS`, чтобы разрешить все команды.

## Таймаут выполнения

Ограничение времени работы команды.

```python
# settings.py
ADMIN_COMMANDS_TIMEOUT = 60  # секунды
```

По умолчанию: `30` секунд. Установите `0` или `None` для отключения таймаута (не рекомендуется).

Команда выполняется в отдельном потоке через `ThreadPoolExecutor`. При превышении таймаута UI возвращает ошибку с частичным выводом, который был захвачен к этому моменту.

## Обрезка вывода

Ограничение размера захваченного stdout/stderr, чтобы браузер не зависал на огромных выводах.

```python
# settings.py
ADMIN_COMMANDS_OUTPUT_HEAD_LINES = 200   # сохранить первые N строк
ADMIN_COMMANDS_OUTPUT_TAIL_LINES = 200   # сохранить последние N строк
```

По умолчанию: `500` для обоих параметров.

Когда вывод превышает `head + tail` строк, середина заменяется уведомлением об обрезке с указанием общего количества строк.

## Все настройки

| Настройка | По умолчанию | Описание |
|---|---|---|
| `MANAGEMENT_UI["COMMANDS"]` | без фильтра | Список разрешённых команд (опустите для всех) |
| `ADMIN_COMMANDS_TIMEOUT` | `30` | Макс. время выполнения в секундах (0 = без лимита) |
| `ADMIN_COMMANDS_OUTPUT_HEAD_LINES` | `500` | Строк от начала вывода |
| `ADMIN_COMMANDS_OUTPUT_TAIL_LINES` | `500` | Строк от конца вывода |
