HR-цикл (расписание, зарплата)
Шаблоны смен, расписание, time tracking, формулы зарплаты, ведомости, активность сотрудников.
Известно багов: 11 + 1 cross-cutting (X03)
3 Critical, 4 Major, 4 Minor.
Шаблоны смен
- CRUD: name, start_time, duration_minutes
- Лимит 4 шаблона на ТТ (проверка на уровне приложения)
- Редактирование шаблона — 500 при сохранении (BUG-018, BUG-019)
Расписание (плановые смены)
- CRUD только future-only (нельзя на прошлые даты)
- Назначение из шаблона (template_id)
- UNIQUE (employee_id, store_id, date)
- Создание смены «Вручную» (без шаблона) → 422 (BUG-020)
- Страница расписания выглядит неполноценно — требуется доработка UX (BUG-022)
Time tracking (фактические смены)
- Clock in/out на POS — отсутствует (BUG-021) — feature gap
- Ручной ввод плановой смены — единственный способ сейчас
- Корректировки: increase/decrease с обязательным комментарием
- Status:
on_schedule/off_schedule/missed/unplanned(вычисляется) - Auto-close через 24+ часов (
auto_closed = true) break_duration_minutes=break_end - break_start- Date = дата clock_in (для ночных смен — день начала)
Формулы зарплаты
- Hourly / fixed / mixed
- По роли (default) / индивидуальные (перекрывают ролевую)
- Иерархия: индивидуальная > ролевая > нет
- UNIQUE (role_id) WHERE employee_id IS NULL — одна формула на роль
- UNIQUE (employee_id) WHERE NOT NULL — одна индивидуальная
- Per-ТТ ставки (store_id) — deferred (всегда NULL в MVP)
- Создание формулы по роли с Save → 500 (BUG-023)
- Поле «Ставка в час» — отображается технический код рядом с label (BUG-026, BUG-X03)
- Поле «Ставка в час» — принимает отрицательные значения (-1) (BUG-027)
Ведомости (Payroll Records)
- Расчёт за период (1 месяц)
- Статусы: calculated → confirmed → paid (forward only, нельзя откатить)
- formula_snapshot — JSON на момент расчёта (не обновляется при изменении формулы)
- UNIQUE (employee_id, store_id, period_start)
- Подтверждение ведомости с ошибкой — несмотря на 400 разрешает (BUG-025)
- Экспорт CSV — 422, файл не выгружается (BUG-024)
- Колонка «Действия» — отображается технический код (BUG-028, BUG-X03)
Активность сотрудников (Dashboard)
- Дашборд по часам, начислениям, отработанным сменам
- Live через Kafka shiftMonitor (Terminals dashboard)
- Страница «Терминалы» — переосмыслить или удалить (BUG-029)
- Фильтр ролей в списке сотрудников — «Все роли (permissions)» — убрать слово «permissions» (BUG-X03)
Юридические детали сотрудника (расширение)
- 1:1 с employee
- ИНН (12 цифр), паспорт (серия/номер), ВУ (номер/срок), СНИЛС (XXX-XXX-XXX XX)
- Все поля nullable
- Доступ только владельцам (Franchise / Franchisee их сотрудников)
- ФЗ-152 чувствительность
Связано:
- Сервис: User Service — HR-расширение (port 3002)
- BR: 1.4.1 (расписание, учёт времени, зарплата)
- Common: 02 Form Validation — у каждой формы