Система расчета мотивации
- Заказчик:
- Детский мир
- Руководитель проекта со стороны заказчика
- Поставщик
- Детмир-Тех
- Год завершения проекта
- 2026
- Сроки выполнения проекта
- декабрь, 2024 — сентябрь, 2026
- Масштаб проекта
- 21000 автоматизированных рабочих мест
- Цели
Цели проекта:
- сделать доход прозрачным: расчёт виден сотруднику до отдельных операций и тарифов, с ежедневным обновлением;
- автоматизировать расчёт сдельной премии и исключить ошибки ручных операций;
- сократить сроки выплаты переменной части и закрытия отчётности;
- дать HR-методологам менять формулы и схемы мотивации без разработчиков;
- превратить мотивацию из бухгалтерской процедуры в инструмент управления производительностью склада.
- Результаты
- Производительность распределительных центров выросла на 2,5%.
- Проект окупился за 7 месяцев за счёт снижения затрат на персонал.
- 97% сотрудников зарегистрировались в личном кабинете, 85% заходят ежедневно - добровольно, без административного принуждения.
- Расчёт премии из многодневной ручной процедуры стал ежедневным: сотрудник видит вчерашний заработок каждое утро, полный пересчёт по 21 000 человек укладывается в два часа.
- Устранена потеря до 10% заработка у тех, кто работает за смену на нескольких участках: вместо четырёх раздельных расчётов - один сводный.
- Новая схема мотивации внедряется без релиза: 200 моделей данных, 51 источник и 91 трансформация настроены HR-методологами самостоятельно.
- Закрытие отчётности больше не срывается из-за расчёта мотивации.
- Один движок обслуживает распределительные центры и розничные сети; на очереди самозанятые и аутсорсинг.
Уникальность проекта
Главное требование - менять формулы расчёта без участия разработчиков. Вместо жёсткой логики в коде построен конструктор, в котором HR-методолог собирает расчёт сам.
- Конструктор вместо кода: методолог через интерфейс описывает структуры данных, источники и трансформации. В проде 200 моделей, 51 источник, 91 трансформация - и ноль релизов для новой схемы мотивации.
- Формулы на языке предметной области: поля названы как в регламентах HR. Шкалы премирования задаются таблицей, формула генерируется автоматически.
- LLM в проде: ревьюер объясняет ошибку в формуле человеческим языком и ловит опечатки в именах полей, обнуляющие расчёт.
- Песочница: новая методика прогоняется на реальных данных, не затрагивая боевой расчёт.
- Оптимизирован сводный расчёт, устранены моменты из-за которых сотрудник на нескольких участках за смену мог недополучать до 10% дохода.
- Защита данных: суммы шифруются в файлах обмена и в БД
- Использованное ПО
Решение полностью собственной разработки, коробочный продукт не использовался - выбор зафиксирован архитектурным решением после сравнения вариантов.
Платформа: Kotlin, Spring Boot, Java 17, Gradle. Ядро расчёта - собственный DSL на базе Spring SpEL с библиотекой предметных функций, дополнительно Groovy.
Данные: PostgreSQL с помесячным партиционированием, Liquibase, MapStruct.
Интеграции: SAP BW и 1С:ЗУП - обмен файлами через FTP, SMB и hot folder с автоматическим разбором.
ИИ: внутренняя LLM-платформа компании и внешний LLM-шлюз с цепочкой fallback - валидация формул и разметка персональных данных при выгрузке дампов.
Инфраструктура: Kubernetes, инфраструктура как код на Jsonnet, ArgoCD и Jenkins, мониторинг Grafana, Kibana и APM, алерты в корпоративный мессенджер.
Тестирование: JUnit и TestContainers, тесты составляют около 45% объёма кодовой базы.
- Сложность реализации
Система считает реальные деньги 21 000 человек: цена ошибки здесь - не баг, а недоплаченная зарплата. Отсюда основные сложности.
- Гибкость против безопасности: конструктор должен позволять методологу собрать любую схему мотивации и при этом не дать сломать боевой расчёт. Решено версионированием формул, обязательным согласованием, аудитом изменений и песочницей на реальных данных; тесты составляют 45% кодовой базы.
- Данные приходят частями и задним числом: корректировки за прошлые смены требуют пересчёта уже закрытых периодов по всей цепочке агрегатов.
- Рост объёма: таблица расчётных данных переведена на помесячное партиционирование на работающей системе, простой при переключении составил 2-5 минут.
- Отладка без персональных данных: разбирать инциденты на боевых данных нельзя, поэтому выгрузка для разработки обезличивается автоматически.
- Организационная часть: методология мотивации менялась по ходу проекта
- Описание проекта
Исходная ситуация:
Сотрудники распределительных центров работают на сдельной оплате, но расчёт переменной части вёлся полуручным способом в разрозненных системах (SAP BW, 1С:ЗУП, Excel) и занимал несколько дней. Человек не понимал, из чего складывается его доход и как на него повлиять, а ошибки расчёта мотивационного коэффициента стоили ему до 10% заработка - прямой драйвер текучести. Компания теряла сроки закрытия отчётности, а изменение схемы мотивации требовало доработок.
В распределительных центрах работает 21 000 человек, и большая часть их дохода - сдельная. Компания ввела новую методологию мотивации, но считалась она полуручным способом в разрозненных системах: выработка приходила из SAP BW, кадровые данные и начисления - из 1С:ЗУП, а сведение выполнялось в Excel. Расчёт занимал несколько дней, мог давать ошибки и задерживать закрытие отчётности.
Отдельной проблемой был мотивационный коэффициент. Премия считалась четырьмя независимыми расчётами - по типам участков, до 120 файлов в месяц. Если сотрудник за смену работал на нескольких участках, его выработка дробилась между расчётами, процент выполнения нормы в каждом выходил заниженным, и коэффициент срезал премию. Потеря доходила до 10% заработка, причём страдали самые универсальные сотрудники - те, кто закрывал несколько участков.
При этом человек не видел, из чего складывается его доход и как на него повлиять. Непрозрачность расчёта была прямым драйвером текучести, а у компании не было инструмента управления производительностью через мотивацию.
Реализованное решение:
Построен единый сервис, закрывающий весь путь: приём выгрузок из SAP BW и 1С:ЗУП через FTP, SMB и папку автоматической загрузки, разбор файлов, расчёт по формулам методологии и отображение результата в личном кабинете сотрудника.
В основе - конструктор, а не запрограммированная методика. HR-методолог через интерфейс описывает структуры данных, подключает источники и настраивает трансформации: соединения, агрегации по дням, неделям и месяцам, формулы. Формулы пишутся на предметном языке, где поля называются как в регламентах HR, а шкалы премирования задаются таблицей, по которой формула генерируется автоматически. Каждое изменение версионируется, проходит согласование и попадает в журнал аудита - система считает деньги. Новую методику можно прогнать на реальных данных в песочнице, не затрагивая боевой расчёт.
Расчётный конвейер работает непрерывно: система отслеживает поступление новых данных и пересобирает расчёт по цепочке, полный пересчёт по всем сотрудникам укладывается в два часа. Зарплатные суммы кодируются уже в файлах обмена и шифруются в базе.
Отдельно закрыта проблема коэффициента: внедрён сводный расчёт, где процент выполнения нормы суммируется по сотруднику и дате смены по всем участкам и складам, а коэффициент считается от итога.
Изменения после внедрения:
Сотрудник открывает кабинет утром и видит вчерашний заработок с детализацией до операций и тарифов, а вопрос по расчёту задаёт прямо из кабинета. В кабинете зарегистрировались 97% сотрудников, 85% заходят ежедневно - без административного принуждения.
Расчёт премий перестал быть многодневной ручной процедурой, отчётность закрывается в срок, а потеря части премии при работе на разных участках устранена. Изменение схемы мотивации больше не требует релиза: методолог настраивает её сам.
- География проекта
Россия. Проект охватывает распределительные центры компании - в совокупности 21 000 сотрудников. Тот же расчётный движок обслуживает мотивацию сотрудников розничных сетей, работающих по всей стране. Разработка, внедрение и сопровождение выполнены внутренней командой.