-
Склонировать репозиторий:
git clone https://github.com/eivankin/gpn-backend-test-task
-
Если установлен пакет
just(sudo apt install just), то можно запустить приложение командой:just run-demo
Эта команда включает в себя сборку docker-образа, заполнение базы данных тестовыми примерами и запуск приложения. Сервис будет доступен по адресу http://localhost:8000. Swagger-документация будет доступна по адресу http://localhost:8000/docs. Будут созданы и доступны для авторизации администратор с логином
adminи паролемadmin, а также пользователь с логиномuser_1и паролемuser_1. -
Для запуска без использования
justможно воспользоваться командами:docker compose build application docker compose run --service-ports application sh -c "sleep 1 && uv run alembic upgrade head && uv run python -m scripts.seed_db && uv run python -m app"
run-demo- запуск приложения с заполнением базы данных тестовыми примерами;run- запуск приложения;seed- заполнение базы данных тестовыми примерами;install- установка зависимостей и создание виртуального окружения;build- сборка docker-образа;lint- проверка стиля кода;test- запуск тестов;down- остановка docker-контейнеров;sh- запуск интерактивного bash-сессии внутри docker-контейнера;
Разработать API для управления заметками на FastAPI.
Объект "заметка" имеет следующие поля:
- title - Заголовок длиной не более 256 символов;
- body - Тело не более 65536 символов.
Функционал приложения должен быть следующим:
-
Авторизация пользователя с ролью "User" и ролью "Admin";
-
Авторизованный пользователь системы с ролью "User" должен иметь возможность работать с заметками следующим образом:
- Cоздать заметку;
- Изменить заметку;
- Удалить заметку;
- Получать список всех заметок;
- Получать конкретную заметку;
У пользователя с ролью "User" должны быть права для работы с заметками которые создавал он сам. Делать какие либо действия с заметками, в том числе и просмотр заметок других пользователей, возможность у этой роли быть не должно.
-
Авторизованный пользователь системы с ролью "Admin" должен иметь возможность работать с заметками следующим образом:
- Восстановить удаленную заметку;
- Получить конкретную заметку;
- Получить список всех заметок;
- Получить список всех заметок конкретного пользователя;
-
Все перечисленные действия всех ролей необходимо логгировать в файл;
-
*Добавить юнит-тесты;
-
*Добавить Dockerfile для запуска проекта с помощью docker;
-
Добавить инструкцию запуска проекта в README.md.
Этот проект создан на базе шаблона fastapi-sqlalchemy-template