Files
2025-04-03 02:16:24 +03:00

81 lines
3.9 KiB
Markdown
Raw Permalink 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` - Grafana
* `/docs` - обучающие материалы по анализу данных
После запуска по методу выше создается пользователь в админке (`/admin/`) с данными ниже:
* `admin` - логин
* `prooooooood` - пароль
Данные для Grafana:
* `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 контейнер, на который выдаются следующие ресурсы:
* 50% одного ядра
* 100 МБ ОЗУ
Решению доступны следующие библиотеки для работы с данными:
```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`
Postman коллекция, c E2E тестами: [tests/postman_collection.json](./tests/postman_collection.json)
Запуск Postman коллекции:
![postman collection run](./assets/gif/postman_collection_run.gif)
Покрытие тестами бекенда данного приложения:
![backend tests coverage](./assets/img/backend_coverage.png)