Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание на позицию Fullstack разработчика (Python + React)

Вводные:

  1. Здесь представлен MVP проект файлообменника. Он позволяет загружать файлы, проверяет их на подозрительный контент и отправляет алерты;
  2. Репозиторий содержит в себе бэкенд и фронтенд части;
  3. В обоих частях присутствуют баги, неоптимизированный код, неудачные архитектурные решения.

Задачи:

  1. Проведите рефакторинг бэкенда, не ломая бизнес-логики: предложите свое видение архитектуры и реализуйте его;
  2. (Дополнительно) На бэкенде есть возможность неочевидной оптимизации - выполните ее;
  3. (Дополнительно) Разбейте логику фронтенда на слои;

Запуск:

  1. docker compose -f docker-compose.dev.yml up
  2. docker exec -it backend alembic upgrade head
  3. вынес в 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 и объектов репозиториев (да и в целом можно довести до луковичной но покачто избыточно как будто)

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages