# ТЗ: Evrone Cinema — онлайн-кинотеатр

Демонстрационная версия документа · категория «Контент и видео» · №16

> Это демонстрационное техническое задание: оно показывает структуру и глубину
> документа, который передаётся вместе с прототипом. Боевое ТЗ по этому солюшену
> готовится и заменит этот файл.

## 1. Суть решения

Каталог, плеер с адаптивным битрейтом, подписка с пейволлом, транскодинг.

Каталог с метаданными (фильмы/сериалы/сезоны), плеер с адаптивным битрейтом (HLS/DASH), подписка с пейволлом и промо-периодами, профили и «продолжить просмотр», подборки, админка контент-менеджера с транскодинг-пайплайном, аналитика просмотров.

## 2. Технологический стек

| Слой | Решение |
|---|---|
| Backend | Ruby on Rails 8, PostgreSQL |
| Frontend | Hotwire (Turbo + Stimulus), Tailwind CSS |
| Фоновые задачи | Solid Queue |
| Файлы | Active Storage, S3-совместимое хранилище |
| Деплой | Docker, Kamal, production + staging |

## 3. Роли

- Зритель
- Контент-менеджер
- Аналитик

## 4. Модель данных

### 4.1. Title

```
kind: enum # фильм, сериал
metadata: jsonb
seasons: has_many
rights_until: date
```

### 4.2. Subscription

```
user_id: references
plan: enum
state: enum # активна, пробная, отменена
next_charge_at: datetime
```

### 4.3. Playback

```
profile_id: references
title_id: references
position_seconds: integer
finished: boolean
```

## 5. Ключевые сценарии

1. Зритель находит фильм в каталоге и запускает плеер с адаптивным битрейтом
2. Пейволл пускает по активной подписке или промо-периоду
3. Профили внутри аккаунта помнят место остановки
4. Контент-менеджер загружает мастер-файл, он уходит в транскодинг

## 6. Интеграции

- Транскодинг и CDN
- Рекуррентный биллинг
- Аналитика просмотров

## 7. Нефункциональные требования

- Серверный рендеринг, работоспособность ключевых страниц без JavaScript
- Мобильная адаптивность обязательна
- Роли и права проверяются на уровне сервера, а не интерфейса
- Логирование действий пользователей по значимым операциям
- Покрытие тестами моделей и ключевых сценариев
- Развёртывание одной командой, окружения production и staging

## 8. Состав MVP

Каталог + плеер + подписка + админка; транскодинг через облачный сервис, DRM — фаза 2.

## 9. Критерии приёмки

1. Все сценарии из раздела 5 проходят end-to-end на тестовом стенде
2. Роли из раздела 3 видят только то, что им положено
3. Интеграции из раздела 6 работают через слой адаптеров и переключаются конфигурацией
4. Прототип разворачивается из репозитория одной командой
5. Документация по запуску и переменным окружения лежит в README
