Перейти к содержанию

Настройка карточки клиента

Конфигуратор «Настройка профиля клиента» определяет, как выглядит карточка клиента: какие поля (атрибуты) есть у клиента, как они подписаны, в каких блоках левой колонки стоят, какие разделы и вкладки с таблицами данных показываются справа. Экран открывается пунктом Администрирование → «Профиль клиента» (в автономном режиме пункт называется «Настройка профиля клиента»).

Настройка версионируется целиком: правки готовятся в черновике и попадают в карточку у всех операторов только после активации версии.

Версии настройки

Раздел открывается списком версий настройки. Подзаголовок экрана: «Активная может быть только одна версия. Изменения применяются ко всем данным на стенде».

Колонка Содержимое
Название Название версии
Статус «Активна» — по ней собирается карточка клиента; «Черновик» — остальные версии
Изменил Кто правил версию последним
Изменена Дата и время последней правки

Активная версия всегда первая, ниже — черновики по дате изменения. Один клик выбирает строку (можно несколько), двойной — открывает версию, правый — меню «Открыть», «Создать копию», «Активировать», «Удалить». Недоступное действие остаётся на месте с подсказкой, почему оно недоступно.

Кнопка Что делает
Активировать Делает выбранный черновик активной версией (см. Активация). Доступна при выборе одной версии
Создать копию Копирует любую версию, в том числе активную, в новый черновик «Копия: {название}» и сразу открывает его; тост «Создан черновик — правьте и делайте активным»
Удалить В интерфейсе пока неактивна («Скоро»); активную версию удалить нельзя в любом случае

Типичный порядок работы: снять копию с активной версии, отредактировать черновик, проверить предпросмотр и активировать.

Активация

Окно «Сделать настройку активной?» предупреждает: «Карточка клиента изменится для всех на стенде. Текущая активная настройка станет черновиком — её можно активировать снова.» Ниже — перечень отличий от активной версии, который считает сервер: «Отличий от активной настройки: N», сгруппированный по виду изменения — «Добавлено», «Убрано», «Переименовано», «Порядок», «Свойства»; у каждой строки — вид сущности: «Атрибут», «Расположение», «Раздел», «Столбец». Если отличий нет, окно сообщает «Отличий от активной настройки нет — карточка клиента не изменится», и активировать всё равно можно. Подтверждение — «Да, сделать активной».

Переключение атомарно: прежняя активная версия становится черновиком в той же операции.

Заполненные значения не теряются молча

Версию, в которой нет атрибута, заполненного у клиентов и присутствующего в активной версии, активировать нельзя: «Активировать нельзя: в этой версии нет атрибута, который заполнен у клиентов и показывается сейчас…» (409 configuration_field_has_values с перечнем ключей). Верните атрибут в версию. Сами значения при этом не удаляются.

Активация — отдельное право LOYALTY_CLIENT_PROFILE_ACTIVATE: права на правку для неё недостаточно, и наоборот.

Удаление версий

Удалить черновик можно через API: DELETE /v1/admin/client-profile/configurations/{id} или пакетом POST /v1/admin/client-profile/configurations/bulk-delete с телом {ids} — выбор удаляется целиком или не удаляется вовсе. Активная версия не удаляется (409 configuration_active_undeletable). Значения атрибутов у клиентов при удалении версии не трогаются. Нужна роль LOYALTY_CLIENT_PROFILE_DELETE; других прав на удаление нет.

Экран версии

Версия открывается экраном «Настройка профиля клиента» с двумя вкладками — «Структура профиля клиента» и «Атрибуты» (по умолчанию открывается «Атрибуты»). В шапке — название версии, её статус и кнопка переименования (переименовать можно и активную версию); ссылка «Все настройки» возвращает к списку версий.

Активная версия — только просмотр

Активную версию не правят: экран показывает плашку «Активная настройка открыта только для просмотра. Чтобы её изменить, создайте копию, отредактируйте и сделайте активной.» с кнопкой «Создать копию».

Правки черновика сохраняются двумя способами:

Что Когда применяется
Порядок карточек, разделов, таблиц, атрибутов и столбцов; переименование карточек, разделов, таблиц и подписей столбцов; перенос таблицы в другой раздел; переключатели «Видимость» и «В каталоге» Копятся на экране и уходят по общей кнопке «Сохранить» — одной на обе вкладки
Создание и правка атрибута в форме; создание и удаление карточек, разделов, таблиц; архивация, возврат из архива и удаление атрибутов Сразу, после своего подтверждения

Пока есть несохранённые правки, в шапке видна надпись «Есть несохранённые изменения» и кнопка «Отменить изменения» (с подтверждением «Вы уверены, что хотите отменить все несохранённые изменения?»). Переключение вкладок правки не теряет, уход со страницы — через подтверждение. Кнопка «Предпросмотр» показывает карточку с текущими настройками, см. Предпросмотр.

Если версию параллельно изменил другой администратор, сохранение отклоняется: «Настройку изменил другой администратор, пока вы работали. Она перечитана — повторите правку».

Вкладка «Структура профиля клиента»

Вкладка задаёт скелет карточки клиента. У каждой из двух частей есть ссылка «Где это на карточке» — схема карточки с подсвеченной областью.

Карточки

«Карточки» — блоки левой колонки карточки клиента: поля с одним значением на клиента. Колонки: название и «Атрибутов: N». Кнопка «Добавить карточку» открывает форму «Новая карточка»:

Поле Правило
Название Обязательно, например «Контактные данные»
Схема, Таблица Необязательно: схема и таблица базы, откуда берутся значения полей карточки. Без источника поля карточки заполняются вручную
  • Название правится по месту двойным кликом, порядок — перетаскиванием.
  • Иконка настройки строки открывает атрибуты карточки на вкладке «Атрибуты».
  • Карточки, поставляемые с продуктом («Клиент», «Баллы и уровень»), удалить нельзя. Карточку с атрибутами тоже нельзя удалить — сначала перенесите атрибуты в другую карточку.

Таблицы данных по клиенту

«Таблицы данных по клиенту» — вкладки правой части карточки, сгруппированные по разделам. Здесь живут данные, которых у клиента много: операции, покупки, коммуникации.

  • «Добавить раздел» — форма «Новый раздел» с полем «Название раздела». Раздел с таблицами удалить нельзя — сначала перенесите их в другой раздел.
  • «Добавить таблицу» в строке раздела — форма «Новая таблица»: «Название», «Раздел», «Схема» и «Таблица» — все обязательны. Если своего названия нет, оно подставляется из описания выбранной таблицы-источника.
  • Двойной клик по таблице открывает форму «Изменить таблицу»: можно переименовать таблицу и перенести её в другой раздел; источник после создания не меняется.
  • Под названием таблицы — «Источник: {схема}.{таблица}», рядом — «Столбцов: N из M» (сколько столбцов источника показывается).
  • Порядок разделов и таблиц внутри раздела — перетаскиванием.

Строки таблицы-источника связываются с клиентом по колонке external_id — она должна быть у таблицы и иметь строковый тип (иначе 422 source_link_not_found).

Вкладки продукта

В каждой версии есть восемь вкладок, которые поставляются с продуктом, в трёх разделах продукта:

Раздел Вкладки
Баллы и уровень «Счета и балансы», «Бонусные операции», «Сроки сгорания», «История уровней»
Клиент «Статус клиента», «Достижения», «Рефералы»
Активность и коммуникации «Участие в акциях»

Содержимое таких вкладок задаёт продукт: источника и столбцов у них нет (подпись источника под названием вкладки продукта пока выводится без значения — «Источник: null.null»). Вкладку продукта нельзя удалить; переставить и перенести в другой раздел можно. Раздел продукта можно переименовать и переставить, но не удалить.

Не переименовывайте вкладки продукта

Карточка клиента пока опознаёт вкладку продукта по её названию. Переименованная вкладка продукта в карточке покажется дважды: под прежним названием — с данными продукта, под новым — как таблица, данные которой не загружаются.

Признак «показывать в карточке» пока не действует

У вкладки продукта есть признак showInCard (по умолчанию true): его принимает только API — PUT /v1/admin/client-profile/groups/{id} как обычную правку черновика; копия версии его переносит, а окно активации показывает его смену свойством («показ в карточке: да → нет»). Выключить признак можно только у вкладки продукта — у карточки и таблицы администратора false отклоняется 400 validation_failed. Интерфейс конфигуратора и карточки клиента признак пока не учитывает: вкладка со showInCard: false в карточке всё равно показывается. Это не право доступа — данные вкладки по-прежнему доступны через API.

Источники данных

Схемы, из которых можно брать таблицы и колонки, задаёт белый список loyalty.client-profile.source-schemas (переменная LOYALTY_CLIENT_PROFILE_SOURCE_SCHEMAS, по умолчанию пуст). В списках видны только таблицы и колонки, на которые у приложения есть права в базе; человекочитаемые названия берутся из комментариев таблиц и колонок. Пока список пуст, экран сообщает «Источники не настроены: список схем пуст…»: таблицу данных завести не на чем, а карточки работают — их поля заполняются вручную.

Вкладка «Атрибуты»

Вкладка показывает содержимое одного расположения за раз — карточки или таблицы, выбранной в переключателе «Расположение». Над таблицей — заголовок расположения со счётчиком «Атрибутов: N» или «Столбцов: N» и ссылкой на его настройку в структуре.

Элемент Назначение
«Расположение» Выбор карточки или таблицы данных: сначала карточки, затем таблицы с подписью «Раздел — Таблица»
Поиск «Поиск по названию, описанию и источнику» Подстрока по строкам выбранного расположения
«Показывать архивные» Показать архивные атрибуты отдельным блоком «Архивные» под действующими
«Добавить атрибут» Форма нового атрибута; расположение подставляется из переключателя

Колонки таблицы:

Колонка Содержимое
Описание Подпись поля в карточке клиента
Название Технический ключ атрибута или колонки источника
Тип «Строка», «Число», «Дата», «Дата со временем», «Логический»
Способ ввода «Вручную», «Выпадающий список», «Из системы»; у множественного списка — пометка «Несколько»
Источник Колонка таблицы-источника, из которой берётся значение; прочерк — значение вводит оператор
Видимость Показывать ли поле в карточке клиента
В каталоге Признак «показывать колонкой в каталоге клиентов»; у столбцов таблиц неприменимо
Статус «Активен» или «В архиве»
Изменил Кто правил атрибут последним

Порядок строк — это порядок полей в карточке; меняется перетаскиванием, в том числе группой выделенных строк (при активном поиске перетаскивание выключено). Сортировки по колонкам нет.

Признак «В каталоге»

Признак сохраняется в настройке, но каталог клиентов его пока не учитывает: состав колонок каталога задан продуктом, см. Каталог клиентов.

Действия со строкой атрибута: двойной клик — форма правки, правый клик — меню «Редактировать», «Архивировать» (у архивного — «Разархивировать»), «Удалить». При выделении строк появляется панель «Выбрано: N» с кнопками «Снять выделение» и «Удалить».

У столбцов таблицы данных своей формы нет: состав и тип задаёт источник. Здесь можно только переименовать подпись по месту (пустая подпись возвращает описание колонки из источника), включить или выключить «Видимость» и поменять порядок.

Форма атрибута

Форма «Новый атрибут» («Редактировать атрибут» при правке):

Поле Правило
Описание Обязательно. Так поле будет подписано в карточке клиента
Название Обязательно. Строчные латинские буквы, цифры и «_», не с цифры, до 64 символов. После создания не меняется — по нему хранятся значения
Тип данных Обязательно: «Строка», «Число», «Дата», «Дата со временем», «Логический». После создания не меняется
Способ ввода «Вручную» или «Выпадающий список»; после создания не меняется. У атрибута с колонкой источника — «Из системы», не выбирается
Справочник Для выпадающего списка — обязательно: справочник НСИ, из которого оператор выбирает значения
Колонка источника Если у карточки есть источник: колонка таблицы, из которой читается значение (строка ищется по идентификатору клиента). Выбор подставляет название, описание и тип, делает способ ввода «Из системы», а поле — нередактируемым в карточке. После создания не меняется
Расположение Обязательно: карточка, в которой стоит поле. Атрибут кладётся только в карточку, не в таблицу
Показывать в карточке Включается выбором расположения
Показывать в каталоге клиентов Признак колонки каталога
Множественный выбор Только у выпадающего списка: оператор выбирает несколько значений, в карточке они показываются пилюлями
Чувствительные данные Пометка чувствительного атрибута

Заполненную форму нельзя закрыть молча — подтверждение «Закрыть без сохранения?». Занятое название подсвечивается под полем: «Атрибут с таким названием уже есть. Возможно, он в архиве — включите «Показывать архивные», чтобы найти его».

Чувствительные данные — пока пометка

Признак сохраняется у атрибута и показывается в предпросмотре, но в карточке клиента значения чувствительных атрибутов пока не скрываются от ролей без доступа к персональным данным.

Атрибуты, поставляемые с продуктом

Преднастроенные атрибуты — «ID клиента», «Телефон», «ФИО», «Email», «Дата рождения», «Баллы», «Уровень», «Сегменты», «Статус», «Дата регистрации» — нельзя удалить или архивировать. Чтобы убрать такой атрибут из карточки, выключите «Видимость». У них можно менять описание, расположение, порядок и признаки показа; ключ, тип и способ ввода задаёт продукт.

Архивация и удаление

  • Архивация скрывает атрибут из карточки клиента и из настройки, значения у клиентов сохраняются; действие обратимо. Архивный атрибут не редактируется — сначала верните его из архива; вернувшийся атрибут встаёт в конец порядка. Архивный атрибут продолжает занимать своё название.
  • Удаление доступно, только если атрибут не заполнен ни у одного клиента: «Удалить нельзя: у атрибута есть значения у клиентов. Перенесите его в архив — значения сохранятся».
  • Атрибут, на котором построено условие акции, не удаляется: «Удалить нельзя: на атрибуте построено условие акции {название}. Сначала удалите его в «Настройке акции», потом атрибут».
  • Удаление нескольких атрибутов подтверждается списком с возможностью снять отдельные строки («Будет удалено: N, пропущено: M»); каждый атрибут обрабатывается отдельно — при частичном успехе тост «Удалено {N} из {M}. Остальные удалить не удалось», не удалённые остаются выделенными.

Предпросмотр

Кнопка «Предпросмотр» открывает окно «Предпросмотр карточки клиента» — как будет выглядеть карточка с текущими настройками черновика, включая ещё не сохранённые правки. Значения показаны для примера по типу поля и не являются данными реального клиента. Переключатель «Показать, как видит роль без доступа к персональным данным» показывает, какие значения будут скрыты у чувствительных атрибутов.

Права

Роль Что открывает
LOYALTY_DICTIONARY_READ Просмотр версий, структуры, атрибутов, источников и отличий
LOYALTY_DICTIONARY_WRITE Правка черновиков: атрибуты, структура, столбцы, копия и переименование версии
LOYALTY_CLIENT_PROFILE_ACTIVATE Активация версии
LOYALTY_CLIENT_PROFILE_DELETE Удаление версий (через API)

Без права правки экран открывается на просмотр: кнопки и переключатели заблокированы с подсказкой «Недостаточно прав: нужна роль …». Оператору карточки клиента доступ к конфигуратору не нужен: поля и раскладка активной версии читаются отдельными операциями под LOYALTY_CUSTOMER_READ (права на саму карточку — см. Карточка клиента).

Выкладка ролей

Роли LOYALTY_CLIENT_PROFILE_ACTIVATE и LOYALTY_CLIENT_PROFILE_DELETE входят в группу LOYALTY_ADMINS. На уже развёрнутом realm Keycloak они появляются после повторного импорта ролей — без них активация и удаление версии отвечают 403.

API

Операции над содержимым версии (атрибуты, карточки, таблицы, разделы, столбцы) принимают параметр configurationId; изменяющие — ещё и заголовок If-Match с ревизией версии (без него — 428 version_required). Свежая ревизия возвращается в ETag после успешной правки.

Метод и путь Назначение
GET /v1/admin/client-profile/configurations Список версий
GET, PATCH /v1/admin/client-profile/configurations/{id} Версия; переименование
POST /v1/admin/client-profile/configurations/{id}/copy Копия версии
POST /v1/admin/client-profile/configurations/{id}/activate Активация
GET /v1/admin/client-profile/configurations/{id}/diff Отличия от активной версии
DELETE /v1/admin/client-profile/configurations/{id}, POST …/configurations/bulk-delete Удаление версии или выбора версий
/v1/admin/client-profile/fields Атрибуты: список (archived=true — вместе с архивными), создание, правка, удаление, bulk-delete, archive, unarchive, порядок order
/v1/admin/client-profile/groups Карточки и таблицы: создание, правка (название, раздел, у вкладки продукта — showInCard), удаление, порядок, столбцы таблицы {id}/columns
/v1/admin/client-profile/table-sections Разделы: создание, переименование, удаление пустого, порядок
GET /v1/admin/client-profile/source-schemas, source-tables, source-columns Каталог источников из белого списка схем

Коды ошибок:

Код HTTP Когда
configuration_active_immutable 409 Правка активной версии
configuration_already_active 409 Активация версии, которая уже активна
configuration_field_has_values 409 Активация версии без атрибута, заполненного у клиентов
configuration_active_undeletable 409 Удаление активной версии
configuration_not_found 404 Версии нет (удалена)
version_conflict / version_required 409 / 428 Ревизия версии устарела / не передана
field_key_exists 409 Название атрибута занято, в том числе архивным
field_key_immutable 422 Попытка сменить название атрибута
field_has_values 409 Удаление атрибута, заполненного у клиентов
profile_field_used_in_criterion 409 Удаление атрибута, на котором построено условие акции; в теле — условия [{code, label}]
system_field_immutable 422 Удаление или архивация преднастроенного атрибута
system_group_immutable / system_section_immutable 422 Удаление карточки, вкладки или раздела продукта
group_not_empty / section_not_empty 409 Удаление карточки с атрибутами / раздела с таблицами
invalid_field_type / invalid_input_source 422 Недопустимый тип или способ ввода
invalid_field_group 422 Расположения атрибута нет или это таблица, а не карточка
source_schema_not_allowed / source_table_not_found / source_link_not_found 422 Схема вне белого списка / таблицы нет / у таблицы нет строковой колонки external_id
validation_failed 400 Нарушение правил полей запроса (формат названия, пустые обязательные поля)
bulk_size_exceeded 400 Пакет больше loyalty.client-profile.max-bulk-ids (по умолчанию 200)