Система расчета мотивации

Заказчик:
Детский мир
Руководитель проекта со стороны заказчика
Поставщик
Детмир-Тех
Год завершения проекта
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 сотрудников. Тот же расчётный движок обслуживает мотивацию сотрудников розничных сетей, работающих по всей стране. Разработка, внедрение и сопровождение выполнены внутренней командой.

Комментировать могут только авторизованные пользователи.
Предлагаем Вам в систему или зарегистрироваться.

Год
Предметная область
Отрасль
Управление
Мы используем файлы cookie в аналитических целях и для того, чтобы обеспечить вам наилучшие впечатления от работы с нашим сайтом. Заходя на сайт, вы соглашаетесь с Политикой использования файлов cookie.