Дашборд терминалов

Роут: /activity/terminals API: GET /api/v1/admin/shift-records (список смен, существующий) + GET /api/v1/admin/shift-records/:id/report (отчёт по смене, lazy при клике)


Что видит пользователь

Страница со сводкой по терминалам (сменам) за выбранный день. Вверху — карточки-сводки по всем сменам за день, ниже — таблица со списком смен.


Фильтры

ФильтрТипЗначенияDefault
Торговая точкаSelectСписок ТТ (в рамках ролевого доступа)Все ТТ
ДатаDate pickerЛюбая датаСегодня
  • Query params: store_id, date
  • При смене фильтра — перезагрузка данных

Summary cards (верхняя полоса)

КарточкаЗначениеОписание
Выручка за деньСумма total_revenue всех смен
Заказов за деньСумма total_orders всех сменшт.
Смен за деньКоличество записейшт.
Лидер продажСотрудник с макс. выручкойФИО + сумма

Загрузка summary

Summary cards загружаются вместе с таблицей. Для каждой смены в таблице подгружается краткая финансовая сводка. Агрегация — на клиенте.


Таблица смен

КолонкаДанныеПримечание
Сотрудникemployee_nameКликабельное — переход в карточку
Торговая точкаstore_nameТолько если фильтр “Все ТТ”
Начало сменыclock_inHH:MM
Конец сменыclock_outHH:MM или “В работе” (зелёный бейдж)
Статусreport_type”X” (зелёный) / “Z” (серый)
Выручкаtotal_revenue₽, загружается lazy
Заказовtotal_ordersзагружается lazy

Сортировка

  • По умолчанию: по времени начала смены (раньше — выше)
  • Клик по “Выручка” — сортировка по выручке

Клик по строке

Переход на страницу отчёта по смене: /shift-records/:id/report


Загрузка данных

  1. При открытии страницы → GET /api/v1/admin/shift-records?date={today}&status=any — получаем список смен за день
  2. Для каждой смены (параллельно, batch) → GET /api/v1/admin/shift-records/:id/report — получаем финансовую сводку
  3. Агрегация summary cards — на клиенте из полученных данных

Оптимизация

Если смен за день > 10, загружать отчёты пачками по 5 для предотвращения burst-нагрузки. Показывать skeleton для ещё не загруженных строк.


Состояния

СостояниеЧто показываем
ЗагрузкаSkeleton для карточек + skeleton-таблица
Пусто”Нет смен за выбранный день”
Частичная загрузкаТаблица с данными смен, ”…” в колонках выручки/заказов
Ошибка”Не удалось загрузить данные” + “Повторить”

Ролевой доступ

РольДоступ
FranchiseВсе ТТ
FranchiseeТолько свои ТТ
Менеджер ТТТолько своя ТТ (фильтр ТТ скрыт)
КассирНет доступа — скрыт в навигации

Переходы

ОткудаКудаТриггер
SidebarДашборд терминаловПункт “Терминалы” в разделе Активность
Дашборд терминаловОтчёт по сменеКлик по строке
Дашборд терминаловКарточка сотрудникаКлик по ФИО
Дашборд активностиДашборд терминаловТаб “Терминалы”

Ссылки