Files
god_eye/TECHNICAL_SPECIFICATION.md
2025-10-06 09:41:23 +09:00

27 KiB
Raw Permalink Blame History

ТЕХНИЧЕСКОЕ ЗАДАНИЕ

Система удаленного доступа к камерам мобильных устройств "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
Статус: Для согласования с подрядчиком