BUG-022 — Декомпозиция
Код
User Service
-
RoleService.update()— при обработкеsalary_formulaв PATCH:salaryFormulaRepository.findByRoleId(roleId)— проверить есть ли уже- Если есть → UPDATE поля (formula_type, hourly_rate, monthly_salary, overtime_rate, norm_hours)
- Если нет → INSERT новую
- Если
request.salary_formula == null→ DELETE существующую (если была)
- Добавить метод
SalaryFormulaRepository.findByRoleIdAndEmployeeIdIsNull(roleId)(для role-level формул) - Или: DELETE old → INSERT new (как в store schedules fix BUG-019)
Спеки
Баг не выявляет ошибку в спеках — API контракт правильно описывает PATCH как частичное обновление. Проблема в реализации (INSERT instead of UPSERT).