Тестовое задание.
Описание задания https://docs.google.com/document/d/1Sw1HdiJ-yJRoNv3HRlN7RN9ifZbCPFFVOCkqFr4cTT4/edit
При реализации тестового задания, из-за единственного эндпоинта было принято
решение использовать "облегченные" структуры проектов FastAPI и aiogram.
Проект разделён на два независимых приложения: backend и bot. Проект можно
запускать как на одной машине, так и разделить на двух отдельных.
Бот получает данные от бекенда по api. Поэтому необходимо реализовать доступность
бекенда в сети интернет для корректного "общения" бота с бекендом.
Для этого можно использовать как станции с статическим ip и выходом в интернет
c настройкой nginx, так и использовать другие методы тунелирования,
например ngrok (обратитесь к инструкции https://ngrok.com/docs/).
Работа бека:
Периодическое обновление бд:
Работа бота:
В телеграм боте введите команду /start и требуемый артикул товара (nm_id)
Запуск проекта:
Клонировать репозиторий и перейти в него в командной строке:
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
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
Автор: К.Гурашкин