# Инструкция по установке программного обеспечения
# «СВОД» (Сервис Визуализации Опросов и Данных)
**Вид поставки:** исходные коды и конфигурационные шаблоны для развёртывания экземпляра SaaS-сервиса на инфраструктуре заказчика или оператора.
**Назначение документа:** описание процедур подготовки среды, сборки компонентов и запуска для промышленной эксплуатации и для проверочного (тестового) экземпляра.
---
## 1. Общие положения
Программное обеспечение **«СВОД»** реализует модель **SaaS**: доступ эксперта к функциям осуществляется через веб-браузер по защищённому каналу после аутентификации (в том числе по паре **логин — пароль** при регистрации по электронной почте, а также с использованием механизмов, предусмотренных конфигурацией развёртывания: вход через Telegram, одноразовые ссылки и иные способы, описанные в эксплуатационной документации).
Развёртывание выполняется на **виртуальных или физических серверах, расположенных на территории Российской Федерации** (в том числе в **российских дата-центрах**). Использование зарубежных облачных платформ в настоящей инструкции **не предусматривается** и **не описывается**.
---
## 2. Описание технических средств (программно-технический стек)
| Компонент | Технология | Назначение |
|-----------|------------|------------|
| Клиентская часть (SPA) | **React**, среда выполнения **Node.js** (сборка и разработка), пакетный менеджер npm | Пользовательский интерфейс эксперта: авторизация, управление опросами, визуализация результатов, обмен данными по WebSocket |
| Сервер приложений | **Python**, фреймворк **FastAPI**, ASGI-сервер (например, Uvicorn) | REST API, WebSocket, выдача собранного фронтенда, авторизация, бизнес-логика |
| Система управления базами данных | **SQLite** (по умолчанию для испытаний) или **PostgreSQL** (рекомендуется для промышленной эксплуатации) на сервере в РФ | Хранение учётных записей, опросов, ответов, служебных данных |
| Вспомогательные процессы | **Python**, библиотека **aiogram** (версия 3), **Redis** (для конечных автоматов диалогов) | Telegram-бот преподавателя (создание опросов, QR, приглашения), Telegram-бот студента (прохождение опроса) |
Перечень зависимостей конкретных версий фиксируется в файлах `requirements.txt` (backend, боты) и `package.json` (frontend) репозитория исходного кода.
---
## 3. Системные требования
### 3.1. Аппаратные и программные требования к серверу приложений
- **ОС сервера:** дистрибутив GNU/Linux, поддерживаемый организацией-эксплуатантом (размещение на территории РФ).
- **Процессор:** не менее 2 vCPU для минимального испытательного контура; для промышленной нагрузки — по результатам нагрузочного тестирования.
- **Оперативная память:** не менее 4 ГБ для испытательного контура; рекомендуется увеличение при одновременной работе большого числа пользователей WebSocket.
- **Дисковое пространство:** с запасом под базу данных, статические файлы (изображения), журналы и резервные копии.
- **Сеть:** статический или динамический публичный адрес при необходимости доступа из Интернет; настройка TLS на граничном **российском** прокси-сервере (например, Nginx) — по политике информационной безопасности эксплуатанта.
### 3.2. Требования к рабочему месту эксперта (проверочный запуск «через браузер»)
- **ОС рабочей станции:** по усмотрению организации (Windows, Linux, macOS и др.).
- **Браузер:** актуальная версия браузера с поддержкой JavaScript, TLS и WebSocket.
- **Сеть:** доступ к URL развёрнутого экземпляра **СВОД** (в т.ч. по корпоративному VPN при размещении в контуре организации).
Проверочный экземпляр может быть развёрнут на **локальной машине разработчика** или на **выделенной виртуальной машине в дата-центре на территории РФ**: после запуска backend и (при разработке) dev-сервера frontend эксперт открывает в браузере указанный базовый URL, проходит аутентификацию и проверяет функции визуализации и управления опросами.
---
## 4. Зависимости и подготовка среды
1. Установить **Python** версии, совместимой с проектом (см. документацию в репозитории, раздел о версиях Python).
2. Установить **Node.js** и **npm** для сборки клиентской части.
3. При использовании Telegram-ботов: зарегистрировать у оператора мессенджера Telegram два бота (преподаватель / студент), получить токены.
4. При промышленном режиме: развернуть **PostgreSQL** на сервере в РФ, создать пользователя и базу данных, задать строку подключения в переменных окружения.
5. При использовании сценариев с состоянием в ботах: развернуть **Redis** на сервере в РФ.
---
## 5. Установка и сборка (типовой порядок)
### 5.1. Получение исходного кода
Клонирование репозитория или получение архива исходных текстов — по договору поставки или внутреннему регламенту организации. Рабочий каталог должен размещаться на носителе, соответствующем политике ИБ.
### 5.2. Конфигурация
1. Скопировать файл шаблона переменных окружения (`env.example`) в файл `.env`.
2. Заполнить обязательные параметры: токены ботов, `DATABASE_URL`, `BACKEND_URL`, `SECRET_KEY`, параметры CORS, URL для React (`REACT_APP_*`), при необходимости — параметры почтового сервера и ограничений по email.
3. Не размещать файл `.env` в публичных репозиториях; ограничить права доступа на уровне ОС.
### 5.3. Установка зависимостей backend и ботов
В изолированных виртуальных окружениях Python выполнить установку зависимостей из соответствующих `requirements.txt` для каталогов `backend/`, `teacher_bot/`, `student_bot/` согласно скриптам или руководству проекта.
### 5.4. Сборка frontend
В каталоге `frontend/` выполнить установку npm-зависимостей и production-сборку (команда вида `npm ci` и `npm run build`). Результат сборки используется сервером FastAPI для раздачи SPA либо выносится на отдельный веб-сервер — по архитектуре развёртывания.
### 5.5. Инициализация базы данных
При первом запуске backend выполняет инициализацию схемы БД в соответствии с реализацией приложения. При миграциях — использовать предоставленные в репозитории сценарии миграций (при наличии) по отдельной инструкции администратора БД.
### 5.6. Запуск компонентов
- Запуск **ASGI-приложения** (Uvicorn и т.п.) для каталога backend.
- Запуск процессов **teacher_bot** и **student_bot** (отдельные процессы Python).
- Настройка **автозапуска** (systemd, иной оркестратор) — по регламенту эксплуатанта.
- Публикация сервиса наружу через **обратный прокси** (Nginx) на территории РФ с TLS.
### 5.7. Контейнеризация (при наличии в поставке)
Если в комплекте поставки предусмотрены файлы описания контейнеров (Dockerfile, compose), развёртывание выполняется в **контейнерной среде на серверах в РФ** в соответствии с приложенным к поставке описанием. Базовые образы выбираются из доверенных источников и размещаются в контуре, контролируемом эксплуатантом.
---
## 6. Порядок определения стоимости
Стоимость права использования программного обеспечения **«СВОД»** в модели SaaS, стоимость развёртывания отдельного экземпляра на инфраструктуре заказчика, а также стоимость сопровождения определяются **по запросу** к правообладателю (или уполномоченному партнёру) и (или) по **тарифной сетке**, размещённой на официальном сайте сервиса в информационно-телекоммуникационной сети «Интернет» (в пределах домена, указанного правообладателем). В состав поставки могут входить различные уровни функциональности (тарифные планы); актуальные условия фиксируются в договоре и (или) в публичной оферте.
---
## 7. Описание поддержки пользователей с ограничениями жизнедеятельности и (или) ограниченными возможностями
На момент подготовки настоящей инструкции **специализированная поддержка** пользователей с ограничениями жизнедеятельности (далее — ОВЗ) в части адаптированных клиентских приложений, экранных дикторов, полной совместимости с требованиями к доступности интерфейсов **не заявляется** как обязательная функция поставки по умолчанию.
**Рекомендации эксплуатанту:** при развёртывании в организациях с требованиями по доступности — провести оценку соответствия веб-интерфейса действующим нормам (в т.ч. ГОСТ Р 52872 и иным применимым актам), при необходимости заказать доработку тем оформления и разметки у правообладателя или интегратора. Каналы обращения пользователей ОВЗ — те же, что и для остальных пользователей (см. руководство по эксплуатации и описание жизненного цикла); при отдельном договоре возможно выделение приоритетной линии поддержки.
---
## 8. Контроль успешности установки
1. Проверка доступности health-эндпоинта или главной страницы SPA по HTTPS.
2. Успешная аутентификация тестового пользователя (логин/пароль или иной способ).
3. Создание тестового опроса, получение ответа через клиент опроса, обновление панели статистики в реальном времени.
4. Проверка работы WebSocket при открытой странице результатов.
---
## 9. Ответственность и ограничения
Эксплуатант несёт ответственность за соблюдение законодательства Российской Федерации о персональных данных, о связи и иных норм при размещении сервиса, выборе дата-центра на территории РФ и настройке средств защиты информации. Настоящая инструкция не заменяет договор поставки и локальные регламенты информационной безопасности.
# Руководство по эксплуатации программного обеспечения
# «СВОД» (Сервис Визуализации Опросов и Данных)
**Модель поставки:** SaaS (программное обеспечение как услуга) и (или) развёртывание экземпляра на инфраструктуре эксплуатанта.
**Целевая аудитория:** эксперт (преподаватель, организатор мероприятия, администратор опроса), взаимодействующий с системой через веб-интерфейс и (или) через Telegram-бота преподавателя; респондент (студент, участник) — через Telegram-бота студента.
# Инструкция по эксплуатации программного обеспечения
## 1. Назначение и общее описание
**«СВОД»** предназначен для создания интерактивных опросов, сбора ответов аудитории и **визуализации агрегированных результатов в режиме, близком к реальному времени**, в том числе с использованием канала **WebSocket** для обновления диаграмм и показателей без перезагрузки страницы.
Доступ к функциям эксперта осуществляется после **аутентификации**. Поддерживаемые способы входа определяются конфигурацией развёртывания и могут включать:
- регистрацию и вход по **адресу электронной почты и паролю** (с подтверждением почты при включённой политике);
- вход с использованием учётной записи **Telegram** (виджет или сценарии бота);
- **одноразовую ссылку (magic link)** из Telegram-бота преподавателя для входа в веб-кабинет.
Данные обрабатываются на серверах, размещённых у эксплуатанта (**на территории Российской Федерации**, в том числе в **российских дата-центрах**). Использование зарубежных облачных платформ в настоящем руководстве **не предполагается**.
---
## 2. Описание технических средств (кратко для пользователя)
Пользователь взаимодействует с **веб-приложением** (клиент на базе **React**, доставляемый браузеру с сервера приложений). Серверная часть реализована на **Python** с использованием **FastAPI**; обмен данными с интерфейсом результатов опроса может выполняться по протоколу **WebSocket**. Вспомогательно используются **Telegram-боты** на платформе **Python (aiogram)**. Сведения о версиях и полном стеке — в инструкции по установке.
---
## 3. Порядок начала работы эксперта
1. Открыть в браузере URL сервиса **СВОД**, размещённый эксплуатантом (промышленный или испытательный стенд).
2. Выбрать способ входа: **логин и пароль** (форма входа / регистрация), либо сценарий с **Telegram**, либо переход по **одноразовой ссылке** из бота преподавателя — в соответствии с настройками организации.
3. При первом входе по электронной почте — выполнить подтверждение адреса электронной почты по ссылке из письма (если функция включена).
4. После успешной аутентификации открывается **панель управления (дашборд)** опросами.
---
## 4. Основной функционал для эксперта
### 4.1. Создание и настройка опроса
- Создание опроса с указанием наименования и описания (в пределах, заданных политикой сервиса и тарифом).
- Добавление **вопросов** различных типов (в зависимости от версии ПО): единственный выбор, множественный выбор, рейтинг, сетка, числовой ответ, облако слов и др. — по фактическим возможностям сборки.
- Настройка **вариантов ответов**, при необходимости — изображений к вопросам (загрузка и отображение согласно реализации).
- Сохранение черновика, редактирование опубликованного опроса — в соответствии с правилами версии ПО и тарифа.
### 4.2. Активация опроса и доступ респондентов
- **Активация** опроса для приёма ответов (перевод в активное состояние).
- Формирование **ссылки** и (или) **QR-кода** для перехода респондентов в **Telegram-бота студента** с привязкой к идентификатору опроса (сценарий «сканирование QR — старт бота — выбор опроса»).
- Распространение ссылки или демонстрация QR на мероприятии — ответственность эксперта.
### 4.3. Визуализация и аналитика в реальном времени
- Открытие страницы **результатов опроса** в веб-интерфейсе.
- Отображение **агрегированной статистики** по вопросам: распределение ответов, диаграммы (тип визуализации зависит от настройки вопроса и версии ПО).
- **Обновление показателей** при поступлении новых ответов по каналу **WebSocket** (без ручного обновления страницы в типовом режиме).
- Экспорт или дополнительные отчёты — при наличии в конкретной сборке (см. описание функциональных характеристик).
### 4.4. Управление жизненным циклом опроса
- Деактивация опроса (остановка приёма ответов).
- Удаление опроса (если предусмотрено политикой и правами пользователя).
- Просмотр списка опросов, фильтрация по состоянию — в соответствии с интерфейсом версии ПО.
### 4.5. Дополнительные функции (при включении в поставке)
- Корпоративные тарифы, логотип организации, приглашения пользователей — по договору и конфигурации.
- Административные функции — для ролей с расширенными правами (см. отдельные регламенты эксплуатанта).
---
## 5. Роль респондента (студента)
Респондент использует **Telegram-бота студента**: просмотр доступных активных опросов, прохождение опроса, отправка ответов на сервер **СВОД**. Количество попыток и правила повторного прохождения определяются настройками ПО (например, **один ответ на опрос** с одного идентификатора Telegram — при реализации по умолчанию).
---
## 6. Информационная безопасность и персональные данные
Эксперт обязан соблюдать локальные требования по обработке персональных данных, информировать респондентов о целях опроса и правовых основаниях. Парольная политика (длина, смена пароля) может дополняться организационными мерами эксплуатанта.
---
## 7. Порядок определения стоимости
Тарификация доступа к SaaS-функциям **«СВОД»** осуществляется по **тарифной сетке**, опубликованной правообладателем на официальном сайте, и (или) по **коммерческому запросу** (индивидуальное предложение для организаций, корпоративных контуров, объёма ответов и уровня сопровождения). Условия фиксируются в договоре или публичной оферте.
---
## 8. Описание поддержки пользователей с ограничениями жизнедеятельности и (или) ограниченными возможностями
**Заявляемое состояние по умолчанию:** веб-интерфейс и клиент Telegram **не сертифицированы** отдельно как средства, полностью соответствующие всем уровням доступности для всех категорий ОВЗ. Ряд элементов интерфейса может не иметь полной семантической разметки для средств экранного доступа.
**Поддержка:** обращения принимаются через **единый канал поддержки** эксплуатанта (адрес электронной почты, форма на сайте, тикет-система — по фактическому регламенту). Для пользователей ОВЗ рекомендуется указать предпочитаемый способ обратной связи; при наличии ресурсов эксплуатант обеспечивает **консультацию** по доступным способам работы (например, увеличение масштаба отображения в браузере, использование клавиатурной навигации в пределах возможностей интерфейса).
**Перспектива:** доработка доступности может выполняться по отдельному техническому заданию и договору с правообладателем или интегратором.
---
## 9. Обращение в техническую поддержку
В состав обращения рекомендуется включать: идентификатор организации (при корпоративном доступе), время события, браузер и версия, описание шагов воспроизведения, скриншот (без персональных данных респондентов). Сроки реакции определяются **соглашением об уровне сервиса (SLA)** между эксплуатантом и заказчиком или регламентом правообладателя.