# ТЗ: Evrone Booking — платформа бронирований

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

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

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

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

Инвентарь (объекты, места, рейсы), календарь доступности с ценами по датам и сезонам, поиск и выбор, бронь с предоплатой или полной оплатой, правила отмены и возвратов, ваучеры и подтверждения, кабинет владельца инвентаря (тарифы, стоп-продажи, статистика загрузки), channel-менеджер как опция.

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

```
kind: enum # объект, место, рейс
capacity: integer
owner_id: references
rules: jsonb
```

### 4.2. Availability

```
inventory_id: references
date: date
price: integer
stop_sale: boolean
```

### 4.3. Booking

```
inventory_id: references
guest_id: references
period: daterange
state: enum
prepayment: integer
```

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

1. Гость ищет свободные даты и видит цену с учётом сезона
2. Бронь оформляется с предоплатой или полной оплатой
3. Правила отмены считают возврат автоматически
4. Владелец управляет тарифами и стоп-продажами, видит загрузку

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

- Эквайринг
- Channel-менеджер
- Отправка ваучеров
- Календари синхронизации

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

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

## 8. Состав MVP

Один тип инвентаря (посуточная аренда) — календарь, оплата, кабинет владельца.

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

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