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 чувствительность

Связано: