Сценарий идентификации покупателя

Процесс запускается по команде ‘Идентификация покупателя SP’. По окончании процесса касса получает идентификатор покупателя. Если идентификатор не будет заполнен, то считается, что покупатель не участвует в программе лояльности.

На экране отображается форма с данными покупателя, информационной строкой, кнопками для выбора действий.

image-1733391386767.png

Поля:

  • Номер телефона (начинается с 7)
  • Номер карты – можно сканировать ШК, можно ввести вручную часть номера
  • Фамилия
  • Имя
  • Отчество
  • Дата рождения
  • Число баллов (для просмотра)
  • Строка с сообщением для кассира

Кнопки:

  • Поиск
  • Регистрация
  • Отмена
  • Подтвердить телефон
  • Выбрать

Вся дальнейшая работа внутри процесса выполняется в данной форме. Форма закрывается только при выходе из процесса. Промежуточные результаты отображаются в полях формы и в информационной строке.

Сначала кассир вводит один из идентификаторов покупателя: номер телефона или номер карты. В терминах SP это user_phone и origin_user_id. Номер телефона начинается с цифры 7.

Предполагается, что в будущем останется только один идентификатор – номер телефона. Но в переходный период идентификатором также является номер дисконтной карты в Домино. Номер карты – это 13-значное число в формате EAN13. Кассир может либо сканировать ШК карты, либо ввести короткий номер карты. Код EAN13 получается из номера карты путём добавления префикса 267, далее необходимое число нулей, введённый код, контрольный символ.

Основные сценарии работы кассира

1. Покупатель является участником программы лояльности

Если покупатель говорит, что он является участником программы лояльности, то кассир выбирает кнопку ‘Поиск’. Касса отправляет в SP запрос users/info. SP по номеру телефона (или номеру карты) ищет в своей БД запись участника программы. Если поиск завершается успешно, то SP в ответе на запрос возвращает информацию об участнике программы. Касса заполняет остальные поля формы данными из ответа. Далее проверяется наличие значения в поле Телефон. Если поле не заполнено, то в информационной строке отображается тест: ‘Требуется подтверждение телефона’. Если телефон заполнен, то в информационной строке появляется сообщение ‘Покупатель является участником программы лояльности’. Если SP присылает отрицательный ответ (подходящая запись в БД не обнаружена), то в информационной строке отображается ответ из SP.

Далее кассир анализирует информацию на экране и действует по одному из следующих сценариев.

  • 1.1. Участие подтверждено, телефон имеется. В строке сообщения находится текст ‘Покупатель является участником программы лояльности’

Кассир нажимает кнопку ‘Выбрать’. Форма закрывается. Идентификатор покупателя определён.

  • 1.2. Участие подтверждено, не указан телефон. В строке сообщения находится текст ‘Требуется подтверждение телефона’

Кассир вводит номер телефона и нажимает кнопку ‘Подтвердить телефон’.

Сначала касса отправляет запрос users/info для проверки, что данный телефон ещё не зарегистрирован. Если ответ положительный, то в информационной строке отображается текст ‘Покупатель с таким телефоном уже зарегистрирован’. Выполняется возврат в форму. Кассир либо вводит другой номер телефона, либо отменяет идентификацию.

Если ответ отрицательный (т.е. в базе SP нет регистрации данного телефона), то касса отправляет в SP запрос send/sms-code для подтверждения номера. Если ответ отрицательный, то в информационную строку записывается сообщение об ошибке. Выполняется возврат в форму.
В случае положительного ответа приходит код подтверждения. Отображается новая форма для запроса кода. В форме одно поле ‘Введите код’ и две кнопки: ‘Проверить’, ‘Отмена’. Покупатель называет код, полученный по sms, кассир вводит этот код и нажимает ‘проверить’. Касса сверяет введённый код с кодом, полученным в ответе на запрос.
Если коды совпадают, то касса отправляет в SP запрос users/update. Если ответ положительный, то в информационной строке отображается ‘Телефон подтверждён’. Выполняется возврат в основную форму. В информационной строке появляется сообщение ‘Покупатель является участником программы лояльности’. 

Если получен отрицательный ответ на запрос, то выполняется возврат в форму, в информационной строке отображается сообщение об ошибке.

Если код, названный покупателем, не совпадают с кодом, полученным по запросу, то в форме для запроса отображается ‘неверный код’. Кассир может повторно ввести код и нажать ‘проверить’. Если кассир нажимает ‘Отмена’, то выполняется возврат в основную форму без подтверждения телефона. В информационной строке остаётся текст ‘Требуется подтверждение телефона’.

  • 1.3. Участие не подтверждено. Текст в информационной строке содержит описание ошибки

Дальнейшие действия либо по ветке 2, либо по ветке 3.

2. Покупатель не является участником программы лояльности и не хочет участвовать

Кассир выбирает ‘Отмена’. Форма закрывается, идентификация завершается без заполнения идентификатора покупателя.

3. Покупатель не является участником программы лояльности и хочет зарегистрироваться

Кассир заполняет в форме остальные параметры. Обязательно должны быть заполнены телефон, Имя, Фамилия. Отчество и дата рождения не обязательны к заполнению. Номер карты для регистрации не нужен и будет очищен.

Далее выполняются действия по проверке телефона в базе SP и его подтверждения. Подробно эти действия описаны в ветке 1.2. Алгоритм действий такой же, но после успешного подтверждения телефона регистрация продолжается. Касса отправляет в SP запрос на регистрацию users/add. Если в ответе будет ошибка, то отображается текст ошибки в информационной строке. Выполняется возврат в основную форму. В случае положительного ответа форма закрывается. Идентификатор покупателя определён.