2025-04-02 18:51:29 +03:00
2025-03-04 01:46:35 +03:00
2025-03-04 06:47:16 +03:00
2025-03-01 09:30:09 +03:00
2025-04-02 18:51:29 +03:00
2025-03-04 00:38:49 +00:00
2025-03-04 04:32:53 +03:00

DataRush

Инновационный сервис для проведения соревнований по анализу данных

Запуск

Склонируйте репозиторий и пропишите.

docker compose up

Важные эндпоинты

  • / - интерфейс
  • /api/v1/docs - swagger-ui документация
  • /admin/ - админка
  • /admin/grafana - графана
  • /docs - обучающие материалы по анализу данных

После запуска по методу выше создается пользователь в админке (/admin/) с данными ниже:

  • admin - логин
  • proooooood - пароль

Как устроен проект

В проекте используются 3 основных модуля: backend, frontend и checker

  1. backend представляет собой приложение, написанное на Django с применением Django Ninja, который позволяет быстро и легко создавать Restful API.

    Сам бекенд состоит из 2-х основных компонентов: приложений (где хранятся модели, тесты и настройки админ-панели) и основных колбеков (где хранятся схемы OpenAPI и сами ручки)

    Решения на проверку отсылаются через celery для асинхронного взаимодействия, так как его ожидание может занять довольно длительное время.

  2. frontend является React приложением, которое запускается через Vite. В нем также используется TypeScript для более строгой типизации. Структура приложения является стандартной для подобного вида проектов: есть отдельная папка для компонентов, страниц, стилей, работы с API.

  3. 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

Postman data

Ниже можно увидеть Coverage тестами бекенда данного приложения

django test

S
Description
megazordpobeda team's solution for the final stage of the PROD Olympiad.
Readme 2.8 MiB
Languages
Python 52.1%
TypeScript 44.1%
CSS 1.7%
Dockerfile 0.8%
HTML 0.6%
Other 0.7%