Skip to content

Тестовое задание для отбора на Летнюю ИТ-школу КРОК по разработке

Notifications You must be signed in to change notification settings

ludikfaineant/CROC_test_task

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

Тестовое задание для отбора на Летнюю ИТ-школу КРОК по разработке

Условие задания

Будучи тимлидом команды разработки, вы получили от менеджера проекта задачу повысить скорость разработки. Звучит, как начало плохого анекдота, но, тем не менее, решение вам все же нужно найти. В ходе размышлений и изучений различного внешнего опыта других команд разработки вы решили попробовать инструменты геймификации. То есть применить техники и подходы игрового характера с целью повышения вовлеченности команды в решение задач.

Вами была придумана рейтинговая таблица самых активных контрибьютеров за спринт. Что это значит в теории: по окончании итерации (4 рабочие недели) выгружается список коммитов, сделанных в релизную ветку продукта, и на его основе вычисляются трое самых активных разработчиков, сделавших наибольшее количество коммитов. В зависимости от занятого места, разработчик получает определенное количество внутренней валюты вашей компании, которую он впоследствии может обменять на какие-то товары из внутреннего магазина.

На практике вы видите решение следующим образом: на следующий день после окончания спринта в 00:00 запускается автоматическая процедура, которая забирает файл с данными о коммитах в релизную ветку, сделанных в период спринта, после чего выполняется поиск 3-х самых активных контрибьютеров. Имена найденных разработчиков записываются в файл, который впоследствии отправляется вам на почту.

В рамках практической реализации данной задачи вам необходимо разработать процедуру формирование отчета “Топ-3 контрибьютера”. Данная процедура принимает на вход текстовый файл (commits.txt), содержащий данные о коммитах (построчно). Каждая строка содержит сведения о коммите в релизную ветку в формате: “<Имя пользователя> <Сокращенный хэш коммита> <Дата и время коммита>”. Например: AIvanov 25ec001 2024-04-24T13:56:39.492

К данным предъявляются следующие требования:

  • имя пользователя может содержать латинские символы в любом регистре, цифры (но не начинаться с них), а также символ "_";
  • сокращенный хэш коммита представляет из себя строку в нижнем регистре, состояющую из 7 символов: букв латинского алфавита, а также цифр;
  • дата и время коммита в формате YYYY-MM-ddTHH:mm:ss.

В результате работы процедура формирует новый файл (result.txt), содержащий информацию об именах 3-х самых активных пользователей по одному в каждой строке в порядке убывания места в рейтинге. Пример содержимого файла: AIvanov AKalinina CodeKiller777

Ручной ввод пути к файлу (через консоль, через правку переменной в коде и т.д.) недопустим. Необходимость любых ручных действий с файлами в процессе работы программы будут обнулять решение.

Автор решения

Ларин Анатолий Николаевич

Я в Telegram

Описание реализации

Решение содержится в main.py

  1. При запуске файла main.py, вызывается автоматическая процедура create_result_file, в которую передается файл commits.txt(Важно, чтобы файл commits.txt находился в той же директории, что и исполняемый файл main.py)
  2. В процедуре create_resilt_file вызывается функция get_data для формирования словаря из подходящих для этого данных.
  3. Далее вызывается функция для формирования списка пользователей которые вошли в топ-3 по количеству коммитов.
  4. Процедура create_result_file заканчивает свое выполнение созданием файла result.txt, в который записываются результаты полученные выше.

В данном решении обработаны некоторые исключения, при обработке которых программа выведет предположительное сообщение в консоль.

Инструкция по сборке и запуску решения

  1. Перенести файлы с удаленного репозитория на локальный.
  2. Убедиться в том, что в папке с файлом main.py находится commits.txt с входными данными.
  3. Открыть командную строку или любую среду разработки для работы с «Python»: «PyCharm», «Visual Studio», «IDLE» и тд.
  4. Запустить файл основого решения main.py
  5. В результате получаем файл result.txt с выходными данными в исходной папке где лежит main.py и файл с входными данными.

About

Тестовое задание для отбора на Летнюю ИТ-школу КРОК по разработке

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%