Загрузка данных


# Техническое задание на проект «Dub Online»

## 1. Общее описание проекта

### 1.1. Назначение

**Dub Online** — веб-платформа для совместного и индивидуального озвучивания видеоматериалов. Пользователь загружает готовые dub-паки (файлы с нарезанными фрагментами видео и субтитрами с таймингами) или создаёт собственные, а затем озвучивает их — самостоятельно или совместно с другими пользователями в режиме реального времени через сетевые лобби.

### 1.2. Целевая аудитория

- Любители фанатского дубляжа и озвучки
- Команды переводчиков и дикторов-любителей
- Пользователи, желающие потренироваться в озвучке в игровой форме
- Сообщества, занимающиеся локализацией видео

### 1.3. Платформа и доступность

Сайт реализуется как веб-приложение с адаптивной вёрсткой под мобильные устройства. Доступ возможен с ПК, планшетов и смартфонов.

---

## 2. Функциональные требования

### 2.1. Регистрация и авторизация

- Регистрация по электронной почте с подтверждением
- Авторизация по логину/паролю
- Восстановление пароля
- Разделение ролей: **Пользователь** и **Администратор**

### 2.2. Каталог даб-паков

#### Главная страница

- Витрина готовых даб-паков, загруженных администратором
- Карточки паков с превью, названием, тематикой, рейтингом
- Сортировка по:
  - популярности (по количеству озвучек и оценкам)
  - тематике (категории/теги)
- Поиск по названию

#### Страница даб-пака

- Просмотр информации о паке: описание, тематика, длительность, количество фрагментов
- Оценка пака по шкале (например, 1–5 звёзд)
- Раздел комментариев с возможностью отвечать на другие комментарии (древовидная структура)
- Кнопки: «Озвучить в одиночку», «Создать лобби», «Скачать»

### 2.3. Студия дубляжа

Студия дубляжа — основной рабочий интерфейс для озвучивания даб-паков. Доступна в двух режимах: одиночном и сетевом (через лобби).

#### Базовый функционал (бесплатный)

| Функция | Описание |
|---|---|
| Воспроизведение фрагментов | Последовательный показ видеофрагментов с субтитрами |
| Отсчёт до начала записи | Обратный отсчёт (3–2–1) перед стартом записи голоса |
| Запись голоса | Запись с микрофона с привязкой к таймингу фрагмента |
| Встроенный переводчик | Перевод субтитров с любого языка на русский |
| Воспроизведение результата | Прослушивание записанной дорожки поверх оригинальной |
| Нормализация звука | Автоматическая подстройка громкости записанной дорожки относительно оригинальной |
| Экспорт результата | Скачивание готового видео с наложенной озвучкой или отдельной аудиодорожки |

#### Продвинутый функционал (PRO)

| Функция | Описание |
|---|---|
| Обрезка звуковой дорожки | Разделение дорожки на фрагменты с перетаскиванием границ (drag-and-drop) |
| Удаление фрагментов | Удаление отдельных участков звуковой дорожки |
| Сдвиг всей дорожки | Смещение записанной дорожки по таймингу для синхронизации |
| Ручная нормализация | Тонкая настройка уровней громкости по фрагментам |

#### Сетевой режим (лобби)

- Создание лобби: выбор даб-пака, настройка количества участников
- Подключение к лобби по ссылке или коду
- Распределение ролей/фрагментов между участниками
- Синхронизация воспроизведения между участниками
- Запись голосов каждого участника с наложением в общий микс
- Чат внутри лобби (текстовый)

### 2.4. Студия создания паков

Отдельная страница, доступная только пользователям с подпиской PRO. Предназначена для создания собственных даб-паков из произвольных медиафайлов.

#### Процесс создания

1. **Загрузка исходного файла** — пользователь загружает видеофайл
2. **Разбиение звуковой дорожки** — разделение дорожки на голосовые и шумовые/музыкальные компоненты
3. **Нарезка на фрагменты** — разбиение видео на фрагменты по таймингу (с возможностью перетаскивания границ)
4. **Подстановка субтитров** — если файл субтитров (.srt) не предоставлен, пользователь может создать субтитры вручную с привязкой к фрагментам
5. **Экспорт даб-пака** — упаковка фрагментов, субтитров и таймингов в единый даб-пак

### 2.5. Озвучка произвольных медиафайлов

- Пользователь может загрузить любой видеофайл и файл субтитров в формате .srt
- Система автоматически разбирает файл на фрагменты по таймингам субтитров
- Дальше работает стандартный процесс озвучки через студию дубляжа
- **Ограничение:** функция полностью недоступна без подписки PRO

### 2.6. Загрузка и скачивание

- **Скачивание готового результата**: видео с наложенной озвучкой или отдельная аудиодорожка
- **Загрузка даб-паков администратором**: через панель администратора с указанием атрибутов (название, тематика, описание)
- **Загрузка пользовательских даб-паков**: через студию создания паков (PRO)

---

## 3. Пользовательские роли

### 3.1. Пользователь (базовый)

| Возможность | Лимит (бесплатно) | Лимит (PRO) |
|---|---|---|
| Озвучка готовых даб-паков в одиночку | без ограничений | без ограничений |
| Онлайн-озвучка готовых паков (в лобби) | 10 в день | без ограничений |
| Озвучка своих даб-паков в одиночку | 10 в день | без ограничений |
| Онлайн-озвучка своих паков | 5 в день | без ограничений |
| Озвучка произвольных файлов с .srt | недоступно | без ограничений |
| Студия создания паков | недоступно | полный доступ |
| Продвинутые настройки студии дубляжа | недоступно | полный доступ |

**Дополнительно пользователь может:**

- Оценивать даб-паки (рейтинг по звёздам)
- Сортировать паки по популярности и тематике
- Оставлять комментарии и отвечать на чужие
- Создавать лобби для совместной озвучки
- Скачивать результаты озвучки
- Просматривать свой профиль и статистику
- Участвовать в рейтинговой системе

### 3.2. Администратор

- Загрузка новых даб-паков на главную страницу
- Редактирование даб-паков: изменение названия, атрибутов для сортировки, тематики
- Удаление даб-паков
- Модерация комментариев: удаление, редактирование
- Доступ ко всему функционалу пользователя

---

## 4. Рейтинговая система

### 4.1. Метрики качества

Система автоматически оценивает качество дубляжа по показателю **процент попадания в оригинальную звуковую дорожку** — то есть насколько по времени и уровню записанная речь совпадает с ожидаемыми таймингами оригинальной дорожки.

### 4.2. Лидерборд

Лидерборд формируется по двум показателям:

1. **Количественный показатель** — суммарное количество озвученных фрагментов, взвешенное по продолжительности озвучки
2. **Качественный показатель** — средний процент попадания в оригинальную дорожку

### 4.3. Награды

- **Топ-10** пользователей по каждому показателю получают:
  - Специальный значок в мини-профиле
  - Подписку PRO на 6 месяцев

---

## 5. Монетизация

### 5.1. Бесплатный доступ

Базовая озвучка готовых даб-паков в одиночку бесплатна и без ограничений. Все остальные функции ограничены лимитами (см. таблицу в разделе 3.1).

### 5.2. Подписка PRO

**Стоимость:**

| Период | Цена | Скидка |
|---|---|---|
| 1 месяц | 150 ₽ | — |
| 3 месяца | ~400 ₽ | ~11% |
| 6 месяцев | ~600 ₽ | ~33% |
| 12 месяцев | 799 ₽ | ~56% |

**Подписка PRO даёт:**

- Снятие всех дневных лимитов
- Полный доступ к студии создания даб-паков
- Доступ к озвучке произвольных файлов с .srt
- Продвинутые настройки студии дубляжа (обрезка, удаление фрагментов, сдвиг дорожки)
- Дополнительный значок в нике
- Дополнительные параметры кастомизации профиля

---

## 6. Структура страниц

| Страница | Описание |
|---|---|
| Главная | Витрина даб-паков, сортировка, поиск |
| Страница даб-пака | Информация, оценка, комментарии, кнопки озвучки |
| Студия дубляжа | Рабочий интерфейс озвучки (одиночно/онлайн) |
| Студия создания паков | Конструктор даб-паков (PRO) |
| Лобби | Комната для совместной озвучки |
| Профиль пользователя | Статистика, награды, история озвучек |
| Лидерборд | Рейтинговая таблица |
| Панель администратора | Управление паками, модерация комментариев |
| Регистрация/авторизация | Вход и регистрация |

---

## 7. Технические требования (предварительные)

- **Frontend:** SPA-приложение, адаптивная вёрстка (mobile-first)
- **Backend:** REST API, обработка медиафайлов на сервере
- **Хранилище медиа:** объектное хранилище для видеофайлов и даб-паков
- **WebRTC:** для синхронизации лобби и записи голоса в реальном времени
- **База данных:** реляционная (пользователи, паки, комментарии, рейтинги)
- **Переводчик:** интеграция с внешним API перевода

---

Это описание покрывает весь заявленный функционал. Если нужно, могу детализировать любой раздел — например, проработать сценарии взаимодействия в лобби, спецификацию формата даб-пака или ER-схему базы данных.