Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/subb98/race-results
Test task for PHP developer position at Smart Logistics
https://github.com/subb98/race-results
app application backend docker docker-compose example php php8 php81 project task test
Last synced: 11 days ago
JSON representation
Test task for PHP developer position at Smart Logistics
- Host: GitHub
- URL: https://github.com/subb98/race-results
- Owner: Subb98
- License: mit
- Created: 2022-10-29T15:21:31.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2022-10-30T11:21:43.000Z (about 2 years ago)
- Last Synced: 2024-10-12T10:31:22.542Z (25 days ago)
- Topics: app, application, backend, docker, docker-compose, example, php, php8, php81, project, task, test
- Language: PHP
- Homepage: https://t.me/sunday_research
- Size: 53.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Race Results
[![Build Status](https://travis-ci.org/Subb98/Race-Results.svg?branch=master)](https://travis-ci.org/Subb98/Race-Results)
[![StyleCI](https://styleci.io/repos/559265810/shield)](https://styleci.io/repos/559265810)![preview](https://i.imgur.com/Yua0svO.png)
## Описание
Организаторы провели соревнования по автогонкам среди 15 участников. У каждого участника был свой уникальный номер (пример и формат данных в файле data_cars.json). Заезды проходили в случайном порядке, каждому участнику было дано 4 попытки, всего было проведено 60 заездов. За каждую попытку участнику присваивались очки (результаты каждого заезда вы можете найти в файле data_attempts.json).Ваша задача – вывести турнирную таблицу. В качестве колонок необходимо использовать: номер места, имя пилота, город пилота, автомобиль, 1, 2, 3, 4 попытки, сумма очков. На первой строчке будет участник, который набрал суммарно за 4 попытки наибольшее количество очков, дальше участники по убыванию. В случае совпадения суммы очков по 4 попыткам у 2 или более участников, выше по турнирной таблице должен располагаться тот участник, который набрал большее количество очков в четвертой попытке. В случае совпадения – в третьей, далее – второй и далее – в первой. Если суммы очков совпадают во всех попытках, то участников нужно отсортировать по фамилии в алфавитном порядке. Данные требуется объединить в один массив и с помощью PHP вывести их в таблицу. Для верстки таблицы допустимо использовать Bootstrap v4. На странице необходимо предусмотреть кнопку для пересчета результатов с сохранением итоговой таблицы в файл results.csv.
Проект необходимо дополнить Dockerfile, который годится для сборки образа и запуска вашего решения в среде Docker. Входные и выходные файлы (data_cars.json, data_attempts.json, results.csv) необходимо подключить к контейнеру таким образом, чтобы их можно было редактировать и просматривать с хост-машины без каких-либо дополнительных манипуляций. Т.е. изменили что-то во входных файлах, на странице нажали кнопку Пересчитать результат, в файле results.csv на хост-машине видим свежие данные.
## Запуск и использование приложения
1. Скачать проект: `git clone [email protected]:Subb98/Race-Results.git`
2. Перейти в директорию проекта: `cd Race-Results`
3. Скопировать файл с переменными окружения `cp .env.example .env`
4. Запустить сборку проекта: `docker compose up --build`
5. Установить зависимости Composer: `docker exec -it -w /usr/local/src/ race-results.php-fpm composer install`
6. Для просмотра страницы с результатами перейти по ссылке http://localhost:8000
7. Сгенерировать первый файл `data/output/result.csv` нажатием на кнопку `Посчитать результат`
8. При необходимости изменить входные данные в директории `data/input` и нажать на кнопку `Пересчитать результат`
9. При необходимости есть возможность запустить автотесты бизнес-логики: `docker exec -it -w /usr/local/src/ race-results.php-fpm ./vendor/bin/phpunit tests`## Лицензия
MIT