🧪 Тестовое задание: API-платформа наград пользователям
Цель: реализовать backend-приложение для управления пользователями, начислением наград и отложенными задачами.
📚 Стек технологий
- Django REST Framework
- PostgreSQL
- Celery
- Redis (как брокер для Celery)
- JWT
- CORS и CSRF (по стандартам безопасности)
🧱 Функциональность
🔐 Аутентификация
- Настроить авторизацию по JWT
- Эндпоинты:
POST /api/token/
— получение access/refresh токеновPOST /api/token/refresh/
— обновление токенаPOST /api/token/verify/
— валидация токена- Настроить CORS для доступа с фронта (например,
localhost:3000
) - Настроить CSRF для админки (по желанию)
👤 Пользовательская модель
- Расширить
AbstractUser
- Добавить поле:
coins
:IntegerField
(по умолчанию 0)
⚙️ Админка
- Возможность:
- Создавать пользователей
- Создавать награды (см. ниже)
🧾 API: Получение информации о себе
GET /api/profile/
- Только для авторизованных пользователей
- Ответ:
username
,email
,coins
🎯 Модель: ScheduledReward
- Поля:
user
(ForeignKey
)amount
(IntegerField
)execute_at
(DateTimeField
)- Назначение: запланировать выдачу награды в будущем
⏰ Celery: обработка ScheduledReward
- Настроить Celery + Redis
- При создании
ScheduledReward
— планируется задача - В момент
execute_at
: - Пользователю начисляется
coins
- Создаётся запись в
RewardLog
📝 Модель: RewardLog
- Поля:
user
amount
given_at
📋 API: Список наград
GET /api/rewards/
- Возвращает список всех выданных наград пользователю
➕ (Дополнительно) Запрос награды
POST /api/rewards/request/
- Пользователь может сам запросить награду
- Ограничение: 1 раз в сутки
- При успешном запросе:
- создаётся
ScheduledReward
, которая выполнится через 5 минут
✅ Требования к выполнению
- Использование Docker или
docker-compose
- README с описанием команд запуска и миграций
- Swagger для документации
📤 Формат сдачи
- Ссылка на открытый GitHub-репозиторий
.env
файл, если требуется