Вводные:
- Здесь представлен MVP проект файлообменника. Он позволяет загружать файлы, проверяет их на подозрительный контент и отправляет алерты;
- Репозиторий содержит в себе бэкенд и фронтенд части;
- В обоих частях присутствуют баги, неоптимизированный код, неудачные архитектурные решения.
Задачи:
- Проведите рефакторинг бэкенда, не ломая бизнес-логики: предложите свое видение архитектуры и реализуйте его;
- (Дополнительно) На бэкенде есть возможность неочевидной оптимизации - выполните ее;
- (Дополнительно) Разбейте логику фронтенда на слои;
Запуск:
docker compose -f docker-compose.dev.yml updocker exec -it backend alembic upgrade head- вынес в make
Открыть фронт: http://localhost:3000/test
Открыть бэк: http://localhost:8000/docs
- декомпозированы сущности (aler, file)
- добавлено URI Versioning
- поправлен фронт под версионированное апи
- добавлен менеджер бд для управления жизненными циклами engine и session_maker
- получение сессии реализовано через di
- сделана ленивая инициализация динамически формируемых полей (DB_URL, STORAGE_DIR)
- миграции вынесены по сущностям
- изменены типы полей первичных ключей, изменен запрос получения списка предупреждений (на каждый алерт улетал запрос для подгрузки данных о файле)
- json изменен на jsonb (в мирации правил)
- поправлен композник
- добавлен процесс накатывания миграций
- возможно также добавление use_case для разделения логики взаимодействия с базой от сервисного слоя
- возможно добавление uow и объектов репозиториев (да и в целом можно довести до луковичной но покачто избыточно как будто)