Тестирование: Сотрудники — расширение (BR 1.4.1)
Адрес: https://erp-test.nirbi.ru/admin Логин: admin@erp.local / admin123
Что тестируем
Новые разделы в админке для управления персоналом:
- Юридические детали сотрудника (ИНН, паспорт, ВУ, СНИЛС)
- Расписание смен (планирование графиков работы)
- Шаблоны смен (заготовки для быстрого создания расписания)
- Активность сотрудников (кто работал, сколько отработал)
- Формулы зарплаты (ставки и оклады)
- Платёжные ведомости (расчёт зарплаты)
Подготовка
Перед тестированием нужно убедиться что есть:
- Торговая точка (ТТ) — зайти в “Торговые точки”, убедиться что есть хотя бы одна
- Сотрудник-кассир — зайти в “Сотрудники → Список”, создать кассира если нет:
- Имя, фамилия, email, пароль
- Роль: Кассир
- Привязать к ТТ
- Сотрудник-менеджер — аналогично, роль: Менеджер
Тест 1: Юридические детали
Где: Сотрудники → Список → кликнуть на сотрудника → вкладка “Юридические детали”
Шаги
- Открыть карточку любого сотрудника
- Перейти на вкладку “Юридические детали”
- Должно быть написано “Нет данных” и кнопка “Заполнить”
- Нажать “Заполнить”
- Заполнить поля:
- ИНН:
123456789012(ровно 12 цифр) - Серия паспорта:
1234(4 цифры) - Номер паспорта:
567890(6 цифр) - Водительское удостоверение:
7711 223344 - Срок действия ВУ: любая будущая дата
- СНИЛС:
123-456-789 00(формат с дефисами и пробелом)
- ИНН:
- Нажать “Сохранить”
Успешный результат
- ✅ Данные сохранились, отображаются в режиме просмотра
- ✅ При повторном открытии вкладки — данные на месте
- ✅ Можно нажать “Редактировать” и изменить любое поле
Что может пойти не так
- ❌ ИНН не 12 цифр → должна быть ошибка валидации
- ❌ Серия не 4 цифры → ошибка
- ❌ Номер не 6 цифр → ошибка
- ❌ СНИЛС в неправильном формате → ошибка
Тест 2: Шаблоны смен
Где: Сотрудники → Шаблоны смен (в боковом меню раскрыть “Сотрудники”)
Шаги
- Открыть “Шаблоны смен”
- Выбрать ТТ в выпадающем списке
- Нажать “Добавить шаблон”
- Заполнить:
- Название:
Утренняя - Время начала:
08:00 - Длительность:
480(это 8 часов в минутах)
- Название:
- Сохранить
- Создать ещё один:
Вечерняя,16:00,480
Успешный результат
- ✅ Шаблоны появились в таблице
- ✅ Отображается время окончания (рассчитывается автоматически: 08:00 + 8ч = 16:00)
- ✅ Можно редактировать и удалять шаблоны
- ✅ Максимум 4 шаблона на ТТ — при попытке создать 5-й должна быть ошибка
Тест 3: Расписание смен
Где: Сотрудники → Расписание
Шаги
- Открыть “Расписание”
- Выбрать ТТ
- Должна появиться таблица-календарь: строки = сотрудники этой ТТ, столбцы = дни недели
- Кликнуть на пустую ячейку будущего дня (завтра или позже)
- В модалке выбрать шаблон (например “Утренняя”) или ввести вручную время и длительность
- Нажать “Сохранить”
- Ячейка должна окраситься в голубой и показать время (например “08:00–16:00”)
Дополнительные проверки
- Кликнуть на созданную смену → должна открыться модалка редактирования
- Изменить время → сохранить → проверить что обновилось
- Удалить смену → ячейка снова пустая
- Попробовать переключить период: Неделя ↔ Месяц
- Попробовать навигацию: ← (прошлая неделя) → (следующая)
Успешный результат
- ✅ Сетка показывает всех сотрудников ТТ
- ✅ Можно создать смену на будущий день
- ✅ Нельзя создать смену на прошедший день (ошибка)
- ✅ Смены отображаются с правильным временем
- ✅ Шаблоны доступны в выпадающем списке при создании
Цветовая кодировка (пока только голубой)
| Цвет | Значение |
|---|---|
| 🔵 Голубой | Запланировано (будущее) |
| 🟢 Зелёный | По расписанию (отработал вовремя) |
| 🟡 Жёлтый | Не по расписанию (опоздал / ушёл раньше) |
| 🔴 Красный | Пропущено (план был, не пришёл) |
| 🟣 Сиреневый | Вне плана (плана не было, но отработал) |
Зелёный/жёлтый/красный/сиреневый появятся когда будут фактические смены (через POS или ручной ввод).
Тест 4: Ручной ввод фактической смены
Где: Через API (пока нет кнопки в интерфейсе для ручного ввода)
Этот тест для продвинутых — нужно использовать браузерную консоль или Postman.
Зачем
POS-терминал ещё не готов. Чтобы проверить активность и расчёт зарплаты, нужно вручную внести что сотрудник отработал смену.
Шаги (через консоль браузера)
- Открыть админку, нажать F12 → Console
- Вставить и выполнить (заменить 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));- В консоли должен появиться ответ с
"status": "unplanned"или"on_schedule"
Где найти ID сотрудника и ТТ
- ID сотрудника: открыть карточку сотрудника → в адресной строке будет
/employees/UUID— скопировать UUID - ID ТТ: открыть карточку ТТ → аналогично из адресной строки
Успешный результат
- ✅ В консоли ответ без ошибки, статус 200
- ✅ В “Активность” за эту дату — появился сотрудник с часами
Тест 5: Активность сотрудников
Где: Сотрудники → Активность
Перед этим тестом нужно выполнить Тест 4 (создать хотя бы одну фактическую смену).
Шаги
- Открыть “Активность”
- Выбрать ТТ
- Выбрать дату, за которую создавали смену (Тест 4)
- Должна появиться таблица
Успешный результат
- ✅ Видно ФИО сотрудника
- ✅ Пришёл / Ушёл — время отображается
- ✅ Перерыв — количество минут
- ✅ Отработано — количество часов
- ✅ Колонки “Заказов”, “Продажи” — прочерки (заказы ещё не реализованы)
Тест 6: Формулы зарплаты
Где: Сотрудники → Формулы зарплаты
Шаги
- Открыть “Формулы зарплаты”
- Нажать “Добавить формулу”
- Выбрать тип: “По роли”
- Выбрать роль: Кассир
- Тип формулы: Почасовая
- Ставка:
500(рублей в час) - Сохранить
- Создать ещё одну: роль Менеджер, тип Оклад, сумма
60000
Успешный результат
- ✅ Формулы отображаются в таблице
- ✅ Кассир: “Почасовая — 500 р/ч”
- ✅ Менеджер: “Оклад — 60 000 р/мес”
- ✅ Можно редактировать и удалять
Типы формул
| Тип | Как считается | Пример |
|---|---|---|
| Почасовая | Ставка × отработанные часы | 500 р/ч × 160ч = 80 000 р |
| Оклад | Фиксированная сумма в месяц | 60 000 р |
| Смешанная | Оклад + ставка за переработку | 50 000 р + 600 р/ч × часы сверх нормы |
Тест 7: Платёжные ведомости
Где: Сотрудники → Ведомости
Перед этим тестом нужно: формулы зарплаты (Тест 6) + хотя бы одна фактическая смена (Тест 4).
Шаги
- Открыть “Ведомости”
- Выбрать ТТ
- Выбрать период (текущий месяц)
- Нажать “Рассчитать”
- Должна появиться таблица с сотрудниками
Что должно быть в таблице
| Колонка | Что показывает |
|---|---|
| Сотрудник | ФИО |
| Роль | Кассир / Менеджер |
| ТТ | Название торговой точки |
| План часов | Сколько часов по расписанию |
| Факт часов | Сколько реально отработал |
| Перерывы | Часы перерывов |
| Чистое время | Факт − перерывы |
| Формула | Тип (Почасовая 500 р/ч или Оклад 60 000 р) |
| Начислено | Сумма к выплате |
| Статус | Рассчитано → Подтверждено → Выплачено |
Проверить workflow статусов
- Нажать “Подтвердить” у записи со статусом “Рассчитано”
- Статус должен измениться на “Подтверждено” (оранжевый)
- Нажать “Выплачено” у записи со статусом “Подтверждено”
- Статус должен измениться на “Выплачено” (зелёный)
- Нажать “Экспорт CSV” — должен скачаться файл
Успешный результат
- ✅ Расчёт создаёт записи для всех сотрудников ТТ с формулами
- ✅ Почасовая: начислено = ставка × чистые часы (если 0 часов → 0 рублей)
- ✅ Оклад: начислено = полная сумма оклада (даже если 0 часов)
- ✅ Статусы переключаются: Рассчитано → Подтверждено → Выплачено
- ✅ CSV скачивается
Тест 8: Боковое меню
Где: Левая панель навигации
Шаги
- Найти в боковом меню раздел “Сотрудники”
- Кликнуть на него — должен раскрыться список подразделов
- Проверить что есть: Список, Расписание, Шаблоны смен, Активность, Формулы зарплаты, Ведомости
- Кликнуть повторно — должен свернуться
- Проверить что другие разделы тоже сворачиваются (Каталог, Склад, Заказы)
Успешный результат
- ✅ Все разделы раскрываются/сворачиваются по клику
- ✅ Шевронок (▶) поворачивается при раскрытии
- ✅ Текущий раздел подсвечен фиолетовым
- ✅ При переходе на страницу — её раздел автоматически раскрыт
Известные ограничения
Это не баги, а то что ещё не реализовано.
| Что | Почему |
|---|---|
| В “Активность” колонки заказов/продаж пусто | Данные по заказам появятся после интеграции с Order Service |
| Нет кнопки “Ввести факт” в расписании | Ручной ввод пока через API (Тест 4). Кнопка будет позже |
| Время показывается по Москве | Бэкенд хранит в UTC, фронт конвертирует в локальное время браузера |
| POS-авторизация не работает | POS-терминал ещё не реализован, смены вводятся вручную |
Если нашли баг
Запишите:
- Что делали (по шагам)
- Что ожидали увидеть
- Что увидели на самом деле
- Скриншот (если возможно)
- URL страницы из адресной строки
Отправьте Алексею — он заведёт баг-репорт.