Установка и запуск станции консультанта

Публичное пространство

Установка и запуск станции консультанта

Внимание!

Если до обновления кассового и серверного ПО до 10.5.1.0 была настроена работа КСО SetSCO v.3 с СК, тогда после обновления требуется заново включить функциональность, как описано в главе Первичная настройка СК после обновления 10.5.1.0.

Для КСО SetSCO v.2 повторного включения не требуется, так как процесс настройки не изменился.

https://crystals.atlassian.net/browse/CR-11342

1.0.0

https://crystals.atlassian.net/browse/SCOD-2541

https://crystals.atlassian.net/browse/CR-15057

1.9.0

https://crystals.atlassian.net/browse/SCOC-2810

https://crystals.atlassian.net/browse/CR-15065

10.5.1.0 КСО 1.2.0 backend СК 1.13.0 frontend СК

Требования

Требования к серверу для установки станции консультанта

Данные требования к серверу подходят для стабильной работы станции консультанта с количеством касс до 15000.

  • ОС сервера: любая ОС, поддерживающая установку docker (список ОС на официальном сайте docker);

  • Процессор CPU: 4 ядра;

  • Оперативная память RAM: 6 ГБ;

  • Место на жёстком диске HDD: 50 ГБ;

  • Установленный docker, docker-compose последней версии;

  • Ip-адрес сервера, на который будет установлена станция консультанта (будет использоваться позднее для подключения к визуализации в браузере);

  • С сервера должен быть доступен artifactory.setmachine.ru:5003, так как с него происходит установка docker-контейнеров для работы станции консультанта.

Требования к устройству для работы станции консультанта

Обратите внимание!

Перед подключением к станции консультанта убедитесь, что ip-адреса касс и сервера станции консультанта находятся в одной зоне сетевых адресов: либо все локальные (приватные/частные), либо все публичные. Это поможет избежать кросс-запросов, которые запрещены политикой CORS некоторых браузеров, например браузером Chrome или Chromium.

Список локальных (частных) адресов:

  • 10.0.0.0 — 10.255.255.255 (маска подсети для бесклассовой (CIDR) адресации: 255.0.0.0 или /8);

  • 100.64.0.0 — 100.127.255.255 (маска подсети 255.192.0.0 или /10). Данная подсеть рекомендована согласно RFC 6598 для использования в качестве адресов для CGN (Carrier-Grade NAT);

  • 172.16.0.0 — 172.31.255.255 (маска подсети: 255.240.0.0 или /12);

  • 192.168.0.0 — 192.168.255.255 (маска подсети: 255.255.0.0 или /16).

  • Устройство: сенсорный моноблок, ПК, планшет, мобильное устройство;

  • Операционная система: Windows, Ubuntu, Android, iOS;

  • Процессор: от J1900 2 Ghz (или аналогичный) и выше;

  • Рекомендуемая диагональ экрана - не менее 15";

  • Браузер для подключения к визуализации: подходит любой доступный браузер.

Требования к КСО

https://crystals.atlassian.net/browse/CR-11554

10.4.12.0

  • для корректной работы функциональности станции консультанта версия ПО кассы самообслуживания должна быть не меньше 10.4.7.0;

  • ранее работа со станцией консультанта была доступна только для КСО на базе ПО SetRetail SCO v.2, но с версии 10.4.12.0 к станции консультанта могут быть подключены кассы самообслуживания SetRetail SCO v.3.

Список необходимых портов

№ порта

Тип

Назначение

№ порта

Тип

Назначение

1

5436

TCP

PostgreSQL

2

8080, 8081

TCP

Станция консультанта, базовый порт по умолчанию.

Установка

Установка докера

Требования

  • сервер на ОС Линукс;

  • установка Docker CE может производиться на любые сборки ОС Linux: CentOS, Fedora, Ubuntu и т. д.;

  • если установка производится на чистый образ, учитывайте конфигурации антивирусных программ и политики безопасности вашей сети.

Если вы используете сборку CentOS или любого другого ядра Линукс, тогда убедитесь, что у вас присутствует Midnight Commander для обновления версии станции консультанта:

Установить Midnight Commander на CentOS
yum install mc
Установить Midnight Commander на Ubuntu
sudo apt install mc

Процесс установки

  • По ссылке доступны инструкции по установке докера на все подходящие сборки ОС Linux. Обратите внимание, данные инструкции поставляются разработчиком Docker CE и регулярно обновляются.

  • Ниже приведен пример установки Docker CE. Данная инструкция выполнена на образе Fedora Server 40 и полностью подходит для установки на нем. Как указано выше, установка Docker CE может производиться на любые сборки ОС Linux: CentOS, Fedora, Ubuntu и т. д.

1. Установите пакет плагинов DNF с помощью команды ниже → после успешной установки отобразится сообщение Выполнено!

dnf -y install dnf-plugins-core

2. Добавьте репозиторий докера.

sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo

3. Запустите установку докера командой ниже → после установки первых 14 пакетов отобразится сообщение Продолжить? (д/Н): → выберите д.

sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4. После установки следующего комплекта пакетов снова отобразится сообщение Продолжить? (д/Н): → выберите д.

По окончании установки отобразится сообщение Выполнено!

5. Добавьте докер в автозагрузку.

systemctl enable --now docker

6. Запустите службу Docker CE.

Внимание!

Перед запуском проведите настройку сети докера.

По умолчанию сеть докера - 172.17.0.0/16. Если клиентом используется та же сеть, тогда возможно пересечение сетевых адресов и потеря доступа станции консультанта к кассам.

Для изменения сети докера выполните команду ниже, где 172.17.255.0/24 - новый сетевой диапазон для докера.

echo '{"default-address-pools":[{"base":"172.17.255.0/24","size":24}]}' | sudo tee /etc/docker/daemon.json
systemctl start docker

Подготовка

1. Cоздайте рабочую папку с помощью команды (в команде указана рекомендованная папка):

mkdir ${HOME}/sco

2. Скачайте файлы проекта → распакуйте архив → у вас получится следующий состав файлов.

3. Загрузите скачанные файлы в папку ${HOME}/sco.

В первом шаге была создана папка с названием ${HOME}/sco. Переменная ${HOME} позволяет любому авторизованному пользователю получить доступ к кассе. 

Если авторизация произошла под пользователем root, тогда название рабочей папки отображается как /root/sco. Но если авторизация произошла под любым другим пользователем с соответствующими правами, тогда название рабочей папки отображается как /home/имя_пользователя/sco, например, /home/attendant/sco.

Обратите внимание, файл .env обязательно должен иметь точку в начале названия!

Если точка отсутствует в названии скаченного файла, тогда поставьте ее вручную. Иначе докер не сможет получить доступ к файлу с данными пользователя. 

4. Для авторизации в репозитории выполните команду ниже → введите имя пользователя и пароль → после успешной авторизации отобразится текст Login Succeeded.

Входные данные для авторизации в репозитории станции консультанта:

  • имя пользователя (username): scoattendant-customers

  • пароль (password): i9)g_2t&01E$

docker login artifactory.setmachine.ru:5003

Корректировка docker-compose

Откройте файл ${HOME}/sco/docker-compose.yml удалите первую строчку version, если версия установленного докера отличается от заданной в файле.

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

Изменение настроек с версии 10.5.1.0

Внимание! С версии кассового/серверного ПО 10.5.1.0 (версия СК 1.2.0 backend, 1.13.1 frontend) изменен процесс подключения и первичной настройки станции консультанта.

Если вы выполняете первичную настройку СК для КСО версии 10.5.1.0 и позже, тогда после загрузки проектных файлов и корректировки docker-compose (если необходимо), сначала перейдите к запуску контейнеров – Установка и запуск станции консультанта.

После запуска контейнеров будет доступна веб-страница Редактор топологии для заполнения информации о магазине. Выполните дальнейшую настройку, как указано в статье https://crystals.atlassian.net/wiki/x/EwDyggE.

Заполнение базы данных (альтернативный способ до 10.5.1.0)

Если вы выполняете первичную настройку СК для КСО более ранних версий (10.5.0.0 и раньше), тогда воспользуйтесь этим методом автоматического заполнения информации о магазине из файла ${HOME}/sco/fill_db.sql.

  1. Откройте файл ${HOME}/sco/fill_db.sql (этот файл используется для заполнения базы данных докера) → раскомментируйте скрипты.

  2. Внесите в файл информацию о магазинах, островах/зонах самообслуживания (если есть) и кассах самообслуживания, к которым станция консультанта должна иметь доступ, в следующем виде:

Заполните файл согласно информации на сервере SetCentrum/SetRetail10.

Пример скрипта для магазина
INSERT INTO shop ("number", "name", address, twentyfourhour, virtual, city_name, region_name, format_name, city_id, region_id, format_id, time_zone) VALUES (6456,'SHOP','CSI HOUSE',true,true,'SPB','NW','Supermarket',1,1,1, '+03:00'), (8152,'SHOP','CSI HOUSE',true,true,'SPB','NW','Supermarket',1,1,1, '+03:00') ON CONFLICT DO NOTHING;
Пример скрипта для зоны (острова) самообслуживания
INSERT INTO public.zone ("id", "name", shop_number) VALUES (1,'Выход в зоне бакалеи', 6456), (2,'Выход в конце зала', 6456) ON CONFLICT DO NOTHING;
Пример скрипта для кассы самообслуживания (в магазине есть разделение на острова самообслуживания)
INSERT INTO public.cash ("number", shop_number, place_number, status, cash_type, cash_ip, "version", zone_id, centrum_id) VALUES (1,6456,4,'ACTIVE','SCO','172.29.16.101:8070','10.4.7.0', 1, NULL), (2,6456,4,'ACTIVE','SCO','172.29.16.102:8070','10.4.7.0', 2, NULL), (3,6456,4,'ACTIVE','SCO_3','172.29.22.171:8070','10.4.12.0', 1, NULL), (4,6456,4,'ACTIVE','SCO_3','172.29.17.158:8070','10.4.12.0', 2, NULL) ON CONFLICT DO NOTHING;
Пример скрипта для кассы самообслуживания (в магазине НЕТ разделения на острова самообслуживания)
INSERT INTO public.cash ("number", shop_number, place_number, status, cash_type, cash_ip, "version", zone_id, centrum_id) VALUES (70,8152,5,'ACTIVE','SCO','172.29.12.227:8070','10.4.7.0', NULL, NULL) ON CONFLICT DO NOTHING;
Описание полей для заполнения в базе данных

Обязательные поля для заполнения отмечены в таблице зеленым цветом.

Поля для заполнения магазина

Поля для заполнения магазина

Параметр

Значение

Пример

"number"

номер магазина

6456

"name"

название магазина

SHOP

address

адрес магазина

'CSI HOUSE'

twentyfourhour

является ли магазин круглосуточным

true

virtual

имеет ли магазин собственный сервер

true

city_name

название города, в котором находится магазин

'SPB'

region_name

название региона,  в котором находится магазин

'NW'

format_name

формат магазина (супермаркет, гипермаркет и т. д.)

'Supermarket'

city_id

идентификатор города

1

region_id

идентификатор региона 

1

format_id

идентификатор формата

1

time_zone

часовой пояс магазина

'+03:00'

Поля для заполнения зоны (острова)

"id"

идентификатор зоны (острова) самообслуживания

1

"name"

названия острова зоны самообслуживания

'Выход в зоне бакалеи'

shop_number

номер магазина

6456

Поля для заполнения кассы

"number"

номер кассы

4

shop_number

номер магазина

6456

place_number

порядковый номер кассы для отображения

4

status

статус кассы (ACTIVE, CLOSED, DOWN)

'ACTIVE'

cash_type

тип кассы (SCO, SCO_3)

'SCO'

cash_ip

ip-адрес кассы:8070

'172.29.16.99:8070'

"version"

версия кассы

'10.4.7.0'

zone_id

идентификатор зоны (острова) магазина, может быть NULL

1

Внимание!

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

Если в магазине нет разделения на острова, тогда введите значение NULL.

centrum_id

идентификатор записи из SetCentrum10

NULL

Работа с островами (зонами) самообслуживания

Во многих крупных магазинах кассы самообслуживания поделены на отдельные зоны (острова) самообслуживания, с привязанными к ним КСО.

Если информация об островах самообслуживания должна быть отражена на станции консультанта, тогда внесите эти данные в файл ${HOME}/sco/fill_db.sql при заполнении базы данных.

Ограничения

  • Обратите внимание, для корректной работы функциональности деления касс на зоны (острова) самообслуживания, требуется создать минимум 2 зоны. 

  • Если в информация о делении касс по островам заполнена, но есть кассы, не принадлежащие ни к одному острову, тогда такие кассы не будут отображаться на станции консультанта. Даже отдельным кассам необходимо присвоить свой остров самообслуживания.

  • Если в магазине нет ни одного острова самообслуживания или информация о них не занесена в базу данных, тогда все доступные кассы будут отображаться на станции консультанта, но будет отсутствовать возможность выбора острова самообслуживания.

Запуск контейнера

1. Перейдите в папку ${HOME}/sco.

cd ${HOME}/sco

2. Запустите контейнеры командой ниже.

docker compose up -d
image-20250220-142148.png

3. Выполните команду ниже для проверки статуса запущенных контейнеров → работают все контейнеры кроме sco-attendant-fill_db-1.

docker ps -a
image-20250220-142019.png

Подключение к станции консультанта

Обратите внимание, после выполнения скрипта на кассе в базе данных

catalog необходимо перезагрузить КСО для применения изменений.

При выполнения настройки на сервере в базе данных

set перезагрузка не требуется.

Пример

При топологии SetCentrum → SetRetail10 → кассы к серверу SetCentrum подключены 10 магазинов, в каждом из которых 10 касс самообслуживания. 

Если скрипт выполнен в базе данных сервера SetCentrum, тогда настройка будет спущена на все 100 касс самообслуживания → к станции консультанта будут подключены 100 КСО.

Если скрипт выполнен в базе данных сервера SetRetail10 (магазина), тогда настройка будет смущена на 10 касс самообслуживания, подключенных к этому серверу → к станции консультанта будут подключены 10 КСО,

1a. Выполните скрипт для подключения кассы/касс самообслуживания на базе SetRetail SCO v.2 к станции консультанта:

UPDATE sales_management_properties SET property_value='true', send_status=0 WHERE module_name='SCO' and plugin_name='ATTENDANT_STATION' and property_key='enableWebServer';
  • на КСО в базе данных catalog в таблице  sales_management_properties для подключения одной конкретной кассы к станции консультанта;

ИЛИ

  • на сервере SetCentrum/SetRetail10 в базе данных set в таблице  sales_management_properties для подключения всех касс, подключенных к серверу, к станции консультанта → подождите, пока настройка спустится на КСО. 

1б. Выполните скрипт для подключения кассы/касс самообслуживания на базе SetRetail SCO v.3 к станции консультанта:

UPDATE sales_management_properties SET property_value='true', send_status=0 WHERE module_name='SCO' and plugin_name='SCOv3' and property_key='ATTENDANT_STATION_ENABLED';
  • на КСО в базе данных catalog в таблице  sales_management_properties для подключения одной конкретной кассы к станции консультанта;

ИЛИ

  • на сервере SetCentrum/SetRetail10 в базе данных set в таблице  sales_management_properties для подключения всех касс, подключенных к серверу, к станции консультанта → подождите, пока настройка спустится на КСО. 

→ После выполнения скрипта в базе данных перезагрузите кассу самообслуживания SetRetail SCO v.3 дважды.

2. Подключитесь в браузере по адресу http://ip-адрес-сервера:8081/ (имеется в виду ip-адрес сервера, на котором установлена станция консультанта) → откроется стартовая страница станции консультанта → введите номер магазина → кликните Сохранить.

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

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

image-20260616-143312.png

3. (данный шаг появляется только в случае заполнения информации о зонах/островах в базе данных) Кликните на требуемый остров → кликните Выбрать.

image-20260421-143042.png
image-20260616-143903.png

4. Введите пароль для входа → кликните Войти.

Пароль для входа на станцию консультанта совпадает с паролем консультанта для авторизации на КСО.

image-20260421-143042.png
image-20260616-143903.png

5. После входа откроется основной дэшборд со всеми доступными кассами. 

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

image-20260421-143042.png
image-20260616-143903.png

Обновление станции консультанта

1. Подключитесь к серверу → выполните команду mc → откройте файл ${HOME}/sco/.env → поменяйте версии в файле на требуемые → нажмите F2 для сохранения изменений.

2. Выйдите из режима Midnight Commander → выполните команду ниже для перезапуска контейнеров.

cd ${HOME}/sco && docker compose up -d

Получение информации о контейнерах

Подключитесь к серверу по ssh → выполните команду для получения логов → отобразится информация о состоянии контейнеров. 

cd ${HOME}/sco && docker compose logs

Также информация о контейнерах доступна в папке /${HOME}/sco/logs