# ТЗ: Evrone Course — онлайн-школа

Демонстрационная версия документа · категория «Образование» · №06

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

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

Каталог курсов, оплата, плеер с домашками, потоки, базовая CRM учеников.

Продукт про продажу и доставку курсов конечным ученикам. Каталог курсов с лендингами, оплата (разовая, рассрочка, тарифы «сам / с куратором»), плеер курса (видео, текст, тест, домашнее задание), проверка домашек кураторами, потоки с расписанием и дедлайнами, прогресс и сертификаты, базовая CRM учеников (кто купил, кто застрял, кому отправить дожимающее письмо).

## 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. Course

```
title: string
landing_slug: string
modules: has_many
tariffs: jsonb # сам, с куратором
price: integer
```

### 4.2. Enrollment

```
student_id: references
course_id: references
stream_id: references
progress: jsonb
state: enum
```

### 4.3. Homework

```
lesson_id: references
student_id: references
submitted_at: datetime
reviewed_by: references, nullable
state: enum # на проверке, принято, доработать
```

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

1. Ученик покупает курс с лендинга, доступ открывается сразу после оплаты
2. Плеер курса ведёт по урокам - видео, текст, тест, домашнее задание
3. Куратор проверяет домашки и оставляет комментарии
4. Поток идёт по расписанию с дедлайнами, в конце выдаётся сертификат

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

- Эквайринг и рассрочка
- Видеохостинг
- Email-рассылки
- Аналитика прохождения

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

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

## 8. Состав MVP

Один курс — оплата, плеер, домашки, поток.

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

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