Тестовое задание "Менеджер учёта расходов"
Вам необходимо реализовать API для учета расходов пользователя.Минимальные требования:
- Регистрация пользователя
- Авторизация пользователя (по токену)
- Транзакции пользователя - CRUD
С помощью транзакций происходит списание, начисление баланса пользователя.
Транзакция должна содержать в себе: сумму*, время*, категорию*, организацию*, описание.
Пользователь должен иметь возможность сортировать, фильтровать транзакции по времени, сумме, дате. - Категории пользователя - CRUD
При регистрации пользователь получает набор стандартных категорий:
"Забота о себе", "Зарплата", "Здоровье и фитнес", "Кафе и рестораны", "Машина", "Образование", "Отдых и развлечения", "Платежи, комиссии", "Покупки: одежда, техника", "Продукты", "Проезд".
Пользователь может изменять/удалять стандартные категории как пожелает, а также создавать свои. - Просмотр профиля пользователя (информация о текущем балансе)
- Статистика пользователя
Реализовать отправку статистики на почту пользователя утром каждый день.
Объём получаемой статистики можете выбрать сами.
Если у Вас есть желание продемонстрировать знание какой-то технологии или подхода, то можно реализовать произвольную дополнительную функциональность на Ваше усмотрение.
Нефункциональные требования:
- Язык программирования: Python 3.10+
- DRF 3+
- Соответствие исходного кода PEP 8
Будет плюсом:
- Docker / Docker Compose
- Деплой проекта
Тестовое задание SQL
Вам дана база данных ноутбуков, которая содержит две таблицы. Таблица notebooks\_brand содержит данные о наименовании брендов ноутбуков. Таблица notebooks\_notebook содержит данные о наименовании ноутбука, его диагонали, ширине, глубине и высоте, а также имеет ссылку на бренд, к которому относится данная модель.Задание:
- Напишите запрос, который подсчитает какое количество ноутбуков представлено в каждом бренде. Отсортируйте данные по убыванию.
- Вам необходимо выделить группы ноутбуков по размерам. Для этого размеры предварительно нужно округлить в большую сторону до ближайшего 0 или 5 и затем сгруппировать по одинаковым размерам, подсчитав количество ноутбуков в каждой группе. Отсортируйте данные по размерам.
СУБД: PostgreSQL
Дамп БД: test_db.dump
В качестве решения принимаются SQL запросы, которые можно разместить в отдельном файле в репозитории, вместе с первой частью тестового задания. Дамп базы и пример ответов размещать не нужно.
- соберите контейнеры
docker-compose up -d --build
- войдите в контейнер
docker exec -it container_name bash
- выполните миграции
python manage.py makemigrations
python manage.py migrate
- Получить доступ к приложению
http://localhost:8000/
- Информация об API
http://localhost:8000/swagger/