Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Quality Control API

{A238BC16-1475-4A57-B486-4EBFB05E2B85}

Описание проекта

Quality Control API — это асинхронный веб-сервис для управления партиями готовой продукции и контрольных тестов. Проект демонстрирует практические навыки backend-разработки с применением современных технологий и паттернов проектирования.

Технологии

Python FastAPI PostgreSQL JWT Docker SQLAlchemy Alembic Pydantic

🚀 Быстрый старт

Предварительные требования

  • Docker и Docker Compose
  • Python 3.11+ (для локальной разработки)

Установка и запуск

  1. Клонируйте репозиторий
git clone https://github.com/sk1fix/test-task.git
cd test-task
  1. Настройте переменные окружения
cp example.env .env
# Отредактируйте .env при необходимости (измените переменные SECRET_KEY и ADMIN_KEY для безопасности)
# Вы можете сгенерировать ключ с помощью команды ниже
python -c "import secrets; print(secrets.token_hex(32))"
  1. Запустите приложение с помощью Docker Compose
docker-compose up --build

Локальный запуск

Выполните 1 и 2 действия из пункта выше, при этом в файле .env необходимо поменять значение переменной POSTGRES_HOST с db на localhost

  1. Запуск базы данных. Переменные из .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
  1. Применить миграции
cd app
alembic upgrade head
  1. Запустить приложение (из той же папки)
python main.py

Приложение будет доступно по адресу: http://localhost:5050

API документация

После запуска приложения, автоматически сгенерированная документация доступна по следующим адресам:

Swagger UI: http://localhost:5050/docs

ReDoc: http://localhost:5050/redoc

API Endpoints

Products Route

  • POST /product - добавление данных готовой продукции
  • GET /product/{batch_number} - получение данных продукции по номеру партии
  • DELETE /product/{batch_number} - удаление данных (при удалении продукции, удаляются данные о тестировании, если они есть)

Quality Test Route

  • POST /tests/{batch_number} - добавление данных о тестировании по номеру партии продукции
  • GET /tests/{batch_number} - получение данных о тестировании по номеру партии

Authentication

  • POST /auth/register - регистрация пользователя для работы с энпоинтами
  • POST /auth/login - авторизация пользователя с выдачей JWT токена

Возможности

В проекте присутствует регистрация и авторизация. Без авторизации пользователь не сможет использовать эндпоинты. При регистрации пользователь можете ввести секретный ключ администратора (ADMIN_KEY в файле .env) и он сможет использовать все эндпоинты. Если пользователь не введет ключ, то ему будут доступны эндпоинты только на получение данных. При логине пользователю выдается JWT токен, который сохраняется в cokies браузера для того чтобы не повторять авторизацию при каждом запросе.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages