Тестовое задание, платформа для ставок на определнные события. Старался следовать слоистой архитектуре, проект представляет собой 2 микросервиса, запускающиекся отдельно каждый в свое докер контейнере. Общение между сервисами осуществляется через кафку
-
Проект использует make команды, можно поставить себе make, а можно воспользоваться докер командами windows make ну докер думаю у всех есть, как и гит
-
Стянуть проект к себе
git clone https://github.com/rianoneq/betline- открыть 2 терминала, с одного зайти в папку bet_maker, с другого в line_provider
cd betline/bet_makercd betline/line_providerДалее действия дублируются на каждый из терминалов (сервисов)
-
Создать .env в корне проекта рядом с .env.example и заполнить его такими же данными
-
Поднять сервис командой make либо docker
Начать собирать bet_maker после line_provider
-
make
sh make app -
docker
- line_provider
docker compose -f docker_compose/app.yaml -f docker_compose/storages.yaml -f docker_compose/messaging.yaml -p line-provider up -d --build
- bet_maker
docker compose -f docker_compose/app.yaml -f docker_compose/storages.yaml -p bet-maker up -d --build
-
Провести миграции
- make
make migrate
-
docker
- line_provider
docker exec -it line-main-app alembic upgrade heads- bet_maker
docker exec -it bet-main-app alembic upgrade heads
-
Перейти в доки
- Проверить логи
- make
make app-logs
- docker
- line_provider
docker logs -f line-main-app
- bet_maker
docker logs -f bet-main-app
- make
- Запустить тесты
- make
make tests
- docker
- line_provider
docker exec -it line-main-app pytest- bet_maker
docker exec -it bet-main-app pytest
Помимо того что описано в тз реализовал обработку новых ставок в сервисе событий. То есть когда на определнное событие делается ставка (на победу первой команды по тз), кэф это ставки уменьшается на 10% от суммы ставки. Добавил я это потому что посчитал странным, что сумма ставки и коэффициент события никак не взаимодействуют и непонятно зачем нужны.
Надеюсь что все запустилось и корректно работает. Буду рад обсудить выполнение тестового задания с вами!