У нас есть популярный (высоконагруженный) сайт с текстовыми трансляциями футбольных матчей. Мы сотрудничаем с посредником, который предоставляет логи матчей. Каждый лог состоит из списка событий разного типа в json формате. Команда, в которой вы работаете, создала первую версию модуля для генерации статичных html страниц с текстовыми трансляциями матчей на основе данных из логов.
- Пользователи жалуются, что неудобно отслеживать, кто забил голы и получил карточки. Для этого приходится листать весь лог матча
- Пользователи хотят получить статистику по общему количеству времени для каждой позиции (нападающие, защитники и т.д.)
Отдел тестирования выявил следующий баг:
- Неверно показано время, проведенное на поле. Например, матч 1024102 длился 96 минут, а максимальное время у футболистов, проведенное на поле – 95 минут. За 1 матч невозможно заменить всю команду. Значит общее время, проведенное на поле, считается неверно
- Improvement: Добавить иконку мячика, если футболист забил гол
- Improvement: Добавить отображение желтых и красных карточек напротив футболистов, которые получили карточки
- Feature: Добавить таблицу с общим временем, проведенным на поле, для каждой позиции (нападающие, защитники и т.д.), а не только для каждого игрока
- Bug: Исправить ошибку с подсчетом времени, проведенном на поле
Стек технологий:
- Генератор написан на php 7.4
- Для управления зависимостями используется Composer (https://getcomposer.org/)
- Для запуска генерации через CLI команду используется symfony/console (https://symfony.com/doc/current/components/console.html)
- Для генерации html файлов по шаблону используется twig (https://twig.symfony.com/)
- Для dev окружения используется Docker (https://www.docker.com/) и Docker Compose (https://docs.docker.com/compose/)
Существует 2 способа использовать компонент: локально или через Docker (предпочтительнее).
./composer.phar install # Установка зависимостей
bin/console app:build-match-page # Генерация страницы мачта. Можно сразу указать id конкретного матча "bin/console app:build-match-page 1024102"
docker-compose up -d # Запуск контейнеров в фоновом режиме
docker-compose exec php ./composer.phar install # Установка зависимостей
docker-compose exec php bin/console app:build-match-page # Генерация страницы мачта. Можно сразу указать id конкретного матча "docker-compose exec php bin/console app:build-match-page 1024102"
Необходимо установить Docker (https://docs.docker.com/install/) и Docker Compose (https://docs.docker.com/compose/install/)
Результат тестового задания должен содержать:
- ФИО автора
- Потраченное на тестовое задание время
- Скриншот получившейся страницы
- Код оформленный в виде git репозитория, который содержит несколько коммитов, показывающих ход вашей работы
- Описание принятых решений:
- "Feature: Добавить таблицу с общим временем, проведенным на поле, для каждой позиции (нападающие, защитники и т.д.), а не только для каждого игрока" – общее описание реализации и почему вы решили сделать именно так
- "Bug: Исправить ошибку с подсчетом времени, проведенном на поле" – описание причины ошибки и способа решения
Примечание:
- Скриншот страницы можно прикрепить к ответному письму
- Описание принятых решений необходимо сделать в свободной форме, словно вы рассказываете другому разработчику, который хотел узнать, чем вы занимались на прошлой неделе
- Репозиторий вы можете разместить на любом публичном хостинге репозиториев (GitHub, BitBucket) и скинуть нам ссылку на него
- Понятные объяснения
- Чистый код
- Уверенное владение git
Это лог реального матча между командами Маккаби (Тель-Авив) и Зенит (Санкт-Петербург), который прошел 15 сентября 2016 года. Матч получился очень интересным и драматичным.
Текстовую трансляцию мы брали с сайта soccer.ru (https://www.soccer.ru/matches/1024102/makkabi-zenit-15-09-2016). Ее провел Старчеус Сергей, за что ему большое спасибо.