Перейти к содержимому

Обогащение данных ONU

GetOLT умеет дополнять записи ONU данными абонента — номером договора, логином, ФИО, адресом и прочими атрибутами — напрямую из базы данных, которая уже есть у оператора. Это позволяет видеть «кто стоит за этой ONU» без переключения на сторонние системы.

Обогащение работает по совпадению MAC-адреса: GetOLT нормализует MAC зарегистрированной ONU и ищет его в результатах вашего запроса. Найдено — данные появляются в карточке ONU.

Как это работает

[ GetOLT ] ── SELECT по MAC ──> [ ваша БД ]
совпадение MAC → договор, логин, ФИО, адрес
← данные подставляются в карточку ONU
  • Запрос выполняется по расписанию (cron) или вручную по кнопке в интерфейсе.
  • Перед применением доступен предпросмотр: GetOLT покажет, что именно будет записано, не трогая базу.
  • GetOLT работает read-only — ничего не пишет в вашу базу данных.

Поддерживаемые СУБД

СУБДПоддержка
MySQL 5.7+ / 8.xда
MariaDB 10.3+да
PostgreSQL 12+да

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

  1. Откройте Админка → Обогащение (раздел «Админка» — в выпадающем меню профиля справа вверху).
  2. Нажмите «Добавить источник».
  3. Заполните параметры подключения:
    • СУБД — выберите из списка (MySQL/MariaDB/PostgreSQL).
    • Хост — адрес сервера БД (например db.company.local).
    • Порт3306 для MySQL/MariaDB, 5432 для PostgreSQL.
    • Имя БД — название схемы/базы данных.
    • Пользователь и Пароль — учётные данные read-only пользователя.
  4. Напишите SELECT-запрос (подробнее ниже).
  5. Укажите маппинг колонок — какая колонка результата соответствует каждому полю GetOLT.
  6. Нажмите «Предпросмотр», убедитесь, что данные отображаются корректно.
  7. Сохраните и настройте расписание или запустите вручную.

Расписание задаётся cron-выражением из 6 полей (секунды минуты часы день месяц день-недели) в поле «Cron» формы источника. Например, 0 0 3 * * * означает «каждый день в 03:00». Если оставить поле пустым, источник запускается только вручную — по кнопке «Запустить» или через предпросмотр.

Запрос SELECT и маппинг колонок

Пример запроса

SELECT
onu_mac AS mac_onu,
device_mac AS mac_user,
contract_no AS dogovor,
user_login AS login,
full_name AS fio,
address AS addr,
service_id AS service_id,
contract_id AS contract_id
FROM subscribers

Используйте AS, чтобы задать имена колонок удобным образом — GetOLT ссылается на них через маппинг.

Маппинг колонок

После написания запроса укажите, какая колонка результата соответствует каждому полю:

Поле GetOLTКолонка в примереОбязательность
MAC ONUmac_onuобязательно
MAC пользователяmac_userопционально
Номер договораdogovorопционально
Логинloginопционально
ФИОfioопционально
Адресaddrопционально
serviceIdservice_idопционально
contractIdcontract_idопционально

Обязательна только колонка MAC ONU — по ней GetOLT ищет совпадение. Остальные поля подставляются в карточку ONU по мере наличия.

Допустимые форматы MAC-адреса

GetOLT нормализует MAC автоматически — источник может хранить его в любом из перечисленных форматов:

ФорматПример
Без разделителейaabbccddeeff
Через двоеточиеaa:bb:cc:dd:ee:ff
Через дефисaa-bb-cc-dd-ee-ff
3-блочный, дефисaaaa-bbbb-cccc
3-блочный, точкаaaaa.bbbb.cccc
Бинарный столбецбинарные 6 байт (столбец типа BINARY(6)) — см. пример ниже

Регистр (верхний/нижний) и пробелы значения не имеют — GetOLT приведёт к единому виду перед сравнением.

Если MAC хранится в нестандартном виде (например как BINARY(6) или с нестандартными разделителями), приведите его к hex прямо в запросе:

SELECT
LOWER(HEX(onu_mac_binary)) AS mac_onu,
...
FROM subscribers

Безопасность и требования

  • Только SELECT — любой запрос, содержащий INSERT, UPDATE, DELETE или DDL-команды, GetOLT отклонит до выполнения. Это защита от случайной записи в вашу базу.
  • Read-only пользователь — заведите отдельную учётную запись в вашей СУБД с правами только на чтение нужных таблиц или представлений. GetOLT не требует привилегий на запись.
  • Пароль хранится в зашифрованном виде в базе данных GetOLT — в UI он не отображается после сохранения.
  • Сетевая связность — хост GetOLT должен достигать вашего сервера БД по нужному порту (обычно 3306 или 5432). Если БД в закрытой сети — настройте сетевой маршрут или туннель заранее.

Разовый импорт из CSV

Кроме повторяемого SQL-источника, поля абонента в olt_onu можно обогатить разово — загрузив CSV-выгрузку из биллинга или АБС. Импорт применяется один раз и по расписанию не повторяется (для регулярного обновления используйте SQL-источник).

Откройте Админка → Обогащение → Разовый импорт CSV и выполните три шага:

  1. Загрузка. Выберите файл и параметры:

    • Кодировка — UTF-8 (по умолчанию) или Windows-1251 (частый формат выгрузок).
    • Разделитель — авто-определение, запятая, точка с запятой или табуляция.
    • Первая строка — заголовки — снимите галочку, если в файле сразу данные (колонки будут названы col1, col2, …).

    Нажмите «Разобрать файл».

  2. Сопоставление колонок. Для каждого поля выберите соответствующую колонку файла: MAC ONU (обязательно), MAC пользователя, номер договора, логин, ФИО, адрес, serviceId, contractId.

  3. Проверка и применение. Нажмите «Проверить» — GetOLT покажет, сколько строк валидно, сколько пропущено (нет корректного MAC) и сколько совпадёт с ONU. Нажмите «Применить» для записи изменений в olt_onu.

Поддерживаются те же форматы MAC, что описаны выше в разделе «Допустимые форматы MAC-адреса». Строки без корректного MAC пропускаются.

Ручные правки не перетираются

Данные абонента у конкретной ONU можно заполнить или поправить вручную — карандашом в таблице ONU на карточке OLT (см. UI: основные сценарии). Такая ONU помечается значком замка и исключается из обогащения — ни SQL-источник, ни разовый CSV-импорт её не затронут. Это удобно для единичных абонентов, которых нет в общей выгрузке, или для ручной корректировки.

Чтобы вернуть ONU под автоматическое обогащение — откройте окно правки и снимите галочку «Защитить от автообогащения».


Если у вас нетипичная схема хранения (несколько источников на один оператор, миграция между системами, нестандартный формат MAC) — напишите в support@getolt.online или в Telegram @getolt_pub: настройка под конкретную схему займёт обычно не более одного сеанса поддержки.

Нашли ошибку или нужно что-то дополнить? Напишите нам или в Telegram @getolt_pub.

Разработка: gmasich.ru

Политика конфиденциальности · Пользовательское соглашение