Skip to content

Symfony 7 Skeleton REST API(Тестовое задание)

Notifications You must be signed in to change notification settings

IgorOlikov/brotherhood-test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@TODO Добавить

  1. JWT авторизацию и аутентификацию.(Подтверждение почты,Восстановление пароля)
  2. RabbitMQ/systemd worker для очередей.
  3. Unit-тесты.
  4. Swagger OpenApi документацию API.
  5. PHPStan, Psalm
  6. CI/CD workflows + tests + static analyzer

Заказчик владеет ИТ бизнесом и просит разработать систему управления проектов. Со слов заказчика получены требования: IT-компания ведет разработку нескольких проектов. В каждом проекте своя команда разработчиков, но некоторые разработчики могут участвовать в нескольких проектах.

Разработать сущности «Разработчик» и «Проект».

Минимально необходимыми полями для «Разработчика» являются:

ФИО разработчика *; должность *; (возможные должности программист, администратор, devops, дизайнер) email ; контактный телефон; проект, над которым он работает.

Для «Проекта»:

название проекта; команда разработчиков; заказчик.

Добавить валидацию заполненности полей со стороны сервера, проверять, что проект, добавляемый разработчику существует.

Создать миграцию сущностей для БД

Реализовать возможность нанимать/увольнять/переводить (на проект, новую должность) разработчиков, создавать/закрывать проекты.

Сформировать запросы в SQL по сбору статистики (количество проектов, сотрудников, средний возраст сотрудников и т.д.)

Запросы.

  • Количество проектов

select count(*) as project_count from project p;

  • Количество сотрудников

select count(*) as employees_count from employee e;

  • средний возраст сотрудников

select avg(e.age) as avg_employees_age from employee e;

  • средний возраст работников на каждом проекте и среднее кол-во работников на каждом проекте

with emp_pro as ( select ep.employee_id, ep.project_id from project p JOIN employees_projects ep ON p.id = ep.project_id ) select emp_pro.project_id, avg(e.age) as avg_project_emplpyees_age, count(e.*) as project_employees_count from emp_pro JOIN employee e ON emp_pro.employee_id = e.id GROUP BY emp_pro.project_id ORDER BY emp_pro.project_id

About

Symfony 7 Skeleton REST API(Тестовое задание)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published