Задача про сотрудников.
В компании работают 10000 сотрудников.
Имеется файл регистрации времени работы сотрудников по
дням за 3 года в формате CSV:
date;name;hours
2019-05-01;Андрей;8
2019-05-01;Василий;11
2019-05-02;Роман;7
2019-05-05;Андрей;6
2019-05-10;Роман;11
2019-06-01;Василий;6
...
Если имя сотрудника повторяется, то это один и тот же
сотрудник.
Нужно написать сервис на Django, который позволяет
загрузить указанный выше файл.
Этот сервис из указанного файла по заданному промежутку
дат (задаётся через форму на сайте) формируется отчёт по
детализации по каждому из сотрудников (тоже в формате
CSV)
Например, если в форме задали с 2019-05-01 по 2019-05-05:
то в результате скачаем файл
name; 2019-05-01;2019-05-02;2019-05-05;sum_hours
Андрей;8;-;6;14
Василий;11;-;-;11
Роман;-;7;-;7
Видно, что полностью пустые столбцы(даты) отсутствуют.
- Установим зависимости
pip install -r requirements.txt
- Создадим БД (Postgres) с паролем 'password', создадим и применим миграции.
utils/reset.sh -0
- Запускаем проект
python manage.py runserver
- В корне проекта есть образец CSV-файла из задания data.csv.
- Можно сгенерировать большой файл с помощью create_big_csv.py
- Больше тестов
- Получение результата в sql, не с помощью python. Не знаю как это сделать в SQL, но наверное можно. Хотя текущая реализация для 10 000 сотрудников за 30 дней отрабатывает за 3 секунды.
- Загрузка CSV очень медленная на пару порядков медленнее генерации отчета, не знаю как её ускорить в 100 раз.