diff --git a/README.md b/README.md index d3c0007..ae7d05a 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ Инновационный сервис для проведения соревнований по анализу данных - ## Запуск Склонируйте репозиторий и пропишите. @@ -24,10 +23,49 @@ docker compose up * `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 тестами бекенда данного приложения