Skip to content

CrockoMan/bears_test_task

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BEARS Тестовое задание Python-разработчик компании "Интернет медведи"

Тестовое задание.
Описание задания https://docs.google.com/document/d/1Sw1HdiJ-yJRoNv3HRlN7RN9ifZbCPFFVOCkqFr4cTT4/edit

Стек: Pyton, FastAPI, aiogram, sqlalchemy

При реализации тестового задания, из-за единственного эндпоинта было принято решение использовать "облегченные" структуры проектов FastAPI и aiogram. Проект разделён на два независимых приложения: backend и bot. Проект можно запускать как на одной машине, так и разделить на двух отдельных. Бот получает данные от бекенда по api. Поэтому необходимо реализовать доступность бекенда в сети интернет для корректного "общения" бота с бекендом. Для этого можно использовать как станции с статическим ip и выходом в интернет c настройкой nginx, так и использовать другие методы тунелирования, например ngrok (обратитесь к инструкции https://ngrok.com/docs/).

Работа бека:

image

Периодическое обновление бд:

image

Работа бота:
В телеграм боте введите команду /start и требуемый артикул товара (nm_id)

image

image

Запуск проекта:
Клонировать репозиторий и перейти в него в командной строке:

git clone git@github.com:CrockoMan/bears_test_task.git
cd bears_test_task

Cоздать и активировать виртуальное окружение:

python3 -m venv venv
  • Если у вас Linux/macOS

    source venv/bin/activate
    
  • Если у вас windows

    source venv/scripts/activate
    

Установить зависимости из файла requirements.txt:

  • Если у вас Linux/macOS

    python3 -m pip install --upgrade pip
    pip install -r requirements.txt
    
  • Если у вас windows

    python -m pip install --upgrade pip  
    pip install -r requirements.txt
    

Заполнить файл конфигурации .env

ALLOWED_HOSTS= # Разрешенные хосты и при необходимости порты, например 127.0.0.1:8000,localhost:8000,http://194.26.226.134/

POSTGRES_DB= # имя базы данных
POSTGRES_USER= # имя пользователя БД
POSTGRES_PASSWORD= # пароль БД
DB_HOST= # хост, на котором развернута БД
DB_PORT= # порт БД
UPDATE_PERIOD= # Период обновления записей в БД
HTTP_PREFIX="https://card.wb.ru/cards/v1/detail?appType=1&curr=rub&dest=-1257786&spp=30&nm="

BOT_TOKEN= # Токен телеграм бота
URL_BACKEND = # URL расположения бекенда, например 'http://194.26.226.134/'

Для запуска бекенда: Перейти в каталог бекенд и Запустить сервис:

cd backend
uvicorn main:app --reload

Для запуска бота: Перейти в каталог бота и запустить сервис:

cd bot
python bot.py

API бекенд сервиса доступен после запуска

Redoc http://127.0.0.1:8000/docs
Swagger http://127.0.0.1:8000/redoc

Для разворачивания проекта с помощью докер требуется компьютер с предустановленным Docker и Docker-Compose. Инструкция по установке: https://docs.docker.com/
Сборка Docker-образа
Перейдите в каталог проекта, где находится Dockerfile соберите запустите контейнер

cd backend
docker compose -f docker-compose.yml up
cd bot
docker compose -f docker-compose.yml up

Для одновременного запуска бекенда и бота выполните команду из корневой директории проекта

docker compose -f docker-compose.yml up

Автор: К.Гурашкин

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published