Skip to content

frtn7/tournament-tt

Repository files navigation

Тестовое задание

Сгенерировать турнирную таблицу, где команды разделены на 2 дивизиона A и B. В каждом дивизионе команды играют каждая с каждой и, в конечном результате, 4 лучшие команды из каждого дивизиона выходят в плей-офф. График игр плей-оффа проходят по принципу "ёлочки": лучшая команда играет против слабейшей, где победитель проходит дальше, а проигравший выпадает из дальнейшего участия. В результате победит та команда, которая выиграет во всех играх плей-оффа.

Дополнительные условия к задаче:

  • реализовать на PHP8
  • в реализации показать свои лучшие знания по ООП
  • важны архитектура приложения и тесты
  • чтобы не пришлось вводить все результаты вручную, реализовать генератор данных, например по нажатию на кнопки заполнить результаты для дивизиона A, B, и затем для таблицы плей-офф
  • UI на своё усмотрение (пример в приложении), много времени затрачивать не нужно, можно использовать фреймворки
  • результаты должны сохраниться в базу данных (mysql/postgresql)
  • можно использовать фреймворк на своё усмотрение symfony

Использованные технологии:

  • PHP 8.4
  • Symfony 7.2
  • PostgreSQL 16
  • Docker / Docker Compose
  • PHPUnit

Руководство по запуску

Для удобства команды запуска и настройки внесены в Makefile.

Для создания env файла:

  make env

Для развертывания контейнеров:

  make install

Для запуска миграций:

  make migrate

Для запуска фикстур (наполнения начальными данными):

  make fixtures

Для инициализации БД для тестов:

  make create-test-db

Для запуска тестов:

  make test

Дополнительные команды:

Для очистки кэша:

  make clear-cache

Для выключения контейнеров:

  make down

Для обновления зависимостей Composer:

  make composer-update

Для просмотра логов:

  make logs

Команды для запуска статических анализаторов и инструментов автоматического рефакторинга:

  make phpstan
  make ecs-check
  make ecs-fix
  make rector

About

Тестовое задание

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published