Обогащение данных 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+ | да |
Настройка источника
- Откройте Админка → Обогащение (раздел «Админка» — в выпадающем меню профиля справа вверху).
- Нажмите «Добавить источник».
- Заполните параметры подключения:
- СУБД — выберите из списка (MySQL/MariaDB/PostgreSQL).
- Хост — адрес сервера БД (например
db.company.local). - Порт —
3306для MySQL/MariaDB,5432для PostgreSQL. - Имя БД — название схемы/базы данных.
- Пользователь и Пароль — учётные данные read-only пользователя.
- Напишите
SELECT-запрос (подробнее ниже). - Укажите маппинг колонок — какая колонка результата соответствует каждому полю GetOLT.
- Нажмите «Предпросмотр», убедитесь, что данные отображаются корректно.
- Сохраните и настройте расписание или запустите вручную.
Расписание задаётся 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_idFROM subscribersИспользуйте AS, чтобы задать имена колонок удобным образом — GetOLT ссылается на них через маппинг.
Маппинг колонок
После написания запроса укажите, какая колонка результата соответствует каждому полю:
| Поле GetOLT | Колонка в примере | Обязательность |
|---|---|---|
| MAC ONU | mac_onu | обязательно |
| MAC пользователя | mac_user | опционально |
| Номер договора | dogovor | опционально |
| Логин | login | опционально |
| ФИО | fio | опционально |
| Адрес | addr | опционально |
| serviceId | service_id | опционально |
| contractId | contract_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 и выполните три шага:
-
Загрузка. Выберите файл и параметры:
- Кодировка — UTF-8 (по умолчанию) или Windows-1251 (частый формат выгрузок).
- Разделитель — авто-определение, запятая, точка с запятой или табуляция.
- Первая строка — заголовки — снимите галочку, если в файле сразу данные (колонки будут названы
col1,col2, …).
Нажмите «Разобрать файл».
-
Сопоставление колонок. Для каждого поля выберите соответствующую колонку файла: MAC ONU (обязательно), MAC пользователя, номер договора, логин, ФИО, адрес, serviceId, contractId.
-
Проверка и применение. Нажмите «Проверить» — 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