Тестирование: Сотрудники — расширение (BR 1.4.1)

Адрес: https://erp-test.nirbi.ru/admin Логин: admin@erp.local / admin123


Что тестируем

Новые разделы в админке для управления персоналом:

  • Юридические детали сотрудника (ИНН, паспорт, ВУ, СНИЛС)
  • Расписание смен (планирование графиков работы)
  • Шаблоны смен (заготовки для быстрого создания расписания)
  • Активность сотрудников (кто работал, сколько отработал)
  • Формулы зарплаты (ставки и оклады)
  • Платёжные ведомости (расчёт зарплаты)

Подготовка

Перед тестированием нужно убедиться что есть:

  1. Торговая точка (ТТ) — зайти в “Торговые точки”, убедиться что есть хотя бы одна
  2. Сотрудник-кассир — зайти в “Сотрудники → Список”, создать кассира если нет:
    • Имя, фамилия, email, пароль
    • Роль: Кассир
    • Привязать к ТТ
  3. Сотрудник-менеджер — аналогично, роль: Менеджер

Тест 1: Юридические детали

Где: Сотрудники → Список → кликнуть на сотрудника → вкладка “Юридические детали”

Шаги

  1. Открыть карточку любого сотрудника
  2. Перейти на вкладку “Юридические детали”
  3. Должно быть написано “Нет данных” и кнопка “Заполнить”
  4. Нажать “Заполнить”
  5. Заполнить поля:
    • ИНН: 123456789012 (ровно 12 цифр)
    • Серия паспорта: 1234 (4 цифры)
    • Номер паспорта: 567890 (6 цифр)
    • Водительское удостоверение: 7711 223344
    • Срок действия ВУ: любая будущая дата
    • СНИЛС: 123-456-789 00 (формат с дефисами и пробелом)
  6. Нажать “Сохранить”

Успешный результат

  • ✅ Данные сохранились, отображаются в режиме просмотра
  • ✅ При повторном открытии вкладки — данные на месте
  • ✅ Можно нажать “Редактировать” и изменить любое поле

Что может пойти не так

  • ❌ ИНН не 12 цифр → должна быть ошибка валидации
  • ❌ Серия не 4 цифры → ошибка
  • ❌ Номер не 6 цифр → ошибка
  • ❌ СНИЛС в неправильном формате → ошибка

Тест 2: Шаблоны смен

Где: Сотрудники → Шаблоны смен (в боковом меню раскрыть “Сотрудники”)

Шаги

  1. Открыть “Шаблоны смен”
  2. Выбрать ТТ в выпадающем списке
  3. Нажать “Добавить шаблон”
  4. Заполнить:
    • Название: Утренняя
    • Время начала: 08:00
    • Длительность: 480 (это 8 часов в минутах)
  5. Сохранить
  6. Создать ещё один: Вечерняя, 16:00, 480

Успешный результат

  • ✅ Шаблоны появились в таблице
  • ✅ Отображается время окончания (рассчитывается автоматически: 08:00 + 8ч = 16:00)
  • ✅ Можно редактировать и удалять шаблоны
  • ✅ Максимум 4 шаблона на ТТ — при попытке создать 5-й должна быть ошибка

Тест 3: Расписание смен

Где: Сотрудники → Расписание

Шаги

  1. Открыть “Расписание”
  2. Выбрать ТТ
  3. Должна появиться таблица-календарь: строки = сотрудники этой ТТ, столбцы = дни недели
  4. Кликнуть на пустую ячейку будущего дня (завтра или позже)
  5. В модалке выбрать шаблон (например “Утренняя”) или ввести вручную время и длительность
  6. Нажать “Сохранить”
  7. Ячейка должна окраситься в голубой и показать время (например “08:00–16:00”)

Дополнительные проверки

  1. Кликнуть на созданную смену → должна открыться модалка редактирования
  2. Изменить время → сохранить → проверить что обновилось
  3. Удалить смену → ячейка снова пустая
  4. Попробовать переключить период: Неделя ↔ Месяц
  5. Попробовать навигацию: ← (прошлая неделя) → (следующая)

Успешный результат

  • ✅ Сетка показывает всех сотрудников ТТ
  • ✅ Можно создать смену на будущий день
  • ✅ Нельзя создать смену на прошедший день (ошибка)
  • ✅ Смены отображаются с правильным временем
  • ✅ Шаблоны доступны в выпадающем списке при создании

Цветовая кодировка (пока только голубой)

ЦветЗначение
🔵 ГолубойЗапланировано (будущее)
🟢 ЗелёныйПо расписанию (отработал вовремя)
🟡 ЖёлтыйНе по расписанию (опоздал / ушёл раньше)
🔴 КрасныйПропущено (план был, не пришёл)
🟣 СиреневыйВне плана (плана не было, но отработал)

Зелёный/жёлтый/красный/сиреневый появятся когда будут фактические смены (через POS или ручной ввод).


Тест 4: Ручной ввод фактической смены

Где: Через API (пока нет кнопки в интерфейсе для ручного ввода)

Этот тест для продвинутых — нужно использовать браузерную консоль или Postman.

Зачем

POS-терминал ещё не готов. Чтобы проверить активность и расчёт зарплаты, нужно вручную внести что сотрудник отработал смену.

Шаги (через консоль браузера)

  1. Открыть админку, нажать F12 → Console
  2. Вставить и выполнить (заменить ID сотрудника и ТТ на свои):
fetch("/api/v1/admin/shift-records", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer " + localStorage.getItem("access_token")
  },
  body: JSON.stringify({
    employee_id: "ВСТАВИТЬ_ID_СОТРУДНИКА",
    store_id: "ВСТАВИТЬ_ID_ТТ",
    date: "2026-04-14",
    clock_in: "2026-04-14T09:00:00",
    clock_out: "2026-04-14T17:30:00",
    break_start: "2026-04-14T13:00:00",
    break_end: "2026-04-14T13:30:00"
  })
}).then(r => r.json()).then(d => console.log(d));
  1. В консоли должен появиться ответ с "status": "unplanned" или "on_schedule"

Где найти ID сотрудника и ТТ

  • ID сотрудника: открыть карточку сотрудника → в адресной строке будет /employees/UUID — скопировать UUID
  • ID ТТ: открыть карточку ТТ → аналогично из адресной строки

Успешный результат

  • ✅ В консоли ответ без ошибки, статус 200
  • ✅ В “Активность” за эту дату — появился сотрудник с часами

Тест 5: Активность сотрудников

Где: Сотрудники → Активность

Перед этим тестом нужно выполнить Тест 4 (создать хотя бы одну фактическую смену).

Шаги

  1. Открыть “Активность”
  2. Выбрать ТТ
  3. Выбрать дату, за которую создавали смену (Тест 4)
  4. Должна появиться таблица

Успешный результат

  • ✅ Видно ФИО сотрудника
  • ✅ Пришёл / Ушёл — время отображается
  • ✅ Перерыв — количество минут
  • ✅ Отработано — количество часов
  • ✅ Колонки “Заказов”, “Продажи” — прочерки (заказы ещё не реализованы)

Тест 6: Формулы зарплаты

Где: Сотрудники → Формулы зарплаты

Шаги

  1. Открыть “Формулы зарплаты”
  2. Нажать “Добавить формулу”
  3. Выбрать тип: “По роли”
  4. Выбрать роль: Кассир
  5. Тип формулы: Почасовая
  6. Ставка: 500 (рублей в час)
  7. Сохранить
  8. Создать ещё одну: роль Менеджер, тип Оклад, сумма 60000

Успешный результат

  • ✅ Формулы отображаются в таблице
  • ✅ Кассир: “Почасовая — 500 р/ч”
  • ✅ Менеджер: “Оклад — 60 000 р/мес”
  • ✅ Можно редактировать и удалять

Типы формул

ТипКак считаетсяПример
ПочасоваяСтавка × отработанные часы500 р/ч × 160ч = 80 000 р
ОкладФиксированная сумма в месяц60 000 р
СмешаннаяОклад + ставка за переработку50 000 р + 600 р/ч × часы сверх нормы

Тест 7: Платёжные ведомости

Где: Сотрудники → Ведомости

Перед этим тестом нужно: формулы зарплаты (Тест 6) + хотя бы одна фактическая смена (Тест 4).

Шаги

  1. Открыть “Ведомости”
  2. Выбрать ТТ
  3. Выбрать период (текущий месяц)
  4. Нажать “Рассчитать”
  5. Должна появиться таблица с сотрудниками

Что должно быть в таблице

КолонкаЧто показывает
СотрудникФИО
РольКассир / Менеджер
ТТНазвание торговой точки
План часовСколько часов по расписанию
Факт часовСколько реально отработал
ПерерывыЧасы перерывов
Чистое времяФакт − перерывы
ФормулаТип (Почасовая 500 р/ч или Оклад 60 000 р)
НачисленоСумма к выплате
СтатусРассчитано → Подтверждено → Выплачено

Проверить workflow статусов

  1. Нажать “Подтвердить” у записи со статусом “Рассчитано”
    • Статус должен измениться на “Подтверждено” (оранжевый)
  2. Нажать “Выплачено” у записи со статусом “Подтверждено”
    • Статус должен измениться на “Выплачено” (зелёный)
  3. Нажать “Экспорт CSV” — должен скачаться файл

Успешный результат

  • ✅ Расчёт создаёт записи для всех сотрудников ТТ с формулами
  • ✅ Почасовая: начислено = ставка × чистые часы (если 0 часов → 0 рублей)
  • ✅ Оклад: начислено = полная сумма оклада (даже если 0 часов)
  • ✅ Статусы переключаются: Рассчитано → Подтверждено → Выплачено
  • ✅ CSV скачивается

Тест 8: Боковое меню

Где: Левая панель навигации

Шаги

  1. Найти в боковом меню раздел “Сотрудники”
  2. Кликнуть на него — должен раскрыться список подразделов
  3. Проверить что есть: Список, Расписание, Шаблоны смен, Активность, Формулы зарплаты, Ведомости
  4. Кликнуть повторно — должен свернуться
  5. Проверить что другие разделы тоже сворачиваются (Каталог, Склад, Заказы)

Успешный результат

  • ✅ Все разделы раскрываются/сворачиваются по клику
  • ✅ Шевронок (▶) поворачивается при раскрытии
  • ✅ Текущий раздел подсвечен фиолетовым
  • ✅ При переходе на страницу — её раздел автоматически раскрыт

Известные ограничения

Это не баги, а то что ещё не реализовано.

ЧтоПочему
В “Активность” колонки заказов/продаж пустоДанные по заказам появятся после интеграции с Order Service
Нет кнопки “Ввести факт” в расписанииРучной ввод пока через API (Тест 4). Кнопка будет позже
Время показывается по МосквеБэкенд хранит в UTC, фронт конвертирует в локальное время браузера
POS-авторизация не работаетPOS-терминал ещё не реализован, смены вводятся вручную

Если нашли баг

Запишите:

  1. Что делали (по шагам)
  2. Что ожидали увидеть
  3. Что увидели на самом деле
  4. Скриншот (если возможно)
  5. URL страницы из адресной строки

Отправьте Алексею — он заведёт баг-репорт.