Files
DataRush/README.md
T
2025-03-04 04:32:53 +03:00

74 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DataRush
Инновационный сервис для проведения соревнований по анализу данных
## Запуск
Склонируйте репозиторий и пропишите.
```bash
docker compose up
```
## Важные эндпоинты
* `/` - интерфейс
* `/api/v1/docs` - swagger-ui документация
* `/admin/` - админка
* `/admin/grafana` - графана
* `/docs` - обучающие материалы по анализу данных
После запуска по методу выше создается пользователь в админке (`/admin/`) с данными ниже:
* `admin` - логин
* `proooooood` - пароль
## Как устроен проект
В проекте используются 3 основных модуля: backend, frontend и checker
1. `backend` представляет собой приложение, написанное на Django с применением [Django Ninja](https://django-ninja.dev/), который позволяет быстро и легко создавать Restful API.
Сам бекенд состоит из 2-х основных компонентов: приложений (где хранятся модели, тесты и настройки админ-панели) и основных колбеков (где хранятся схемы OpenAPI и сами ручки)
Решения на проверку отсылаются через `celery` для асинхронного взаимодействия, так как его ожидание может занять довольно длительное время.
2. `frontend` является React приложением, которое запускается через Vite. В нем также используется TypeScript для более строгой типизации. Структура приложения является стандартной для подобного вида проектов: есть отдельная папка для компонентов, страниц, стилей, работы с API.
3. `checker` - микросервис на FastAPI, созданный для безопасного асинхронного запуска посылок пользователей.
Данные в этот сервис отсылаются по специальной ручке `/execute`, которая является приватной (ее нет в документации)
Проверка заданий осуществляется через запуск кода пользователя через специально создаваемый Docker контейнер, на который выдаются следующие ресурсы:
* 1 ядро CPU
* 1 ГБ ОЗУ
Для приближения к условиям работы аналитиков в интерпритаторе Python есть следующие библиотеки:
```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
![Postman data](img/postman.gif)
Ниже можно увидеть Coverage тестами бекенда данного приложения
![django test](img/superduperdjangotests.png)