# ТЗ: Evrone Exchange — обменник цифровых активов

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

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

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

Обмен пар по курсу провайдера, AML-скоринг, лимиты KYC, панель комплаенса.

Обмен валютных пар по курсу провайдера ликвидности, AML-скоринг транзакций, лимиты по уровням 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. ExchangeOrder

```
pair: string
amount_in: integer
amount_out: integer
rate: decimal
state: enum
```

### 4.2. AmlCheck

```
order_id: references
risk_score: integer
verdict: enum # чисто, проверка, отказ
provider_payload: jsonb
```

### 4.3. Limit

```
kyc_level: integer
daily_amount: integer
monthly_amount: integer
```

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

1. Клиент выбирает пару и получает котировку от провайдера ликвидности
2. Транзакция проходит AML-скоринг до исполнения обмена
3. Лимиты считаются по уровню верификации клиента
4. Комплаенс-офицер разбирает подозрительные операции и замораживает средства

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

- Провайдер ликвидности
- AML-скоринг
- KYC-провайдер
- Блокчейн-ноды

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

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

## 8. Состав MVP

Обмен трёх пар без стакана.

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

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