https://github.com/meetinger/test_task_middle
https://github.com/meetinger/test_task_middle
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/meetinger/test_task_middle
- Owner: meetinger
- License: gpl-3.0
- Created: 2023-10-20T17:58:04.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-10-27T18:44:42.000Z (over 2 years ago)
- Last Synced: 2025-03-16T09:42:33.418Z (over 1 year ago)
- Language: Python
- Size: 847 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# test_task_middle
## Тестовое задание
### Установка и настройка
1. Склонируйте репозиторий командой `git clone`
2. Установите Python 3.11, Poetry, Docker, Docker-Compose
3. Запустите команду `poetry install` для установки зависимостей(в случае проблем, попробуйте удалить poetry.lock)
4. (Необязательно) Настройте переменные окружения в `.env` `.env.docker` и отредактируйте Dockerfile, docker-compose.yml на свой вкус
5. Запустите приложение командой `sudo docker compose up -d`
6. Используйте API, документация находится по адресу `http://localhost:8888/redoc`
### Особенности проекта
1. Вместо Flask я решил использовать FastAPI, он более современный и производительный
2. Вместо SQLite я использовал PostgreSQL
3. Всё было обёрнуто в Docker
4. Был использован Poetry вместо pip для более удобного управления зависимостями
5. Юнит-тесты присутствуют, в докере запустите только тестовую БД и запустите `poetry run pytest` из корня репозитория
### Задания
1. Задача 1: Создание API с использованием Flask и SQLAlchemy – 30 баллов ✅
1. Создание таблицы User – 5 баллов ✅
2. Реализация CRUD-операций – 15 баллов ✅
3. Поддержка пагинации – 10 баллов ✅
2. Задача 2: Работа с данными и структурирование – 25 баллов ✅
1. Подсчет пользователей за последние 7 дней – 8 баллов ✅
2. Топ-5 пользователей с самыми длинными именами – 8 баллов ✅
3. Доля пользователей с определенным доменом электронной почты – 9 баллов ✅
3. Задача 3: Модели анализа данных – 25 баллов ❌ (есть наработки)
1. Создание модели предсказания активности пользователя – 15 баллов ❌
2. Функция для расчета вероятности активности – 10 баллов ❌
4. Задача 4: Объединение проекта – 10 баллов ✅
1. Интеграция задач в одном проекте – 10 баллов ✅
5. Задача 5: Тестирование и документация – 10 баллов ❓ (не всё идеально)