Документация на программу для ЭВМ «Колокол»
Описание функциональных характеристик программного обеспечения и информация, необходимая для его установки и эксплуатации, а также описание процессов, обеспечивающих поддержание жизненного цикла программного обеспечения.
Редакция от 22.09.2026 · https://kolokol.meridianooo.ru/documentation/
Описание функциональных характеристик
Назначение программы, решаемые задачи, состав функций, входные и выходные данные, затрачиваемые ресурсы.
1.1. Назначение программы
«Колокол» — программа для ЭВМ, предназначенная для динамического коллтрекинга и аналитики рекламных кампаний. Программа обеспечивает автоматический учёт онлайн-конверсий в интернет-маркетинге и позволяет связать входящий телефонный звонок с конкретным рекламным каналом, кампанией, ключевым словом и страницей входа на сайт.
Программа устраняет разрыв между рекламным кликом и телефонным обращением: средства веб-аналитики фиксируют переходы и заявки, отправленные через формы на сайте, но не позволяют определить источник телефонного звонка. «Колокол» присваивает каждому посетителю сайта индивидуальный телефонный номер из выделенного пула на время визита, фиксирует параметры этого визита и при поступлении входящего вызова автоматически сопоставляет звонок с ранее зафиксированным веб-визитом.
1.2. Задачи, которые решает программа
- Определение рекламного источника каждого входящего телефонного звонка с детализацией до кампании, объявления, ключевого слова и страницы входа.
- Автоматическое распределение телефонных номеров из выделенного пула между одновременными посетителями сайта по настраиваемым правилам маршрутизации.
- Оптимизация ёмкости номерного пула за счёт динамического таймаута сессии и автоматического освобождения номеров неактивных визитов.
- Подмена телефонных номеров в содержимом веб-страницы без внесения изменений в вёрстку и программный код сайта.
- Сбор и хранение параметров веб-визитов: меток рекламных кампаний, реферера, страницы входа, идентификатора устройства и идентификатора Яндекс.Метрики.
- Передача сведений о состоявшихся телефонных обращениях во внешнюю метрическую платформу Яндекс.Метрика в качестве офлайн-конверсий.
- Двусторонний обмен данными с ERP-системой: загрузка справочников сайтов, линий и телефонных номеров, выгрузка визитов, загрузка обращений.
- Предоставление рабочего места администратора и маркетолога для настройки правил, просмотра визитов и контроля работы системы.
- Ведение журнала выполнения фоновых задач и контроль состояния системы.
1.3. Состав программного обеспечения
| Компонент | Назначение |
|---|---|
| Клиентский JS-скрипт | Подключается на сайт клиента одной строкой кода. Определяет посетителя, собирает параметры визита, обращается к серверной части и выполняет замену телефонных номеров в содержимом страницы. |
| Серверная часть (backend API) | Принимает визиты, подбирает параметр проекта и свободный телефонный номер, создаёт и продлевает визиты, возвращает номер и зашифрованный токен. |
| Подсистема фоновых задач | Выполняет регламентные операции: загрузку справочников из ERP, закрытие устаревших визитов, выгрузку визитов и маршрутов, передачу конверсий в Яндекс.Метрику, очистку журнала. |
| Веб-АРМ администратора | Веб-интерфейс управления: проекты, параметры подбора, номерной пул, визиты, конверсии, справочники, журнал задач, пользователи и токены доступа. |
| Модуль интеграций | Клиент ERP webservice и клиент API Яндекс.Метрики (авторизация по протоколу OAuth). |
1.4. Перечень функций
Учёт визитов и подмена номеров
- Идентификация посетителя по устойчивому отпечатку браузера (fingerprint UID) и идентификатору Яндекс.Метрики
_ym_uid. - Создание визита и резервирование свободного телефонного номера из пула.
- Продление активного визита при повторных обращениях посетителя в течение сессии.
- Замена телефонных номеров в текстовых узлах страницы и в ссылках вида
tel:, включая содержимое, добавленное после загрузки страницы. - Исключение из обработки служебных элементов:
SCRIPT,STYLE,INPUT,TEXTAREA,TEMPLATE,NOSCRIPT,SELECT,OPTION, редактируемых областей и SVG. - Восстановление исходных номеров по истечении срока действия выданного номера.
Правила подбора номера
- Настройка параметров подбора по сайту, домену, рефереру, странице входа и параметрам адресной строки.
- Привязка параметра к городу, рекламной линии-источнику, маршруту и пулу номеров.
- Приоритизация правил: при совпадении нескольких условий выбирается правило с наибольшим весом.
- Условия по странице входа как отдельная сущность конфигурации.
Управление номерной ёмкостью
- Автоматическое закрытие визитов, по которым отсутствует активность.
- Освобождение самого раннего визита при исчерпании свободных номеров в пуле.
- Уведомление ответственных лиц о принудительно закрытых визитах.
- Загрузка и актуализация номерного пула из ERP-системы.
Интеграции
- Загрузка из ERP справочников сайтов, линий и телефонных номеров.
- Выгрузка визитов в ERP с контролем состояния отправки по каждому визиту.
- Загрузка из ERP сведений о состоявшихся обращениях (конверсиях).
- Передача конверсий в Яндекс.Метрику по расписанию с авторизацией по протоколу OAuth.
- Управление маршрутизацией телефонных номеров в телефонии.
Администрирование
- Ведение проектов коллтрекинга с привязкой к сайту и счётчику Яндекс.Метрики.
- Генерация кода подключения клиентского скрипта для каждого проекта.
- Просмотр журнала визитов с фильтрами по активности, датам и состоянию выгрузки.
- Просмотр номерного пула, справочников сайтов и рекламных линий.
- Ведение пользователей, групп и прав доступа; выпуск токенов для программного доступа.
- Журнал выполнения фоновых задач с регистрацией ошибок.
- Контроль состояния системы через служебную точку доступа.
Защита данных
- Шифрование токенов телефонных линий симметричным алгоритмом (Fernet).
- Авторизация в веб-АРМ по учётной записи, программный доступ — по токену.
- Ограничение состава собираемых данных техническими параметрами визита.
1.5. Вводная информация (входные данные)
| Источник | Состав данных | Способ получения |
|---|---|---|
| Сайт клиента (клиентский JS) | Идентификатор проекта, идентификатор посетителя (fingerprint UID), имя хоста, путь страницы, строка параметров запроса с метками рекламных кампаний, реферер, идентификатор Яндекс.Метрики _ym_uid, статистика выполненных замен номеров | HTTP-запрос POST /tracker/visits/ |
| Сетевое окружение | IP-адрес посетителя, строка User-Agent | Определяются серверной частью из параметров запроса |
| ERP-система | Справочник сайтов, справочник рекламных линий, телефонные номера с типом, маршрутом и пулом, сведения о состоявшихся обращениях | Запросы к ERP webservice по расписанию |
| Яндекс.Метрика | Токен доступа OAuth | Обратный вызов GET /tracker/oauth_token |
| Администратор | Проекты, параметры подбора номера, условия по страницам входа, учётные записи и права доступа | Веб-АРМ по адресу /wui/ |
1.6. Выходные данные
| Получатель | Состав данных | Формат и способ передачи |
|---|---|---|
| Сайт клиента | Телефонный номер для подмены, зашифрованный токен линии, код результата обработки | Ответ в формате JSON на запрос POST /tracker/visits/ |
| Страница сайта | Замещённые телефонные номера в тексте страницы и в ссылках tel: | Изменение содержимого документа средствами клиентского скрипта |
| ERP-система | Визиты с полным составом параметров, маршруты телефонных номеров | Запросы к ERP webservice по расписанию |
| Яндекс.Метрика | Офлайн-конверсии: идентификатор посетителя, дата и время обращения, наименование цели | Запросы к API Яндекс.Метрики, дважды в сутки |
| Администратор | Экранные формы веб-АРМ: списки проектов, визитов, конверсий, параметров, телефонов, сайтов, линий; журнал фоновых задач | Веб-интерфейс /wui/ |
| Система мониторинга | Число визитов за последний час, число ошибок в журнале за последний час | Ответ в формате JSON на запрос GET /tracker/system_status |
| Ответственные лица | Уведомления о принудительно закрытых визитах | Сообщения в Telegram |
1.7. Затрачиваемые ресурсы
Значения в таблице приведены для стартовой инсталляции, обслуживающей один проект коллтрекинга. Для инсталляций с большим объёмом трафика конфигурация рассчитывается на этапе предпроектного обследования.
| Ресурс | Минимально | Рекомендуется |
|---|---|---|
| Процессор | 4 vCPU | 8 vCPU |
| Оперативная память | 8 ГБ | 16 ГБ |
| Дисковое пространство | 80 ГБ SSD | 200 ГБ SSD |
| Сетевой канал | 100 Мбит/с | 1 Гбит/с |
| Ресурсы на стороне сайта клиента | Одна строка JavaScript-кода в шаблоне страницы. Скрипт загружается асинхронно и не блокирует отрисовку. Изменения в вёрстку и серверный код сайта не вносятся. | |
Потребность в ресурсах масштабируется от объёма трафика подключённых сайтов, размера номерного пула, количества проектов и глубины хранения истории визитов. Для распределённых инсталляций конфигурация рассчитывается на этапе предпроектного обследования.
1.8. Условия и ограничения применения
- Для работы программы требуется выделенный пул телефонных номеров и возможность управления их маршрутизацией в телефонии заказчика или оператора связи.
- Число одновременно обслуживаемых посетителей, для которых выполняется подмена номера, ограничено размером номерного пула. При исчерпании пула на странице сохраняется исходный номер компании, обращение остаётся возможным, а событие фиксируется в журнале.
- Подмена номеров выполняется в браузерах Chrome и Edge версии 109 и выше, Firefox версии 115 и выше, Safari версии 15.6 и выше.
- Передача конверсий в Яндекс.Метрику требует действующего счётчика и выданного владельцем счётчика токена доступа.
- Обмен с ERP требует доступа к webservice ERP-системы заказчика.
- Программа не собирает имена, адреса, платёжные реквизиты и иные персональные данные посетителей сайтов; фиксируются только технические параметры визита.
Информация, необходимая для установки
Требования к аппаратному и программному обеспечению, состав дистрибутива, порядок развёртывания и настройки, проверка корректности установки.
2.1. Требования к аппаратному обеспечению
Программа устанавливается на сервер под управлением операционной системы семейства Linux. Требования к ресурсам приведены в п. 1.7 настоящей документации. Установка возможна как на выделенный физический сервер, так и на виртуальную машину в облачной инфраструктуре или в контуре заказчика.
2.2. Требования к программному обеспечению
| Компонент | Требование |
|---|---|
| Операционная система | Любой дистрибутив Linux с поддержкой Docker, в том числе операционные системы, включённые в единый реестр российских программ для ЭВМ |
| Средства контейнеризации | Docker и Docker Compose |
| Система управления базами данных | PostgreSQL |
| Пул соединений | PgBouncer в режиме transaction pooling |
| Хранилище «ключ — значение» | Redis (брокер очередей, кеш, распределённые блокировки) |
| Обратный прокси-сервер | Nginx |
| Внешние сервисы | Доступ к webservice ERP-системы; доступ к API Яндекс.Метрики |
| Резервное копирование | Хранилище и процедура резервного копирования PostgreSQL |
2.3. Состав дистрибутива
Программа поставляется в виде двух репозиториев исходного кода с файлами сборки контейнеров.
Серверная часть
/app/
├── app/ # проект Django: настройки, маршруты, конфигурация Celery
├── tracker/ # основное приложение коллтрекера
├── erpclient/ # клиент ERP webservice
├── requirements/ # зависимости Python
└── manage.py
Клиентская часть
/src/js/
├── init.js # точка входа скрипта, отпечаток браузера, расписание обращений
├── backend.js # HTTP-клиент серверной части
├── processors.js # поиск и замена телефонных номеров в документе
└── storage.js # работа с cookies
2.4. Состав сервисов контейнеризации
| Сервис | Назначение |
|---|---|
migrate | Применение миграций базы данных и сборка статических файлов |
app | Приложение Django под управлением сервера gunicorn |
pooler | PgBouncer |
redis | Redis для очередей задач и кеширования |
worker-normal | Обработчик общих фоновых задач |
worker-visits | Обработчик задач выгрузки визитов |
worker-routes | Обработчик задач маршрутизации телефонных номеров |
beat | Планировщик периодических задач |
2.5. Порядок установки
- Подготовить сервер Установить операционную систему Linux, Docker и Docker Compose. Обеспечить сетевую доступность сервера для обратного прокси-сервера и для webservice ERP-системы.
- Разместить исходный код Скопировать репозитории серверной и клиентской части на сервер.
- Создать файл конфигурации
Создать файл
.envна основе поставляемого образцаenv.exampleи заполнить переменные окружения в соответствии с п. 2.6. - Подготовить базу данных
Развернуть PostgreSQL, создать базу данных и учётную запись, указать параметры подключения в
.env. Проверить, что значенияMAX_CLIENT_CONN,DEFAULT_POOL_SIZEиRESERVE_POOL_SIZEдля PgBouncer согласованы с лимитами PostgreSQL, числом рабочих процессов gunicorn и параллелизмом обработчиков задач. - Собрать и запустить серверную часть
Выполнить сборку рабочей конфигурации. Миграции базы данных применяются автоматически сервисом
migrate.make build-prod - Собрать клиентский скрипт
Выполнить установку зависимостей и сборку рабочей версии. Результат сборки — файл
dist/js/init.js.npm install npm run production - Настроить обратный прокси-сервер
Настроить Nginx на раздачу клиентского скрипта по путям
/init.js,/v3/init.js,/v4/init.jsи на проксирование к серверной части путей/tracker/visits/,/tracker/oauth_token,/tracker/phones/,/tracker/autocomplete/,/tracker/system_status,/wui/. - Создать учётную запись администратора
Создать суперпользователя Django для входа в веб-АРМ по адресу
/wui/. - Подключить внешние системы
Указать адрес webservice ERP-системы в переменной
WEB_SERVICE_BASE_URL. Зарегистрировать приложение в Яндекс.OAuth и указатьYA_CLIENT_IDиYA_CLIENT_SECRET. Убедиться, что справочники сайтов, линий и телефонных номеров загружаются фоновыми задачами. - Проверить установку Выполнить проверки по п. 2.8.
2.6. Переменные окружения
Конфигурация задаётся в файле .env. Образец поставляется в файле env.example.
| Переменная | Назначение |
|---|---|
APP_MODE | Режим работы: dev или prod. Планировщик периодических задач включается только в режиме prod |
APP_NAME | Имя модуля приложения Django |
SECRET_KEY | Секретный ключ Django |
DEBUG | Режим отладки |
ALLOWED_HOSTS | Перечень разрешённых имён хостов |
POSTGRES_* | Параметры подключения к PostgreSQL |
PGBOUNCER_* | Параметры подключения к PgBouncer |
CELERY_BROKER_URL | Адрес брокера очередей |
CELERY_RESULT_BACKEND | Адрес хранилища результатов задач |
FERNET_KEY | Ключ шифрования токенов телефонных линий |
WEB_SERVICE_BASE_URL | Адрес webservice ERP-системы |
YA_CLIENT_ID | Идентификатор приложения Яндекс.OAuth |
YA_CLIENT_SECRET | Секрет приложения Яндекс.OAuth |
TELEGRAM_BOT_TOKEN | Токен бота для служебных уведомлений |
TELEGRAM_CHAT_ID | Идентификатор чата для служебных уведомлений |
При подключении через PgBouncer в режиме transaction pooling в настройках Django устанавливаются CONN_MAX_AGE = 0 и DISABLE_SERVER_SIDE_CURSORS = True.
2.7. Подключение программы к сайту
- Создать проект В веб-АРМ в разделе «Проекты» создать проект, указав сайт и код счётчика Яндекс.Метрики.
- Получить код подключения Веб-АРМ формирует код подключения клиентского скрипта, содержащий идентификатор проекта.
- Разместить код на сайте Добавить полученный код в шаблон страниц сайта. Изменения в вёрстку не требуются.
- Настроить правила подбора номера В разделе «Параметры» задать правила: сайт, условия по домену, рефереру и странице входа, город, линия-источник, маршрут, пул и приоритет.
2.8. Проверка корректности установки
- Запросить служебную точку доступа
GET /tracker/system_statusи убедиться, что ответ получен. - Убедиться в доступности клиентского скрипта:
curl -I https://<адрес>/v4/init.js. - Открыть веб-АРМ по адресу
/wui/и выполнить вход. - Убедиться, что фоновая задача загрузки телефонных номеров из ERP отработала и пул заполнен (раздел «Телефоны»).
- Открыть тестовую страницу с подключённым скриптом и проверить: создание визита в разделе «Визиты», замену обычных номеров, замену ссылок
tel:, отсутствие ошибок в консоли браузера. - Проверить журналы контейнеров приложения и обработчиков задач на отсутствие ошибок.
2.9. Контакты технических специалистов
Консультации по развёртыванию, настройке и функционированию экземпляра программы предоставляют технические специалисты ООО «Меридиан»: электронная почта help@meridianooo.ru, телефон +7 499 648-54-49, режим работы — понедельник–пятница с 09:00 до 18:00 по московскому времени.
Информация, необходимая для эксплуатации
Доступ к развёрнутому экземпляру, последовательность действий по загрузке, запуску, выполнению и завершению программы, описание команд и ответов программы.
3.1. Доступ к развёрнутому экземпляру программы
Для ознакомления с работой программы развёрнут демонстрационный экземпляр с тестовыми данными. Экземпляр изолирован от рабочей инфраструктуры: интеграция с ERP-системой и с Яндекс.Метрикой, а также фоновые задачи в нём отключены.
| Параметр | Значение |
|---|---|
| Адрес веб-АРМ | https://kolokol.meridianooo.ru/wui/ |
| Логин | demo |
| Пароль | thiYeiquohpair5pePhoovoh |
| Краткая техническая документация | https://kolokol.meridianooo.ru/wui/docs/ Открывается под той же учётной записью |
Демонстрационные сайты с подключённым скриптом
На перечисленных ниже сайтах установлен клиентский скрипт программы. При открытии страницы телефонный номер на ней подменяется номером из демонстрационного пула, а в разделе «Визиты» веб-АРМ появляется соответствующая запись.
| Адрес | Условие подбора номера |
|---|---|
| demo1.kolokol.meridianooo.ru/?utm_content=banner_yak | По метке utm_content |
| demo2.kolokol.meridianooo.ru | Без параметров адресной строки |
| demo3.kolokol.meridianooo.ru/?utm_term=vk | По метке utm_term |
| demo4.kolokol.meridianooo.ru/maps | По странице входа |
Откройте любой из демонстрационных сайтов по приведённому адресу вместе с параметрами — подмена выполняется только при выполнении условия подбора, заданного в разделе «Параметры». Затем войдите в веб-АРМ и откройте раздел «Визиты»: созданный визит отображается с именем хоста, проектом, линией-источником и выданным телефонным номером.
Реквизиты удалённого доступа к серверам с развёрнутым экземпляром программы (серверная часть и сервер раздачи клиентского скрипта) предоставляются уполномоченным проверяющим лицам в составе материалов заявления и по запросу на адрес help@meridianooo.ru. В открытом доступе они не публикуются.
3.2. Загрузка и запуск программы
Программа является серверным веб-приложением. Загрузка и запуск выполняются в двух контурах.
Контур серверной части
- Запуск всех сервисов программы выполняется командой сборки и запуска рабочей конфигурации
make build-prod. Сервисmigrateприменяет миграции базы данных, после чего запускаются приложение, пул соединений, хранилище очередей, обработчики задач и планировщик. - Готовность программы подтверждается успешным ответом служебной точки доступа
GET /tracker/system_status. - Планировщик периодических задач запускается автоматически при значении переменной
APP_MODE=prod.
Контур рабочего места пользователя
- Пользователь открывает в браузере адрес веб-АРМ
/wui/. - Программа выводит форму входа и запрашивает имя пользователя и пароль.
- После успешной авторизации открывается главный экран со списком разделов и журналом последних действий.
Контур сайта клиента
- При открытии посетителем страницы сайта браузер загружает клиентский скрипт по адресу
/v4/init.js. - Скрипт определяет посетителя, собирает параметры визита и отправляет их серверной части.
- Получив номер, скрипт выполняет замену телефонных номеров в содержимом страницы.
3.3. Выполнение программы: работа в веб-АРМ
Главный экран веб-АРМ содержит перечень разделов, сгруппированных по назначению: «Трекер», «Пользователи и группы», «Токен аутентификации», а также ссылку на документацию.
| Раздел | Действия пользователя | Ответ программы |
|---|---|---|
| Проекты | Создание, изменение и удаление проекта; выбор сайта, ввод кода счётчика Яндекс.Метрики и комментария; поиск по коду сайта, проекта, счётчика или комментарию | Сохраняет проект и формирует код подключения клиентского скрипта; выводит список проектов с кодом проекта и кодом счётчика; сообщает об ошибках заполнения |
| Параметры | Создание и изменение правил подбора номера: сайт, линия, город, маршрут, пул, приоритет, условия по домену, рефереру и странице входа; включение и отключение правила | Сохраняет правило и применяет его при подборе номера; выводит список правил с признаком включения и приоритетом |
| Телефоны | Просмотр номерного пула, поиск по коду телефона, пула, маршрута, номеру, коду линии или сайта | Выводит список номеров с типом номера, признаком выдачи, кодами маршрута и пула |
| Визиты | Просмотр журнала визитов; фильтрация по признаку активности, датам создания, состоянию отправки и признаку принудительного закрытия; поиск по коду визита, хосту, коду сайта или линии | Выводит список визитов с идентификатором, признаком активности, именем хоста, проектом, линией и выданным номером |
| Отправки | Просмотр состояния выгрузки визитов во внешнюю систему | Выводит состояние отправки по каждому визиту |
| Конверсии | Просмотр сведений о состоявшихся обращениях, загруженных из ERP | Выводит список обращений с привязкой к визитам |
| Сайты, Линии | Просмотр справочников, загружаемых из ERP | Выводит перечень сайтов и перечень рекламных линий-источников |
| Журнал | Просмотр результатов выполнения фоновых задач | Выводит записи журнала с отметками об ошибках |
| Пользователи и группы | Создание учётных записей, назначение групп и прав доступа | Сохраняет учётную запись; применяет права при следующем входе |
| Токены | Выпуск и отзыв токенов для программного доступа | Выдаёт ключ токена с привязкой к пользователю и датой создания |
Во всех списковых разделах доступны поиск, фильтры, сортировка по столбцам, массовые действия над выбранными записями и просмотр истории изменений объекта.
3.4. Команды программного интерфейса и ответы программы
Программа предоставляет интерфейс HTTP. Формат обмена — JSON.
| Команда | Назначение | Доступ | Ответ программы |
|---|---|---|---|
POST /tracker/visits/ | Создание или продление визита и выдача телефонного номера | Публичный | Телефонный номер, зашифрованный токен линии и код результата обработки |
GET /tracker/phones/<phone_id>/<timestamp> | Получение линии телефонного номера на заданный момент времени | По токену | Сведения о линии |
GET /tracker/oauth_token | Обратный вызов авторизации Яндекс.Метрики | Публичный | Страница подтверждения либо сообщение об ошибке |
GET /tracker/system_status | Проверка состояния программы | Публичный, ответ кешируется на 5 минут | Число визитов и число ошибок за последний час |
/wui/ | Веб-АРМ администратора | По учётной записи | Экранные формы разделов |
Пример ответа на команду проверки состояния
GET /tracker/system_status
{
"nrv": 0,
"nrle": 1
}
Поле nrv — количество визитов за последний час, поле nrle — количество ошибок в журнале за последний час.
Коды результата обработки визита
Ответ на команду POST /tracker/visits/ содержит поле rc с кодом результата.
| Код | Значение | Поведение программы |
|---|---|---|
S_CRT | Визит создан | Возвращается телефонный номер и токен, скрипт выполняет замену номеров на странице |
S_PRL | Визит продлён | Возвращается ранее выданный номер, срок его действия продлевается |
W_PAR | Правила подбора не найдены | Номер не выдаётся, на странице сохраняется исходный номер компании |
W_MAT | Правила есть, но условия не выполнены | Номер не выдаётся, на странице сохраняется исходный номер компании |
E_VAL | Ошибка проверки входных данных | Запрос отклоняется, событие фиксируется в журнале |
E_EAR | Не удалось освободить самый ранний визит | Свободных номеров в пуле нет, требуется расширение номерной ёмкости |
E_CFLT | Конфликт уникальности открытого визита | Повторный запрос обрабатывается штатно при следующем обращении |
3.5. Команды управления программой
| Команда | Назначение | Результат |
|---|---|---|
make build-prod | Сборка и запуск рабочей конфигурации | Применяются миграции, запускаются все сервисы программы |
make build-dev | Сборка и запуск конфигурации разработки | Запускаются сервисы в режиме разработки |
make test | Запуск автоматических тестов | Отчёт о пройденных и непройденных тестах |
make lint | Статическая проверка исходного кода | Перечень замечаний к коду |
make format | Форматирование исходного кода | Исходный код приводится к единому стилю |
npm run production | Сборка клиентского скрипта | Формируется файл dist/js/init.js |
npm run lint:js | Статическая проверка клиентского кода | Перечень замечаний к коду |
docker compose logs -f app | Просмотр журнала приложения | Поток записей журнала |
docker compose logs -f worker-normal | Просмотр журнала обработчика общих задач | Поток записей журнала |
docker compose logs -f worker-visits | Просмотр журнала обработчика выгрузки визитов | Поток записей журнала |
docker compose logs -f worker-routes | Просмотр журнала обработчика маршрутизации | Поток записей журнала |
docker compose logs -f beat | Просмотр журнала планировщика | Поток записей журнала |
3.6. Периодические задачи
После запуска программа выполняет регламентные операции без участия пользователя.
| Задача | Периодичность | Назначение |
|---|---|---|
load_phones | Каждые 3 минуты | Загрузка телефонных номеров из ERP |
load_core_data | Каждый час | Загрузка справочников сайтов и линий |
close_visits | Каждые 2 минуты | Закрытие устаревших визитов и освобождение номеров |
dispatch_upload_visits_to_webservice | Каждые 2 минуты | Выгрузка визитов в ERP |
dispatch_phone_route_batches | Каждую минуту | Передача маршрутов телефонных номеров |
load_requests | Каждый час | Загрузка обращений из ERP |
upload_requests_to_metrika | 00:00 и 12:00 UTC | Передача конверсий в Яндекс.Метрику |
delete_outdated_logs | Ежедневно | Очистка журнала фоновых задач |
notify_of_sacrificed | По интервалу | Уведомление о принудительно закрытых визитах |
3.7. Завершение работы программы
- Пользователь завершает сеанс работы в веб-АРМ командой «Выйти». Программа закрывает сеанс и возвращает форму входа.
- Остановка серверной части выполняется остановкой сервисов контейнеризации. Активные визиты сохраняются в базе данных; после повторного запуска обработка продолжается штатно, устаревшие визиты закрываются регламентной задачей.
- На стороне сайта клиента работа скрипта прекращается при закрытии страницы. Выданный номер действует 2 минуты; по истечении срока, если страница остаётся открытой без обращений, скрипт восстанавливает исходные номера. Период обращений к серверной части ограничен шестью часами с момента загрузки страницы.
3.8. Диагностика и типовые ситуации
| Ситуация | Причина | Действия |
|---|---|---|
Номер на сайте не подменяется, в журнале код W_PAR | Для проекта не заданы правила подбора номера | Создать правило в разделе «Параметры» |
Номер не подменяется, в журнале код W_MAT | Правила заданы, но условия по домену, рефереру или странице входа не выполняются | Проверить условия правила и фактические параметры визита в разделе «Визиты» |
В журнале код E_EAR | Свободных номеров в пуле нет | Расширить номерной пул либо пересмотреть правила распределения |
| Растёт число принудительно закрытых визитов | Номерной ёмкости не хватает на текущий объём трафика | Увеличить пул; проверить уведомления о принудительно закрытых визитах |
| Визиты не выгружаются в ERP | Недоступен webservice ERP-системы либо сработал предохранитель обращений | Проверить доступность ERP, записи журнала и глубину очереди задач |
| Конверсии не поступают в Яндекс.Метрику | Истёк или не выдан токен доступа OAuth | Повторить авторизацию счётчика; проверить код счётчика в настройках проекта |
| Программа не отвечает | Недоступна база данных, хранилище очередей или приложение | Проверить GET /tracker/system_status, журналы контейнеров, активные запросы и блокировки в PostgreSQL |
Процессы, обеспечивающие поддержание жизненного цикла
Описание процессов жизненного цикла программного обеспечения, включая устранение неисправностей, выявленных в ходе эксплуатации, совершенствование программного обеспечения и сведения о персонале, необходимом для обеспечения такой поддержки.
4.1. Общие положения
Все процессы жизненного цикла программы «Колокол» — проектирование, разработка, тестирование, поставка, ввод в эксплуатацию, документирование, сопровождение, устранение неисправностей, совершенствование и снятие с эксплуатации — выполняются силами ООО «Меридиан» как правообладателя программы. Внешние подрядчики к выполнению этих процессов не привлекаются.
Разработка, тестирование, техническая поддержка и модернизация программы осуществляются штатными сотрудниками ООО «Меридиан» на территории Российской Федерации.
4.2. Проектирование
- Требования формируются из задач заказчиков, результатов эксплуатации действующих инсталляций и требований к интеграциям с внешними системами.
- По каждому изменению определяется состав затрагиваемых компонентов: клиентский скрипт, серверная часть, фоновые задачи, модуль интеграций, схема базы данных.
- Оценивается влияние изменения на совместимость программного интерфейса и на уже подключённые сайты клиентов.
- Результат проектирования фиксируется в задаче и в описании изменения.
4.3. Разработка
- Исходный код хранится в системе контроля версий в двух репозиториях: серверная часть и клиентская часть.
- Каждое изменение выполняется в отдельной ветке и проходит рецензирование другим разработчиком перед включением в основную ветку.
- Применяются единые правила оформления кода; соблюдение правил контролируется средствами статического анализа (
make lint,npm run lint:js) и автоматического форматирования (make format). - История изменений сохраняется в системе контроля версий и позволяет установить автора и содержание каждого изменения.
4.4. Тестирование
- Перед сборкой релиза выполняется набор автоматических тестов командой
make testна конфигурации разработки. - Изменения клиентского скрипта проверяются на тестовой странице: создание визита, замена обычных номеров, замена ссылок
tel:, отсутствие ошибок в консоли браузера. - Для изменений схемы базы данных отдельно оценивается риск: длительность миграции, вероятность блокировок, необходимость переноса данных, совместимость прежней и новой версий кода.
- Функциональная проверка выполняется на демонстрационном стенде, изолированном от рабочей инфраструктуры.
4.5. Поставка и ввод в эксплуатацию
- Программа поставляется в виде исходного кода с файлами сборки контейнеров либо разворачивается правообладателем в облачной инфраструктуре.
- Ввод в эксплуатацию выполняется по порядку, приведённому в разделе 2 настоящей документации.
- По завершении развёртывания проводится обучение сотрудников заказчика и передаётся эксплуатационная документация.
- Результаты работ фиксируются актом.
4.6. Эксплуатация и мониторинг
В ходе эксплуатации контролируются техническое состояние программы и показатели её работы.
| Группа | Контролируемые показатели |
|---|---|
| Доступность | Ответ служебной точки доступа GET /tracker/system_status; коды ответов обратного прокси-сервера; задержки обработки запросов; глубина очередей фоновых задач; доступность PostgreSQL и Redis |
| Показатели работы | Число визитов за час; число ошибок в журнале; число принудительно закрытых визитов; число неотправленных визитов; число непереданных конверсий; наличие свободных номеров в пулах |
| Регламентные проверки | Успешность загрузки телефонных номеров из ERP; успешность выгрузки визитов; успешность передачи конверсий в Яндекс.Метрику; срабатывания предохранителя обращений к внешним системам |
О превышении пороговых значений и о принудительно закрытых визитах ответственные сотрудники получают автоматические уведомления.
4.7. Устранение неисправностей, выявленных в ходе эксплуатации
Устранение неисправностей выполняется штатными сотрудниками ООО «Меридиан» в следующем порядке.
- Приём обращения Обращения принимаются по электронной почте help@meridianooo.ru, по телефону +7 499 648-54-49 и через форму обратной связи на сайте правообладателя. Неисправности также выявляются самой службой сопровождения по данным мониторинга (п. 4.6).
- Регистрация Каждое обращение регистрируется с присвоением номера. Фиксируются: дата и время поступления, заявитель, инсталляция, описание проблемы, условия воспроизведения, приложенные материалы.
- Классификация по уровню критичности
Сроки, приведённые в таблице, применяются по умолчанию. Для отдельных инсталляций сроки устанавливаются договором сопровождения.
Уровень Признак Срок реакции Срок устранения Критичный Программа недоступна; телефонные номера не выдаются; данные не сохраняются 2 рабочих часа 1 рабочий день Существенный Не работает отдельная функция; не выполняется выгрузка во внешнюю систему; ошибки в отчётных данных 1 рабочий день 5 рабочих дней Некритичный Замечания к интерфейсу, частные неудобства, запросы на консультацию 1 рабочий день В составе очередного обновления - Диагностика и воспроизведение Анализируются журналы приложения и фоновых задач, записи журнала задач в базе данных, состояние очередей, активные запросы и блокировки в базе данных. Неисправность воспроизводится на демонстрационном или тестовом стенде.
- Исправление Исправление разрабатывается в отдельной ветке, проходит рецензирование и автоматическое тестирование в порядке, установленном пп. 4.3 и 4.4.
- Выпуск и установка Исправление включается в очередное обновление либо, для критичных неисправностей, выпускается внеочередным обновлением в порядке п. 4.9. После установки выполняются контрольные проверки по п. 2.8.
- Закрытие обращения и контроль Заявитель уведомляется об устранении неисправности. Обращение закрывается после подтверждения результата. Повторяющиеся обращения анализируются на предмет устранения причины, а не следствия.
4.8. Совершенствование программного обеспечения
Развитие программы ведётся правообладателем на постоянной основе.
- Сбор предложений Источники предложений по развитию: обращения и пожелания заказчиков; результаты анализа эксплуатации и статистики обращений; изменения в программных интерфейсах внешних систем (ERP, Яндекс.Метрика, телефония); изменения требований законодательства; предложения сотрудников правообладателя.
- Формирование плана развития Предложения оцениваются по значимости, трудоёмкости и влиянию на действующие инсталляции. На основании оценки формируется план развития программы. План пересматривается по мере поступления новых требований.
- Реализация Доработки выполняются в порядке, установленном пп. 4.2–4.4. Доработки под требования конкретного заказчика выполняются по отдельному техническому заданию и, при наличии общей применимости, включаются в основную версию программы.
- Выпуск новой версии Новая версия выпускается в порядке п. 4.9. Состав изменений фиксируется в перечне изменений версии.
- Информирование пользователей Сведения о выпущенных обновлениях и составе изменений доводятся до заказчиков, находящихся на сопровождении.
4.9. Поддержка версий и выпуск обновлений
Серверная часть
- Изменения готовятся в отдельной ветке; выполняются сборка конфигурации разработки и автоматические тесты.
- Для миграций базы данных оценивается риск: блокировки, длительность, необходимость переноса данных, совместимость прежней и новой версий кода.
- Рабочая конфигурация пересобирается и перезапускается командой
make build-prod; миграции применяются автоматически. - После установки контролируются: служебная точка доступа, журналы приложения и обработчиков задач, записи журнала задач, блокировки и длительные запросы в базе данных, глубина очередей.
Клиентская часть
- Изменения вносятся в исходный код клиентского скрипта, выполняются статическая проверка и сборка рабочей версии.
- Собранный файл размещается на сервере раздачи, откуда обратный прокси-сервер отдаёт его по версионированному пути.
- Клиентский скрипт версионируется по пути размещения:
/v3/init.js,/v4/init.jsи далее. При изменении контракта программного интерфейса или поведения скрипта выпускается новая версия пути, а прежняя продолжает обслуживаться. Подключённые сайты переводятся на новую версию постепенно. - Доступность новой версии проверяется запросом
curl -I, работоспособность — на тестовой странице.
Такой порядок обеспечивает установку обновлений без прерывания работы подключённых сайтов клиентов.
4.10. Документирование
- Эксплуатационная документация поддерживается в актуальном состоянии и публикуется на сайте правообладателя по адресу
https://kolokol.meridianooo.ru/documentation/. - При изменении состава функций, порядка установки или порядка эксплуатации соответствующие разделы документации обновляются в составе выпуска новой версии.
- Внутренняя техническая документация для сотрудников размещается в закрытом разделе
/wui/docs/. - Документация ведётся на русском языке.
4.11. Резервное копирование и восстановление
- Выполняется регламентное резервное копирование базы данных PostgreSQL.
- Проводится периодическая проверка восстановления из резервной копии.
- Файл конфигурации
.envи ключи шифрования хранятся отдельно от резервных копий базы данных, с ограничением доступа. - Для инсталляций в контуре заказчика процедура согласуется с политикой заказчика.
4.12. Персонал, необходимый для обеспечения поддержки
Поддержание жизненного цикла программы обеспечивают штатные сотрудники ООО «Меридиан», состоящие в трудовых отношениях с правообладателем. Все сотрудники являются гражданами Российской Федерации и осуществляют трудовую деятельность на территории Российской Федерации. Внешние подрядчики не привлекаются.
| Роль | Численность | Зона ответственности в жизненном цикле |
|---|---|---|
| Руководитель проекта | 1 | Планирование развития, приоритизация доработок, взаимодействие с заказчиками, контроль сроков |
| Разработчик серверной части (Python) | 2 | Проектирование и разработка серверной части, фоновых задач и интеграций; исправление неисправностей; миграции базы данных |
| Разработчик клиентской части (JavaScript) | 1 | Разработка и сопровождение клиентского скрипта, обеспечение совместимости с браузерами и сайтами клиентов |
| Инженер по эксплуатации (DevOps) | 2 | Развёртывание, сборка и выпуск обновлений, мониторинг, резервное копирование, управление инфраструктурой |
| Специалист по тестированию | 1 | Функциональное тестирование, проверка выпусков, воспроизведение неисправностей |
| Аналитик | 1 | Сбор и формализация требований, предпроектное обследование, подготовка документации |
| Специалист технической поддержки | 3 | Приём и регистрация обращений, первичная диагностика, консультирование пользователей, обучение |
| Всего | 11 | — |
Общая численность персонала, обеспечивающего поддержание жизненного цикла программы, — 11 штатных сотрудников. Гарантийное обслуживание, техническая поддержка и модернизация программного обеспечения осуществляются силами штатных сотрудников правообладателя.
4.13. Фактическое размещение
Все процессы жизненного цикла программы выполняются на территории Российской Федерации.
| Объект | Фактический адрес |
|---|---|
| Инфраструктура разработки репозитории, сборочный контур, среда разработки и тестирования | 127254, г. Москва, вн. тер. г. муниципальный округ Бутырский, проезд Огородный, д. 16/1, стр. 3, помещение 908 |
| Размещение разработчиков | 127254, г. Москва, вн. тер. г. муниципальный округ Бутырский, проезд Огородный, д. 16/1, стр. 3, помещение 908 |
| Размещение службы технической поддержки | 127254, г. Москва, вн. тер. г. муниципальный округ Бутырский, проезд Огородный, д. 16/1, стр. 3, помещение 908 |
| Размещение серверов с развёрнутым экземпляром программы серверная часть и сервер раздачи клиентского скрипта | Центр обработки данных IXcellerate, московская локация: 117545, г. Москва, ул. Подольских Курсантов, д. 15Б, стр. 1 |
Серверы, на которых развёрнута программа, размещены в центре обработки данных на территории Российской Федерации. Данные заказчиков за пределы Российской Федерации не передаются.
4.14. Обучение и квалификация персонала
- Сотрудники, участвующие в разработке и сопровождении программы, имеют профильное образование и опыт работы с применяемым технологическим стеком.
- Новые сотрудники проходят внутреннее обучение по архитектуре программы, порядку разработки, выпуска обновлений и сопровождения, с закреплением наставника.
- Поддержание квалификации обеспечивается внутренними обучающими мероприятиями и рецензированием кода.
- Обучение пользователей заказчика проводится при вводе программы в эксплуатацию и при выпуске версий, изменяющих порядок работы.
4.15. Снятие с эксплуатации
- По завершении срока действия договора данные заказчика передаются ему в согласованном формате либо удаляются по его письменному указанию.
- Клиентский скрипт удаляется с сайтов заказчика, маршрутизация телефонных номеров возвращается к исходной схеме.
- Для инсталляций в контуре заказчика снятие с эксплуатации выполняется силами заказчика при консультационной поддержке правообладателя.
Документы
Разделы настоящей страницы доступны отдельными файлами.
Разделы 1–4 настоящей страницы составляют полный комплект эксплуатационной документации на программу: описание функциональных характеристик, информация, необходимая для установки, информация, необходимая для эксплуатации, и описание процессов, обеспечивающих поддержание жизненного цикла программного обеспечения. Документация размещена в открытом доступе, регистрация и запрос доступа не требуются.
Техническая поддержка
| Параметр | Значение |
|---|---|
| Организация | ООО «Меридиан», ИНН 7734690311, ОГРН 1127747136835 |
| Электронная почта | help@meridianooo.ru |
| Телефон | +7 499 648-54-49 |
| Режим работы | Понедельник–пятница, 09:00–18:00 по московскому времени. Расширенный режим — по отдельному соглашению |
| Сроки реакции | Приведены в п. 4.7 настоящей документации |
| Состав поддержки | Консультации по работе в веб-АРМ, диагностика подмены номеров, помощь в настройке правил и интеграций, устранение неисправностей, установка обновлений, обучение пользователей |
| Язык поддержки | Русский |