connection fixes

This commit is contained in:
2025-10-06 09:41:23 +09:00
parent 4ceccae6ce
commit fa55367e68
361 changed files with 24633 additions and 6206 deletions

561
TECHNICAL_SPECIFICATION.md Normal file
View File

@@ -0,0 +1,561 @@
# ТЕХНИЧЕСКОЕ ЗАДАНИЕ
## Система удаленного доступа к камерам мобильных устройств "GodEye"
### Версия: 1.0
### Дата: 6 октября 2025 г.
---
## 1. ОБЩИЕ ПОЛОЖЕНИЯ
### 1.1 Наименование системы
**GodEye Signal Center** - система удаленного доступа к камерам мобильных устройств через WebRTC с централизованным управлением.
### 1.2 Назначение системы
Система предназначена для организации удаленного доступа операторов к камерам Android устройств в режиме реального времени через веб-интерфейс.
### 1.3 Цели разработки
- Обеспечение безопасного удаленного доступа к камерам мобильных устройств
- Централизованное управление подключениями и сессиями
- Масштабируемая архитектура для поддержки множественных подключений
- Минимальная задержка передачи видео (< 500ms)
---
## 2. ХАРАКТЕРИСТИКИ ОБЪЕКТА АВТОМАТИЗАЦИИ
### 2.1 Краткие сведения об объекте
- **Тип системы**: Распределенная система реального времени
- **Область применения**: Удаленный мониторинг, техническая поддержка, безопасность
- **Пользователи**: Операторы мониторинга, администраторы системы
- **Устройства**: Android смартфоны/планшеты, десктопные рабочие станции
### 2.2 Функциональные требования
#### 2.2.1 Основные функции
1. **Регистрация и аутентификация устройств**
- Уникальная идентификация Android устройств
- Регистрация операторов с правами доступа
- Система разрешений и контроля доступа
2. **Управление камерой**
- Запрос доступа к камере устройства
- Переключение между типами камер (основная, фронтальная, широкоугольная, телеобъектив)
- Контроль качества видеопотока
- Завершение сессий
3. **Видеотрансляция**
- WebRTC peer-to-peer соединение
- Адаптивное качество в зависимости от пропускной способности
- Поддержка разрешений: 480p, 720p, 1080p
- Кодеки: H.264, VP8, VP9
4. **Мониторинг и логирование**
- Отслеживание состояния устройств
- Логирование всех операций
- Статистика использования
- Система уведомлений
#### 2.2.2 Дополнительные функции
1. **Администрирование**
- Панель управления системой
- Управление пользователями и устройствами
- Мониторинг производительности
- Конфигурация системы
2. **Безопасность**
- Шифрование всех соединений (TLS/SSL)
- Аутентификация устройств по токенам
- Аудит действий пользователей
- Контроль сессий
---
## 3. АРХИТЕКТУРА СИСТЕМЫ
### 3.1 Компоненты системы
#### 3.1.1 Backend Server (Node.js)
- **Технологии**: Node.js, Express.js, Socket.IO
- **Функции**:
- Сигнальный сервер для WebRTC
- Управление сессиями и устройствами
- REST API для управления
- Система логирования
- **Порт**: 3001 (конфигурируемый)
#### 3.1.2 Android Client Application
- **Технологии**: Kotlin, Android SDK, WebRTC Android
- **Функции**:
- Регистрация в системе
- Управление камерой устройства
- WebRTC видеопоток
- Обработка команд переключения камер
- **Минимальная версия Android**: API 21 (Android 5.0)
#### 3.1.3 Desktop Operator Application
- **Технологии**: Electron, HTML5, CSS3, JavaScript
- **Функции**:
- Интерфейс оператора
- Управление подключениями к устройствам
- Просмотр видеопотоков
- Переключение камер
- **Платформы**: Windows 10+, macOS 10.14+, Linux (Ubuntu 18.04+)
#### 3.1.4 Web Demo Interface
- **Технологии**: HTML5, CSS3, JavaScript, Socket.IO
- **Функции**:
- Демонстрационный интерфейс
- Тестирование функциональности
- Имитация Android устройства и оператора
### 3.2 Схема взаимодействия
```
Android Device <--WebSocket--> Backend Server <--WebSocket--> Desktop Operator
| | |
| | |
Camera API Session Video Display
WebRTC Management WebRTC
Stream Device Registry Controls
```
---
## 4. ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ
### 4.1 Требования к Backend Server
#### 4.1.1 Функциональные требования
- **Протоколы**: HTTP/HTTPS, WebSocket (Socket.IO)
- **API**: RESTful API + Socket.IO events
- **База данных**: В памяти (session storage) с возможностью подключения PostgreSQL/MongoDB
- **Логирование**: Winston с ротацией логов
- **Конфигурация**: JSON файлы + переменные окружения
#### 4.1.2 Socket.IO Events
**Входящие события:**
- `register:android` - регистрация Android устройства
- `register:operator` - регистрация оператора
- `camera:request` - запрос доступа к камере
- `camera:response` - ответ устройства на запрос камеры
- `camera:switch` - переключение типа камеры
- `camera:disconnect` - завершение сессии
- `webrtc:offer` - WebRTC offer
- `webrtc:answer` - WebRTC answer
- `webrtc:ice-candidate` - ICE кандидаты
- `ping` - проверка соединения
**Исходящие события:**
- `register:success/error` - результат регистрации
- `device:connected/disconnected` - изменение статуса устройства
- `camera:request` - передача запроса камеры
- `camera:stream-ready` - готовность видеопотока
- `camera:denied` - отказ в доступе
- `session:status-update` - обновление статуса сессии
- `webrtc:offer/answer/ice-candidate` - WebRTC сигнализация
#### 4.1.3 REST API Endpoints
**Операторы:**
- `GET /api/operators/devices` - список доступных устройств
- `POST /api/operators/camera/request` - запрос камеры
- `POST /api/operators/camera/:sessionId/switch` - переключение камеры
- `DELETE /api/operators/camera/:sessionId` - завершение сессии
- `GET /api/operators/sessions` - активные сессии оператора
**Администрирование:**
- `GET /api/admin/stats` - статистика системы
- `GET /api/admin/health` - состояние системы
- `GET /api/admin/devices` - все устройства
- `GET /api/admin/sessions` - все сессии
- `POST /api/admin/cleanup` - очистка неактивных сессий
**Мониторинг:**
- `GET /api/status` - общий статус системы
### 4.2 Требования к Android Application
#### 4.2.1 Функциональные требования
- **Разрешения**: CAMERA, RECORD_AUDIO, INTERNET, ACCESS_NETWORK_STATE
- **Архитектура**: MVVM с использованием Android Architecture Components
- **WebRTC**: Последняя стабильная версия WebRTC Android
- **Socket.IO**: Socket.IO Android Client
#### 4.2.2 Основные классы и функции
**MainActivity:**
- Основной экран приложения
- Управление разрешениями
- Отображение статуса подключения
- Список активных сессий
**SocketManager:**
- Подключение к серверу
- Обработка Socket.IO событий
- Отправка ответов на запросы камеры
**CameraManager:**
- Инициализация камеры
- Переключение между камерами
- Управление параметрами видео
**WebRTCManager:**
- Создание peer connection
- Обработка offer/answer
- Управление ICE кандидатами
- Потоковая передача видео
#### 4.2.3 Пользовательский интерфейс
- **Главный экран**: Device ID, статус подключения, настройки сервера
- **Экран сессий**: Список активных запросов и сессий
- **Настройки**: URL сервера, качество видео, разрешения
### 4.3 Требования к Desktop Operator
#### 4.3.1 Функциональные требования
- **Framework**: Electron (последняя LTS версия)
- **UI Framework**: Собственный CSS/JavaScript
- **WebRTC**: Встроенный в Chromium
- **Архитектура**: Main process + Renderer process
#### 4.3.2 Основные модули
**ConfigManager:**
- Управление настройками приложения
- Сохранение конфигурации
- Валидация параметров
**SocketManager:**
- Подключение к backend серверу
- Обработка событий
- Переподключение при обрывах
**DeviceManager:**
- Отображение списка устройств
- Управление подключениями
- Фильтрация и поиск
**SessionManager:**
- Управление активными сессиями
- Отображение статусов
- История операций
**VideoManager:**
- Отображение видеопотоков
- Управление качеством
- Фильтры изображения
#### 4.3.3 Пользовательский интерфейс
**Главное окно:**
- Панель подключения (статус, настройки)
- Список доступных устройств
- Область просмотра видео
- Панель управления камерой
- Логи операций
**Дополнительные окна:**
- Настройки приложения
- История сессий
- Справочная информация
---
## 5. ТРЕБОВАНИЯ К ПРОИЗВОДИТЕЛЬНОСТИ
### 5.1 Пропускная способность
- **Минимальная**: 1 Мбит/с для SD качества (480p)
- **Рекомендуемая**: 5 Мбит/с для HD качества (720p)
- **Оптимальная**: 10 Мбит/с для Full HD (1080p)
### 5.2 Задержка
- **WebRTC соединение**: < 500ms
- **Команды управления**: < 100ms
- **Отклик интерфейса**: < 50ms
### 5.3 Масштабируемость
- **Одновременные устройства**: до 100
- **Одновременные операторы**: до 50
- **Активные сессии**: до 30
- **Время работы без перезагрузки**: 24/7
### 5.4 Ресурсы сервера
- **ОЗУ**: минимум 2 ГБ, рекомендуется 8 ГБ
- **CPU**: минимум 2 ядра, рекомендуется 4 ядра
- **Сеть**: 100 Мбит/с
- **Дисковое пространство**: 10 ГБ для логов
---
## 6. ТРЕБОВАНИЯ К БЕЗОПАСНОСТИ
### 6.1 Шифрование
- **WebSocket соединения**: WSS (WebSocket Secure)
- **WebRTC**: DTLS (по умолчанию)
- **REST API**: HTTPS
- **Конфигурационные файлы**: шифрование чувствительных данных
### 6.2 Аутентификация
- **Устройства**: уникальный Device ID + токен регистрации
- **Операторы**: логин/пароль + сессионные токены
- **Администраторы**: двухфакторная аутентификация
### 6.3 Авторизация
- **Ролевая модель**: администратор, оператор, устройство
- **Права доступа**: по устройствам и функциям
- **Аудит**: логирование всех действий
### 6.4 Защита данных
- **Персональные данные**: минимальный объем сбора
- **Видеопотоки**: не сохраняются на сервере
- **Логи**: автоматическая очистка через 30 дней
- **Backup**: шифрованные резервные копии конфигурации
---
## 7. ТРЕБОВАНИЯ К НАДЕЖНОСТИ
### 7.1 Отказоустойчивость
- **Автоматическое переподключение** при обрыве связи
- **Graceful shutdown** с сохранением состояния
- **Обработка ошибок** с информативными сообщениями
- **Восстановление сессий** после сбоев
### 7.2 Мониторинг
- **Health checks** для всех компонентов
- **Метрики производительности** в реальном времени
- **Система алертов** при критических событиях
- **Логирование** с различными уровнями детализации
### 7.3 Резервное копирование
- **Конфигурация**: ежедневное автоматическое резервирование
- **Логи**: архивирование и ротация
- **Состояние системы**: snapshot при критических изменениях
---
## 8. ТРЕБОВАНИЯ К ИНТЕРФЕЙСАМ
### 8.1 Пользовательский интерфейс
#### 8.1.1 Desktop Operator Application
- **Современный дизайн**: Material Design или аналогичный
- **Адаптивность**: масштабирование под разные разрешения
- **Темная/светлая тема**: переключение в настройках
- **Локализация**: русский и английский языки
- **Доступность**: поддержка screen readers
#### 8.1.2 Android Application
- **Material Design 3**: соответствие последним гайдлайнам Google
- **Адаптивность**: поддержка планшетов и различных размеров экранов
- **Простота использования**: минимальное количество действий для основных функций
- **Обратная связь**: четкие индикаторы состояния и прогресса
#### 8.1.3 Web Demo Interface
- **Responsive design**: работа на мобильных и десктопных устройствах
- **Cross-browser compatibility**: Chrome, Firefox, Safari, Edge
- **Интерактивность**: real-time обновления интерфейса
- **Отладочная информация**: детальные логи для разработчиков
### 8.2 API интерфейсы
#### 8.2.1 REST API
- **OpenAPI 3.0 спецификация**: полная документация API
- **Стандартные HTTP коды**: правильное использование статусов
- **JSON формат**: все запросы и ответы
- **Версионирование**: поддержка версий API
- **Rate limiting**: защита от злоупотреблений
#### 8.2.2 WebSocket API
- **Документация событий**: полный список с примерами
- **Схемы данных**: JSON Schema для всех событий
- **Обработка ошибок**: стандартизированные коды ошибок
- **Heartbeat**: механизм проверки соединения
---
## 9. ТРЕБОВАНИЯ К ТЕСТИРОВАНИЮ
### 9.1 Модульное тестирование
- **Backend**: покрытие кода минимум 80%
- **Android**: unit тесты для бизнес-логики
- **Desktop**: тестирование основных модулей
- **Автоматизация**: запуск тестов при каждом коммите
### 9.2 Интеграционное тестирование
- **API тестирование**: все endpoints и сценарии
- **WebSocket тестирование**: все события и error cases
- **WebRTC тестирование**: установка соединений и качество
- **Cross-platform**: тестирование на различных ОС
### 9.3 Нагрузочное тестирование
- **Одновременные подключения**: до максимальных значений
- **Долговременная работа**: 24 часа непрерывной работы
- **Деградация сервиса**: поведение при превышении лимитов
- **Memory leaks**: отсутствие утечек памяти
### 9.4 Безопасности тестирование
- **Penetration testing**: поиск уязвимостей
- **Authentication bypass**: проверка обхода аутентификации
- **Data validation**: валидация всех входных данных
- **SSL/TLS**: проверка конфигурации шифрования
---
## 10. ТРЕБОВАНИЯ К ДОКУМЕНТАЦИИ
### 10.1 Техническая документация
- **Архитектура системы**: диаграммы и описания компонентов
- **API документация**: полная OpenAPI спецификация
- **Database schema**: структура данных
- **Deployment guide**: инструкции по развертыванию
### 10.2 Пользовательская документация
- **Руководство администратора**: установка, настройка, обслуживание
- **Руководство оператора**: работа с desktop приложением
- **Инструкция для пользователей**: настройка Android приложения
- **FAQ**: часто задаваемые вопросы и решения
### 10.3 Документация разработчика
- **Setup guide**: настройка среды разработки
- **Code style**: стандарты кодирования
- **Contributing guidelines**: правила участия в проекте
- **Changelog**: история изменений
---
## 11. ТРЕБОВАНИЯ К ПОСТАВКЕ
### 11.1 Исходный код
- **Git repository**: структурированная история коммитов
- **Branching strategy**: GitFlow или аналогичная стратегия
- **Code review**: все изменения проходят ревью
- **CI/CD**: автоматическая сборка и тестирование
### 11.2 Сборки приложений
- **Backend**: Docker образ + npm package
- **Android**: APK файл + source code
- **Desktop**: инсталляторы для Windows, macOS, Linux
- **Web Demo**: статические файлы
### 11.3 Конфигурация
- **Environment templates**: примеры конфигурационных файлов
- **Docker Compose**: готовая конфигурация для развертывания
- **Kubernetes manifests**: для enterprise развертывания
- **Monitoring setup**: конфигурация систем мониторинга
---
## 12. КРИТЕРИИ ПРИЕМКИ
### 12.1 Функциональные критерии
- Регистрация и подключение Android устройств
- Регистрация и подключение операторов
- Запрос и получение доступа к камере
- Переключение между типами камер
- Стабильная WebRTC видеотрансляция
- Завершение сессий и отключение устройств
- Административные функции
- Система логирования и мониторинга
### 12.2 Технические критерии
- Задержка видео < 500ms
- Стабильная работа 24 часа
- Поддержка 30 одновременных сессий
- Покрытие тестами > 80%
- ✅ Безопасность соединений (HTTPS/WSS)
- ✅ Cross-platform совместимость
### 12.3 Качественные критерии
- ✅ Удобство использования интерфейсов
- ✅ Полнота документации
- ✅ Качество кода (code review passed)
- ✅ Отсутствие критических уязвимостей
- ✅ Соответствие техническому заданию
---
## 13. УПРАВЛЕНИЕ ПРОЕКТОМ
### 13.1 Этапы разработки
#### Этап 1: Архитектура и Backend (4 недели)
- Проектирование архитектуры системы
- Разработка Backend Server
- Создание REST API и Socket.IO events
- Базовое тестирование API
#### Этап 2: Android Application (3 недели)
- Разработка Android клиента
- Интеграция с Backend
- Реализация WebRTC функциональности
- Тестирование на различных устройствах
#### Этап 3: Desktop Operator (3 недели)
- Разработка Electron приложения
- Пользовательский интерфейс
- Интеграция с Backend
- WebRTC клиент для операторов
#### Этап 4: Интеграция и тестирование (2 недели)
- Интеграционное тестирование
- Нагрузочное тестирование
- Исправление критических багов
- Подготовка документации
#### Этап 5: Финализация и поставка (1 неделя)
- Финальное тестирование
- Подготовка релизных сборок
- Документация и инструкции
- Передача заказчику
### 13.2 Команда проекта
- **Tech Lead / Architect** - 1 человек
- **Backend Developer** - 1 человек
- **Android Developer** - 1 человек
- **Frontend Developer** - 1 человек
- **QA Engineer** - 1 человек
### 13.3 Коммуникации
- **Ежедневные standups**: 15 минут
- **Еженедельные ретроспективы**: 1 час
- **Демонстрации заказчику**: каждые 2 недели
- **Отчеты о прогрессе**: еженедельно
---
## 14. РИСКИ И ОГРАНИЧЕНИЯ
### 14.1 Технические риски
- **WebRTC совместимость** между различными платформами
- **Производительность** при высокой нагрузке
- **Сетевые ограничения** (NAT, firewall)
- **Безопасность** peer-to-peer соединений
### 14.2 Проектные риски
- **Изменение требований** в процессе разработки
- **Недоступность экспертизы** по WebRTC
- **Задержки в тестировании** на реальных устройствах
- **Интеграционные проблемы** между компонентами
### 14.3 Митигация рисков
- **Прототипирование** критических компонентов
- **Раннее тестирование** на целевых устройствах
- **Резервные планы** для критических функций
- **Регулярная коммуникация** с заказчиком
---
## 15. ЗАКЛЮЧЕНИЕ
Данное техническое задание определяет полный объем работ по созданию системы удаленного доступа к камерам мобильных устройств "GodEye". Система должна обеспечивать безопасную, надежную и производительную работу в условиях реального времени.
Все компоненты системы должны быть разработаны в соответствии с современными стандартами и best practices, обеспечивать высокое качество пользовательского опыта и соответствовать требованиям безопасности.
---
**Документ подготовлен:** 6 октября 2025 г.
**Версия:** 1.0
**Статус:** Для согласования с подрядчиком