# ТЗ: Evrone Wallet — криптокошелёк

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

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

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

Мультивалютные балансы, ввод-вывод, обмен, KYC, ledger с двойной записью.

Кастодиальный мультивалютный кошелёк: балансы, ввод/вывод с очередью подтверждений, обмен внутри кошелька с котировками и спредом, история операций, KYC-онбординг, ledger с двойной бухгалтерской записью под капотом.

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

```
user_id: references
currency: string
balance: integer # минимальные единицы
kyc_level: integer
```

### 4.2. LedgerEntry

```
account_id: references
debit: integer
credit: integer
operation_id: references # двойная запись
```

### 4.3. Operation

```
kind: enum # ввод, вывод, обмен
state: enum # создана, в очереди, подтверждена, отклонена
quote: jsonb
```

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

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

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

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

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

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

## 8. Состав MVP

Две валюты — ввод, вывод, обмен.

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

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