Группы клиентов — Список
Роут: /customer-groups
API: GET /api/v1/admin/customer-groups
Статус реализации
Backend готов (Customer Service: CRUD групп, members, recompute-scheduler). Фронт в админке не начат — нет папки
pages/customer-groups/.
Источники
- Бизнес: Группы клиентов
- BR: BR 3.1
- API: Customer Service API
Что видит пользователь
Страница со списком групп клиентов в виде таблицы. Вверху — заголовок «Группы клиентов», строка поиска, фильтр по типу. Справа — кнопка «+ Создать группу».
Таблица
Колонки
| Колонка | Данные | Примечание |
|---|---|---|
| Название | name | Кликабельное — переход в карточку |
| Тип | type | Chip: 🔒 Статическая / ⚙️ Динамическая |
| Клиентов | вычисляемое (кол-во в customer_group_members) | Число |
| Дата создания | created_at | Формат DD.MM.YYYY |
| Последний пересчёт | last_recomputed_at | Только для dynamic; формат DD.MM.YYYY HH:mm. Для static — «—» |
| Действия | — | Меню с действиями |
Особенности отображения
- Soft-deleted группы в списке не отображаются
- Сортировка по умолчанию — по дате создания DESC
Фильтры
| Фильтр | Тип | Значения | Default |
|---|---|---|---|
| Тип | Select | Все / Статическая / Динамическая | Все (query type) |
Поиск
- Поле ввода с placeholder «Поиск по названию»
- Debounce 300ms
- Query param:
search
Пагинация
- 20 записей на страницу
Действия
Кнопки в шапке
| Кнопка | Переход | Видимость |
|---|---|---|
| «+ Создать группу» | /customer-groups/new | Permission customer_groups.edit + только Владелец франшизы |
Меню действий строки
| Действие | Видимость | Что происходит |
|---|---|---|
| Редактировать | customer_groups.edit | Переход в /customer-groups/{id}/edit |
| Пересчитать сейчас | Для dynamic + customer_groups.edit | POST /customer-groups/{id}/recompute + toast «Пересчёт запущен» |
| Удалить | customer_groups.edit | Модалка подтверждения (см. карточку) |
Состояния
| Состояние | Что показываем |
|---|---|
| Загрузка | Skeleton-таблица |
| Пусто | «Групп ещё нет. Создайте первую группу, чтобы сегментировать клиентов» + CTA (если permission) |
| Ошибка | «Не удалось загрузить данные» + «Повторить» |
| Пустой поиск | «Ничего не найдено» |
Ролевой доступ
| Роль | Доступ |
|---|---|
| Владелец франшизы | Полный CRUD |
| Владелец партнёра | Нет доступа к разделу — в меню скрыт, URL → 403 |
| Обычный сотрудник | Только при permission customer_groups.read (чтение). Редактирование — только customer_groups.edit (обычно не выдаётся) |
Переходы
| Откуда | Куда | Триггер |
|---|---|---|
| Список | Карточка | Клик по названию |
| Список | Форма создания | «+ Создать группу» |
| Список | Форма редактирования | Меню → «Редактировать» |