Quality Control API — это асинхронный веб-сервис для управления партиями готовой продукции и контрольных тестов. Проект демонстрирует практические навыки backend-разработки с применением современных технологий и паттернов проектирования.
- Docker и Docker Compose
- Python 3.11+ (для локальной разработки)
- Клонируйте репозиторий
git clone https://github.com/sk1fix/test-task.git
cd test-task- Настройте переменные окружения
cp example.env .env
# Отредактируйте .env при необходимости (измените переменные SECRET_KEY и ADMIN_KEY для безопасности)# Вы можете сгенерировать ключ с помощью команды ниже
python -c "import secrets; print(secrets.token_hex(32))"- Запустите приложение с помощью Docker Compose
docker-compose up --buildВыполните 1 и 2 действия из пункта выше, при этом в файле .env необходимо поменять значение переменной POSTGRES_HOST с db на localhost
- Запуск базы данных. Переменные из
.envдолжны совпадать с переменными в команде ниже
docker run --name post -e POSTGRES_USER=db_user -e POSTGRES_PASSWORD=db_password -e POSTGRES_DB=example_db -p 5432:5432 -d postgres:latest- Применить миграции
cd app
alembic upgrade head- Запустить приложение (из той же папки)
python main.pyПриложение будет доступно по адресу: http://localhost:5050
После запуска приложения, автоматически сгенерированная документация доступна по следующим адресам:
Swagger UI: http://localhost:5050/docs
ReDoc: http://localhost:5050/redoc
- POST /product - добавление данных готовой продукции
- GET /product/{batch_number} - получение данных продукции по номеру партии
- DELETE /product/{batch_number} - удаление данных (при удалении продукции, удаляются данные о тестировании, если они есть)
- POST /tests/{batch_number} - добавление данных о тестировании по номеру партии продукции
- GET /tests/{batch_number} - получение данных о тестировании по номеру партии
- POST /auth/register - регистрация пользователя для работы с энпоинтами
- POST /auth/login - авторизация пользователя с выдачей JWT токена
В проекте присутствует регистрация и авторизация. Без авторизации пользователь не сможет использовать эндпоинты. При регистрации пользователь можете ввести секретный ключ администратора (ADMIN_KEY в файле .env) и он сможет использовать все эндпоинты. Если пользователь не введет ключ, то ему будут доступны эндпоинты только на получение данных.
При логине пользователю выдается JWT токен, который сохраняется в cokies браузера для того чтобы не повторять авторизацию при каждом запросе.