# ТЗ: Evrone Marketplace — двусторонняя торговая площадка

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

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

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

Деньги идут через платформу: онбординг мерчантов, сплит-платежи, выплаты.

Ключевое отличие от магазина и классифайда: деньги проходят через платформу. Онбординг и KYC продавцов, кабинет мерчанта (товары, остатки, статистика продаж), общий каталог, корзина с товарами разных продавцов, сплит-платежи (комиссия площадки + выплата мерчанту), взаиморасчёты и отчёты для продавцов, рейтинги, модерация.

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

```
legal_name: string
inn: string
kyc_state: enum # черновик, на проверке, подтверждён
commission_rate: decimal
payout_details: jsonb
```

### 4.2. Order

```
buyer_id: references
sub_orders: has_many # по одному на мерчанта
payment_state: enum
split_amounts: jsonb
```

### 4.3. Payout

```
merchant_id: references
period: daterange
amount: integer
state: enum # запланирована, отправлена, подтверждена
```

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

1. Мерчант проходит онбординг с KYC и получает кабинет с товарами и остатками
2. Покупатель собирает корзину из товаров разных мерчантов и оплачивает одним платежом
3. Платёж делится на комиссию площадки и выплату мерчанту
4. Финансовый контролёр закрывает период и подтверждает выплаты

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

- Платёжный провайдер со сплит-платежами
- Проверка контрагентов
- Электронный документооборот

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

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

## 8. Состав MVP

Одна вертикаль, ~10 продавцов, полный цикл сделки от заказа до выплаты мерчанту.

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

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