Отчёт по смене
Роут: /shift-records/:id/report
API: GET /api/v1/admin/shift-records/:id/report
Что видит пользователь
Детальный отчёт по конкретной смене кассира. Вверху — информация о смене, ниже — финансовые показатели (карточки), далее — таблица топ товаров.
Навигация
- Ссылка “Назад” → возврат к дашборду активности / расписанию смен
- Хлебные крошки: Активность → Сотрудники → Отчёт по смене
Шапка
| Элемент | Данные | Примечание |
|---|
| ФИО сотрудника | shift.employee_name | Крупный текст |
| Бейдж роли | из JWT / справочник | ”Кассир”, “Менеджер” |
| Торговая точка | shift.store_name | — |
| Дата смены | shift.date | DD.MM.YYYY |
| Статус отчёта | report_type | Бейдж: зелёный “X-отчёт (смена открыта)” / серый “Z-отчёт (смена закрыта)“ |
Блок времени
| Показатель | Данные | Формат |
|---|
| Начало смены | shift.clock_in | HH:MM |
| Конец смены | shift.clock_out | HH:MM или “сейчас” (для X-отчёта) |
| Перерыв | shift.break_duration_minutes | ”30 мин” |
| Отработано | вычисляемое | ”7ч 30м” |
Метрики — финансы (карточки, 1 ряд)
| Карточка | Значение | Иконка |
|---|
| Выручка | financials.total_revenue | Рубль |
| Наличные | financials.cash_amount | Купюра |
| Карта | financials.card_amount | Карта |
| QR | financials.qr_amount | QR-код |
Формат: число с разделителем тысяч + ” ₽“.
Метрики — заказы (карточки, 2 ряд)
| Карточка | Значение | Иконка |
|---|
| Всего заказов | financials.total_orders | Чек |
| Завершено | financials.completed_orders | Галочка |
| Отменено | financials.cancelled_orders | Крестик |
| Средний чек | financials.average_check | Калькулятор |
Таблица: Топ товаров
| Колонка | Данные | Примечание |
|---|
| # | Порядковый номер | 1, 2, 3… |
| Название | top_items[].name | — |
| Количество | top_items[].quantity | шт. |
| Сумма | top_items[].amount | ₽, с разделителем тысяч |
Сортировка: по сумме desc (приходит с бэкенда).
Если top_items пуст — “Нет данных о проданных товарах”.
Действия
| Действие | Элемент | Описание |
|---|
| Экспорт CSV | Кнопка в шапке | Скачивает отчёт в CSV (клиентская генерация) |
Состояния
| Состояние | Что показываем |
|---|
| Загрузка | Skeleton для шапки + карточек + таблицы |
| Данные | Полный отчёт |
| Нет заказов | Шапка смены + карточки с нулями + “Нет заказов за эту смену” |
| Ошибка | ”Не удалось загрузить отчёт” + кнопка “Повторить” |
| 404 | ”Смена не найдена” |
| 403 | Редирект на дашборд |
Ролевой доступ
| Роль | Доступ |
|---|
| Franchise | Все смены |
| Franchisee | Только свои ТТ |
| Менеджер ТТ | Только своя ТТ |
| Кассир | 403, редирект |
Переходы
| Откуда | Куда | Триггер |
|---|
| Дашборд активности | Отчёт по смене | Клик по строке сотрудника → кнопка “Отчёт” |
| Дашборд терминалов | Отчёт по смене | Клик по строке смены |
| Расписание смен | Отчёт по смене | Клик по факт. смене |
| Отчёт по смене | Карточка сотрудника | Клик по ФИО |
Ссылки