
Заказчик: разработчик ПО и консалтинговая компания для девелоперов (NDA).
Проект: веб-площадка для проведения тендеров: девелоперы ищут подрядчиков.
Стек разработки: Python, PostgreSQL, Pyramid, SQLAlchemy, Docker.
Команда разработки: 7 бэкенд- и 2 фронтенд-разработчика
Старт проекта
Как работает программный продукт. Заказчики публикуют описание своего объекта и требования к выполнению работ — смету. Подрядчики заполняют её своими данными и выставляют на тендер. Система автоматически оценивает соответствие условий подрядчиков требованиям заказчиков и выбирает наиболее оптимальный по стоимости вариант.
Исходная ситуация:
- Пользователи взаимодействовали вручную. Заказчик составлял в Excel табличный документ Ведомость и загружал его в систему. Ведомость — это строительная смета, где подробно описаны этапы и виды работ, используемые материалы, объёмы, цены, а также есть множество изменяемых параметров, которые влияют на итоговую стоимость. Подрядчики скачивали документ, заполняли и вновь загружали на платформу.
- Легаси-код. До выхода нашего разработчика проект был заморожен, команда полностью обновлена, поэтому необходимо было самостоятельно изучить существующий код и на ходу разбираться в процессах.
Запрос: быстро перезапустить проект, автоматизировать взаимодействие заказчиков и подрядчиков, упростить работу пользователей с документами.
Задачи, ключевые и наиболее трудоёмкие:
Задачи нашего разработчика в основном касаются оптимизации работы с ведомостью. Что уже выполнено:
Задачи нашего разработчика в основном касаются оптимизации работы с ведомостью. Что уже выполнено:
1. Реализовано редактирование ведомости через веб-интерфейс.
2. Переработан механизм экспорта/импорта ведомости объёмов работ из Excel.
3. Добавлен расчёт промежуточных итогов.
4. Изменён механизм сопоставления строк в версиях ведомости.
5. Обновлён механизм округления объёмов и цен.
6. Доработаны стандартные и индивидуальные отчёты, которые пользователь может сформировать в системе.
7. Проведён code-review всей команды.
1. Реализовано редактирование ведомости через веб-интерфейс.
- Раньше изменение ведомости было возможно только через экспорт/ импорт. Теперь пользователи-заказчики могут вносить некоторые изменения в смету прямо в браузере. При этом если добавляются новые строки, то вложенная нумерация проставляется автоматически и всегда корректно — а в таблице Excel с этим были трудности.
2. Переработан механизм экспорта/импорта ведомости объёмов работ из Excel.
- Раньше в документе было фиксированное количество атрибутов к строке, а сейчас можно добавить неограниченное их число. Настроено управление доступом к этим атрибутам: можно давать права на чтение или на изменение.
3. Добавлен расчёт промежуточных итогов.
- Значение каждой строки в документе зависит от значений и комбинации вложенных в неё элементов иерархии: например, стоимость работ рассчитывается по их типу, а он определяет вид и объём используемых материалов. Когда меняется логика калькуляции этих элементов, меняется и версия документа. Был реализован механизм расчёта для возможных версий. Этот этот функционал будет расширяться.
4. Изменён механизм сопоставления строк в версиях ведомости.
- Раньше работа с ведомостью велась построчно, при обработке каждой строки происходила запись в базу. Сравнение шло долго, так как в ведомости может быть более десяти тысяч строк. Сейчас реализован функционал для одновременной обработки нескольких строк. Изменённые строки выделяются цветом.
5. Обновлён механизм округления объёмов и цен.
- Теперь округление значений в строках можно настраивать до 5 цифр после запятой.
6. Доработаны стандартные и индивидуальные отчёты, которые пользователь может сформировать в системе.
7. Проведён code-review всей команды.
Результат
- проект успешно перезапущен;
- оперативно доработан и обновлён функционал — например, ключевая задача по переработке механизма экспорта/импорта заняла 6 недель;
- качественно и быстро исправляются баги;
- оптимальное распределение нагрузки в команде.
У вас есть задачи для Python-программистов? Узнайте, чем мы сможем помочь