ya-andrey92 / expenses_manager_drf

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Задачи

Тестовое задание "Менеджер учёта расходов" Вам необходимо реализовать API для учета расходов пользователя.

Минимальные требования:

  • Регистрация пользователя
  • Авторизация пользователя (по токену)
  • Транзакции пользователя - CRUD
    С помощью транзакций происходит списание, начисление баланса пользователя.
    Транзакция должна содержать в себе: сумму*, время*, категорию*, организацию*, описание.
    Пользователь должен иметь возможность сортировать, фильтровать транзакции по времени, сумме, дате.
  • Категории пользователя - CRUD
    При регистрации пользователь получает набор стандартных категорий:
    "Забота о себе", "Зарплата", "Здоровье и фитнес", "Кафе и рестораны", "Машина", "Образование", "Отдых и развлечения", "Платежи, комиссии", "Покупки: одежда, техника", "Продукты", "Проезд".
    Пользователь может изменять/удалять стандартные категории как пожелает, а также создавать свои.
  • Просмотр профиля пользователя (информация о текущем балансе)
  • Статистика пользователя
    Реализовать отправку статистики на почту пользователя утром каждый день.
    Объём получаемой статистики можете выбрать сами.

Если у Вас есть желание продемонстрировать знание какой-то технологии или подхода, то можно реализовать произвольную дополнительную функциональность на Ваше усмотрение.

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

  • Язык программирования: Python 3.10+
  • DRF 3+
  • Соответствие исходного кода PEP 8

Будет плюсом:

  • Docker / Docker Compose
  • Деплой проекта
Тестовое задание SQL Вам дана база данных ноутбуков, которая содержит две таблицы. Таблица notebooks\_brand содержит данные о наименовании брендов ноутбуков. Таблица notebooks\_notebook содержит данные о наименовании ноутбука, его диагонали, ширине, глубине и высоте, а также имеет ссылку на бренд, к которому относится данная модель.

Задание:

  1. Напишите запрос, который подсчитает какое количество ноутбуков представлено в каждом бренде. Отсортируйте данные по убыванию.
  2. Вам необходимо выделить группы ноутбуков по размерам. Для этого размеры предварительно нужно округлить в большую сторону до ближайшего 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/

About


Languages

Language:Python 98.6%Language:Dockerfile 0.7%Language:Shell 0.7%