refactor: global refactoring

This commit is contained in:
ITQ
2025-04-03 02:16:24 +03:00
parent 90cab50958
commit 0d6bfe06f4
10 changed files with 784 additions and 795 deletions
+19 -12
View File
@@ -15,7 +15,7 @@ docker compose up
* `/` - интерфейс
* `/api/v1/docs` - swagger-ui документация
* `/admin/` - админка
* `/admin/grafana` - графана
* `/admin/grafana` - Grafana
* `/docs` - обучающие материалы по анализу данных
После запуска по методу выше создается пользователь в админке (`/admin/`) с данными ниже:
@@ -23,6 +23,11 @@ docker compose up
* `admin` - логин
* `prooooooood` - пароль
Данные для Grafana:
* `admin` - логин
* `proooooood` - пароль
## Как устроен проект
В проекте используются 3 основных модуля: backend, frontend и checker
@@ -31,20 +36,20 @@ docker compose up
Сам бекенд состоит из 2-х основных компонентов: приложений (где хранятся модели, тесты и настройки админ-панели) и основных колбеков (где хранятся схемы OpenAPI и сами ручки)
Решения на проверку отсылаются через `celery` для асинхронного взаимодействия, так как его ожидание может занять довольно длительное время.
Решения на проверку отсылаются через `celery` для асинхронного взаимодействия.
2. `frontend` является React приложением, которое запускается через Vite. В нем также используется TypeScript для более строгой типизации. Структура приложения является стандартной для подобного вида проектов: есть отдельная папка для компонентов, страниц, стилей, работы с API.
3. `checker` - микросервис на FastAPI, созданный для безопасного асинхронного запуска посылок пользователей.
Данные в этот сервис отсылаются по специальной ручке `/execute`, которая является приватной (ее нет в документации)
Данные в этот сервис отсылаются по специальной ручке `/execute`.
Проверка заданий осуществляется через запуск кода пользователя через специально создаваемый Docker контейнер, на который выдаются следующие ресурсы:
Проверка заданий осуществляется через запуск кода пользователя через Docker контейнер, на который выдаются следующие ресурсы:
* 1 ядро CPU
* 1 ГБ ОЗУ
* 50% одного ядра
* 100 МБ ОЗУ
Для приближения к условиям работы аналитиков в интерпритаторе Python есть следующие библиотеки:
Решению доступны следующие библиотеки для работы с данными:
```python
pandas==2.2.3
@@ -56,7 +61,7 @@ docker compose up
statsmodels==0.14.4
```
Контейнеру дается 1 минута на выполнение кода, потом - контейнер удаляется
Контейнеру дается 1 минута на выполнение кода, потом - контейнер удаляется.
## Тесты
@@ -64,10 +69,12 @@ docker compose up
Unit-тесты находятся в соответствующих приложениях, которые располагаются по пути `services/backend/apps`
JSON коллекция, в которой хранятся E2E тесты, находится по пути `img/postman_e2e.json`. Ее можно импортировать в постман, нажав на соответсвующую кнопку в интерфейсе Postman
Postman коллекция, c E2E тестами: [tests/postman_collection.json](./tests/postman_collection.json)
![Postman data](img/postman.gif)
Запуск Postman коллекции:
Ниже можно увидеть Coverage тестами бекенда данного приложения
![postman collection run](./assets/gif/postman_collection_run.gif)
![django test](img/superduperdjangotests.png)
Покрытие тестами бекенда данного приложения:
![backend tests coverage](./assets/img/backend_coverage.png)