# 🎥 GodEye Signal Center - Веб-демонстрация

Интерактивная веб-демонстрация системы удаленного доступа к камерам Android устройств.

## 🚀 Быстрый старт

1. **Запуск сервера:**
```bash
cd backend/
node src/server.js
```

2. **Открыть демонстрацию:**
Перейти на http://localhost:3001

## 📋 Возможности демонстрации

### 🏠 Обзор
- Общая статистика системы в реальном времени
- Мониторинг подключений и активных сессий
- Системные логи с фильтрацией по типам

### 📱 Android Device Simulator
- Симуляция Android устройства
- Настройка информации об устройстве (модель, версия, доступные камеры)
- Обработка входящих запросов на доступ к камере
- Управление активными сессиями

### 👨‍💻 Operator Panel
- Симуляция рабочего места оператора
- Просмотр доступных устройств
- Создание запросов на доступ к камерам
- Переключение между типами камер
- Управление активными сессиями

### 🛠️ Admin Panel  
- Административные функции системы
- Детальная статистика и мониторинг
- Управление устройствами и сессиями
- Принудительное завершение соединений
- Очистка старых данных

### 🌐 WebRTC Test
- Тестирование WebRTC соединений
- Демонстрация работы с локальной камерой
- Проверка сигнализации между устройством и оператором

## 🔧 Как использовать

### Сценарий 1: Полный цикл подключения

1. **Подготовка устройства:**
   - Перейти на вкладку "Android Device"
   - Ввести Device ID (например: `demo-device-001`)
   - Настроить информацию об устройстве
   - Нажать "Подключить устройство"

2. **Подключение оператора:**
   - Перейти на вкладку "Operator"
   - Ввести Operator ID (например: `demo-operator-001`)
   - Нажать "Подключиться как оператор"

3. **Создание сессии:**
   - В разделе "Доступные устройства" найти ваше устройство
   - Выбрать тип камеры
   - Нажать "Запросить камеру"

4. **Обработка на устройстве:**
   - Вернуться на вкладку "Android Device"
   - В разделе "Входящие запросы" появится запрос
   - Нажать "Принять" или "Отклонить"

5. **Управление сессией:**
   - Переключение между камерами
   - Завершение сессии с любой стороны

### Сценарий 2: Тестирование WebRTC

1. Выполнить шаги 1-4 из Сценария 1
2. Перейти на вкладку "WebRTC Test"
3. Нажать "Запустить локальное видео"
4. Разрешить доступ к камере браузера
5. Наблюдать за установлением WebRTC соединения

## 📊 API Endpoints для тестирования

### Базовые
- `GET /api/status` - общая статистика
- `GET /api/devices` - список устройств

### Операторы (требуют заголовок `X-Operator-Id`)
- `GET /api/operators/devices` - доступные устройства
- `POST /api/operators/camera/request` - запрос камеры
- `POST /api/operators/camera/{sessionId}/switch` - переключение камеры
- `DELETE /api/operators/camera/{sessionId}` - завершение сессии

### Администрирование
- `GET /api/admin/stats` - детальная статистика
- `GET /api/admin/health` - проверка здоровья системы
- `POST /api/admin/cleanup` - очистка старых данных

## 🔍 Мониторинг и отладка

### Логи
- Все действия отображаются в разделе "Системные логи"
- Цветовая маркировка: info (синий), warning (желтый), error (красный)
- Автоматическое ограничение количества записей

### WebSocket Events
Основные события, которые можно наблюдать:
- `register:android` / `register:operator` - регистрация клиентов
- `camera:request` / `camera:response` - запросы и ответы камеры
- `camera:switch` - переключение камер
- `webrtc:*` - WebRTC сигнализация

### Браузерная консоль
Дополнительная отладочная информация доступна в DevTools браузера (F12)

## 🎯 Возможности демонстрации

### ✅ Реализовано
- Полная симуляция Android устройства и оператора
- WebSocket коммуникация в реальном времени
- REST API с аутентификацией
- WebRTC сигнализация (без реального видео)
- Административные функции
- Система мониторинга и логирования

### 🔄 В разработке
- Полная WebRTC интеграция с видеопотоками
- Аутентификация и авторизация
- База данных для хранения сессий
- Масштабирование на несколько серверов

## 🐛 Устранение неполадок

### Сервер не запускается
```bash
# Проверить занятость порта
netstat -tlnp | grep :3001

# Изменить порт в .env файле
echo "PORT=3002" > .env
```

### Ошибки WebSocket соединения
- Убедиться что сервер запущен
- Проверить консоль браузера на ошибки
- Обновить страницу

### Проблемы с WebRTC
- Разрешить доступ к камере в браузере
- Использовать HTTPS для production (для getUserMedia)
- Проверить наличие STUN/TURN серверов

## 📝 Технические детали

### Стек технологий
- **Backend:** Node.js, Express, Socket.IO
- **Frontend:** Vanilla JavaScript, WebRTC API
- **Стили:** Custom CSS с адаптивным дизайном

### Архитектура WebSocket событий
```javascript
// Регистрация
register:android → register:success
register:operator → register:success

// Управление камерой
camera:request → camera:response
camera:switch → (обработка переключения)
camera:disconnect → camera:disconnected

// WebRTC сигнализация
webrtc:offer → webrtc:answer
webrtc:ice-candidate → (обработка кандидатов)
```

### Структура REST API
```
/api/
├── status (общедоступные)
├── devices
├── operators/ (требуют X-Operator-Id)
│   ├── devices
│   ├── camera/request
│   ├── sessions
│   └── ...
└── admin/ (администраторские)
    ├── stats
    ├── health
    └── ...
```

## 🤝 Разработка

Для добавления новых функций в демонстрацию:

1. **Backend изменения:** Править файлы в `src/`
2. **Frontend:** Обновить `public/demo.js` и `public/index.html`
3. **API:** Добавить endpoints в `src/routes/`
4. **Перезапустить сервер** для применения изменений

---

**Примечание:** Это демонстрационная версия для тестирования API и архитектуры. 
Для production использования требуются дополнительные меры безопасности, 
база данных и полная интеграция с реальными Android и Desktop приложениями.