# DEBUG: тестирование сетевого соединения между двумя клиентами

Документ описывает временный debug-контур для проверки WebRTC соединения между двумя активными WS-сессиями.

## 1) Подготовка


0. Убедись, что в `application.properties` включен параметр:
   `debug.tempApi.enabled=true`
1. Создай файл `.debug-token` в корне проекта на основе `debug-token.example`.
2. В `.debug-token` должна быть одна строка: секретный токен.
3. Перезапусти сервер.

## 2) API debug

Базовый заголовок для всех запросов:

```bash
-H "Authorization: Bearer <YOUR_DEBUG_TOKEN>"
```

### 2.1 Получить список живых клиентов

```bash
curl -s \
  -H "Authorization: Bearer <YOUR_DEBUG_TOKEN>" \
  http://localhost:7070/debug/ws/clients | jq
```

Ответ содержит `sessionId`, `login`, `ip`, `userAgent`, и клиентскую информацию.

### 2.2 Запустить debug-соединение между двумя сессиями

```bash
curl -s -X POST \
  -H "Authorization: Bearer <YOUR_DEBUG_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "initiatorSessionId": "SESSION_ID_A",
    "responderSessionId": "SESSION_ID_B",
    "clearDebugLog": false
  }' \
  http://localhost:7070/debug/ws/connect | jq
```

В ответе придёт `runId`. Его используй для фильтра логов.

### 2.3 Читать последние N debug-логов

```bash
curl -s \
  -H "Authorization: Bearer <YOUR_DEBUG_TOKEN>" \
  "http://localhost:7070/debug/ws/logs?limit=200&runId=<RUN_ID>" | jq
```

## 3) Операционный сценарий “Codex + пользователь”

1. Codex поднимает сервер и сообщает пользователю ссылку на UI.
2. Codex пишет пользователю: **«Запусти двух клиентов и скажи “продолжай”»**.
3. Пользователь запускает два клиента (лучше под разными логинами).
4. Пользователь пишет: **«продолжай»**.
5. Codex:
   - вызывает `/debug/ws/clients`,
   - выбирает 2 сессии,
   - вызывает `/debug/ws/connect`,
   - получает `runId`,
   - читает `/debug/ws/logs?runId=...` и сообщает прогресс.
6. Если соединение не удалось:
   - Codex сообщает ошибки по логам,
   - при необходимости просит перезапустить 2 клиента,
   - повторяет запуск debug-run.

## 4) Какие сообщения считать успехом

- `peer_connection_connected`
- `debug_connection_success`
- `signal_sent_200/210/220` без ошибок

## 5) Что говорить пользователю в ходе прогона (через «колонку»/чат)

Рекомендуемые фразы:

- «Сервер запущен. Запусти двух клиентов и напиши “продолжай”.»
- «Вижу 2 активные сессии, запускаю тест соединения.»
- «Тест запущен, runId=... Сейчас проверяю логи.»
- «Соединение установлено / не установлено. Ниже причины и следующий шаг.»

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

- Механизм временный, не для production-эксплуатации.
- Доступ к debug API имеет любой, кто знает токен.
- Рекомендуется тестить между разными логинами.
