Процесс работы со сделками
Процесс управления сделками
1. Пользователь создаёт сделку
↓
2. Фронтенд валидирует и отправляет в API
↓
3. Бэкенд создаёт запись в базе данных
↓
4. Фоновая задача создаёт Telegram-чат
↓
5. Инициализация смарт-контракта в блокчейне
↓
6. WebSocket уведомляет все стороны в реальном времени
↓
7. Сделка активируется и становится видимой пользователям
Обработка транзакций
SmartDeal обрабатывает блокчейн-транзакции через надёжный конвейер:
- Создание транзакции — Пользователь инициирует депозит/платёж
- Отправка в блокчейн — Транзакция отправляется в сеть TON
- Мониторинг — Автоматическая проверка статуса транзакции
- Подтверждение — Смарт-контракт подтверждает, обновляет статус сделки
- Уведомление — Обновление в реальном времени отправляется всем участникам
Это обеспечивает надёжную обработку транзакций даже во время перегрузки сети.
Система хранения файлов
Все файлы, связанные со сделками, используют децентрализованное хранилище IPFS:
- Постоянное хранение — Файлы нельзя удалить или изменить
- Адресация по содержимому — Каждый файл имеет уникальный криптографический ID
- Распределённый доступ — Файлы доступны через любой IPFS-шлюз
- Поддерживаемые форматы — PDF, JPEG, PNG документы
Чат и обмен сообщениями
Каждая сделка имеет автоматически созданный Telegram-чат:
- Создаётся автоматически при старте сделки
- Сообщения пересылаются между пользователями и администраторами
- Полная история сообщений сохраняется
- Поддержка медиа и файлов
- Доставка сообщений в реальном времени
Фоновые задачи
Бэкенд использует 9 фоновых задач, работающих с разными интервалами:
- CreateDealChats — Автоматическое создание Telegram-чатов
- ForwardMessages — Двунаправленная маршрутизация сообщений
- SendTransactions — Отправка блокчейн-транзакций
- GetTransactions — Мониторинг статуса транзакций
- GetWalletAddress — Получение данных TON-кошелька
- GetUserPhoto — Загрузка изображений профиля
- LogMessages — Сохранение истории чата
- SendNotifications — Уведомления пользователей в реальном времени
Эти задачи работают независимо и обрабатывают асинхронные операции без блокировки основного API.