


Создание аккаунта пользователя, вход в личный кабинет
Восстановление пароля
Управление базовыми данными профиля
Профиль: контакты, адрес(а) доставки, настройки уведомлений
История заказов и статусы доставок
История участия в лотереях и купленных билетов
Просмотр выигрышей и статуса выдачи приза
Размещение товаров администратором
Создание карточки товара: название, описание, фото/галерея, характеристики
Управление доступностью: наличие, лимиты, снятие с публикации
Категоризация товара (привязка к категориям и тегам)
Витрина товаров с сортировками и быстрым просмотром карточек
Отображение цены, наличия, условий покупки и доставки
Поиск по каталогу
Иерархия категорий и подкатегорий
Фильтры по параметрам (категория, цена, наличие, бренд/тип - по логике товара)
Сортировки (популярное, новое, цена)
Полное описание, галерея фото, характеристики
Отображение наличия и условий покупки
Кнопка добавления в корзину и быстрый переход к оформлению
Корзина: изменение количества, удаление товара, пересчёт итоговой суммы
Оформление заказа: адрес доставки, данные получателя, выбор способа доставки
Подтверждение заказа и статус “принят в работу”
Оплата заказа через платёжное решение
Статусы заказа: создан, оплачен, в обработке, отправлен, доставлен, отменён
Уведомления о смене статуса (email/пуш/внутренние)
Создание розыгрыша для любого товара
Настройка условий: период, количество билетов, цена билета, лимиты участия
Список активных розыгрышей
Карточка розыгрыша: товар, описание, сроки, стоимость билета, прогресс участия
Поиск и фильтрация по лотереям (по категории/статусу/срокам)
Описание приза, фото, условия участия
Сроки и статус розыгрыша
Прогресс: продано билетов / осталось
Кнопка участия: купить билет(ы)
Покупка 1 или нескольких билетов
Ограничения по количеству билетов на пользователя (если задано)
Привязка билетов к аккаунту и отображение в истории участия
Подтверждение оплаты и фиксация участия в розыгрыше
История завершённых розыгрышей
Отображение победителей по каждому розыгрышу
Вывод победителей на главной странице и в истории лотерей
Статус выдачи приза победителю
Фиксация правил выбора победителя
Определение победителя по завершению розыгрыша
Отображение результата в интерфейсе (кто победил, какой розыгрыш, когда)
Встраивание YouTube Live трансляции на страницу розыгрыш
Привязка конкретной трансляции к конкретному розыгрышу
Публичный просмотр трансляции пользователями платформы
Запуск розыгрыша в заданное время
Публикация победителя после завершения трансляции
Управление доставкой для покупок: создание отправки, трекинг, подтверждение получения
Статусы логистики и уведомления пользователю
Сбор данных победителя для доставки/выдачи
Подтверждение вручения приза и фиксация результата в системе
История выдач и статусы по каждому призу
Ручное добавление товаров, изменение карточек, управление фото и описанием
Снятие с публикации, управление наличием и категориями
Создание и настройка условий розыгрышей: время, механика, лимиты, стоимость билета
Контроль активных и завершённых розыгрышей
Публикация результатов и вывод победителей
Просмотр и управление заказами по товарам
Управление статусами заказов и логистикой
Подтверждение получения и завершение заказа
Доходы по товарам
Доходы по лотереям
Учёт комиссий платформы
Отчёты по периодам и ключевым метрикам
Просмотр корзин
История покупок и участие в лотереях
Генерация и структура тикетов
Создание тикетов в рамках розыгрыша
Для каждого розыгрыша создаётся фиксированное или динамическое количество тикетов
Каждый тикет имеет уникальный идентификатор
Тикеты привязываются к конкретному розыгрышу и конкретному товару
Каждый билет получает уникальный номер
Исключается возможность дублирования
Номер фиксируется в базе данных и закрепляется за пользователем после покупки
Пользователь выбирает количество билетов
Стоимость рассчитывается автоматически
После успешной оплаты тикеты закрепляются за аккаунтом пользователя
Возможность задать лимит билетов на одного пользователя
Возможность задать общий лимит билетов на розыгрыш
Автоматическое закрытие продажи при достижении лимита
Тикеты распределяются по порядку покупки
При покупке нескольких билетов пользователю присваивается диапазон номеров
Каждый пользователь видит список своих билетов
В интерфейсе отображается количество купленных билетов
Привязка тикетов к пользователю сохраняется до завершения розыгрыша
Продажа тикетов прекращается по достижению лимита или по времени
Фиксируется итоговое количество проданных билетов
Система рассчитывает победный номер
Победитель определяется автоматически на основе привязки номера билета к пользователю
Результат фиксируется в системе
Победитель отображается на странице розыгрыша
Результат выводится в истории лотерей
Победитель может выводиться на главной странице
Сохраняется информация о количестве проданных тикетов
Сохраняется информация о диапазонах номеров
Сохраняется информация о победном номере
История доступна для просмотра после завершения розыгрыша
Защита от повторной генерации
После определения победителя розыгрыш блокируется
Изменение данных задним числом невозможно
Логи операций
Фиксация времени покупки каждого тикета
Логи формирования победного номера
Запись всех действий в системе для аудита
React
MobX
ASP.NET Core 8.0 - основа серверного приложения.
Entity Framework Core 8.0.3 - ORM для работы с базой данных.
Hangfire - инструмент для фоновых задач.
MailKit и MimeKit - для работы с электронной почтой.
MediatR - реализация шаблона CQRS для управления запросами и командами.
Swashbuckle - для автоматической генерации документации API (OpenAPI/Swagger).
AWS SDK - для интеграции с сервисами Amazon S3.
Twilio - для работы с WhatsApp.
PostgreSQL - основная база данных.
Docker - для контейнеризации приложения.
Serilog - для логирования и мониторинга.