4.2 KiB
DataRush
Инновационный сервис для проведения соревнований по анализу данных
Запуск
Склонируйте репозиторий и пропишите.
docker compose up
Важные эндпоинты
/- интерфейс/api/v1/docs- swagger-ui документация/admin/- админка/admin/grafana- графана/docs- обучающие материалы по анализу данных
После запуска по методу выше создается пользователь в админке (/admin/) с данными ниже:
admin- логинproooooood- пароль
Как устроен проект
В проекте используются 3 основных модуля: backend, frontend и checker
-
backendпредставляет собой приложение, написанное на Django с применением Django Ninja, который позволяет быстро и легко создавать Restful API.Сам бекенд состоит из 2-х основных компонентов: приложений (где хранятся модели, тесты и настройки админ-панели) и основных колбеков (где хранятся схемы OpenAPI и сами ручки)
Решения на проверку отсылаются через
celeryдля асинхронного взаимодействия, так как его ожидание может занять довольно длительное время. -
frontendявляется React приложением, которое запускается через Vite. В нем также используется TypeScript для более строгой типизации. Структура приложения является стандартной для подобного вида проектов: есть отдельная папка для компонентов, страниц, стилей, работы с API. -
checker- микросервис на FastAPI, созданный для безопасного асинхронного запуска посылок пользователей.Данные в этот сервис отсылаются по специальной ручке
/execute, которая является приватной (ее нет в документации)Проверка заданий осуществляется через запуск кода пользователя через специально создаваемый Docker контейнер, на который выдаются следующие ресурсы:
-
1 ядро CPU
-
1 ГБ ОЗУ
Для приближения к условиям работы аналитиков в интерпритаторе Python есть следующие библиотеки:
pandas==2.2.3 numpy==2.2.3 matplotlib==3.10.1 scipy==1.15.2 scikit-learn==1.6.1 seaborn==0.13.2 statsmodels==0.14.4Контейнеру дается 1 минута на выполнение кода, потом - контейнер удаляется
Тесты
Написаны unit-тесты (на базе Django TestCase) и E2E (Postman коллекция). Они покрывают flow регистрации, просмотра и участия в соревновании.
Unit-тесты находятся в соответствующих приложениях, которые располагаются по пути services/backend/apps
JSON коллекция, в которой хранятся E2E тесты, находится по пути img/postman_e2e.json. Ее можно импортировать в постман, нажав на соответсвующую кнопку в интерфейсе Postman
Ниже можно увидеть Coverage тестами бекенда данного приложения

