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

Installer

Installer — мобильное приложение для монтажников интернет-провайдера и оператора связи. Приложение работает как PWA и интегрируется с учётной системой ERP (UserSide подобных).

В продакшене отдаётся как статика API и WebSocket идут на ipx.

Возможности

  • Работа с нарядами: просмотр, поиск, фильтрация, создание и изменение статусов задач.
  • Карточка задачи: описание, чек-лист, исполнители, комментарии, оборудование, файлы, история и связанные объекты.
  • Фото и документы по задачам с загрузкой через камеру или галерею.
  • Работа с абонентами: поиск по ФИО, адресу и лицевому счёту, просмотр договора, тарифа, услуг, баланса и контактных данных.
  • Работа с оборудованием абонентов: ONU, MAC/IP, уровни PON, выдача и возврат ТМЦ.
  • Интерактивная карта сети с GPS-позицией сотрудника.
  • Отображение узлов, муфт, опор, колодцев, кабелей, волокон, домов и других объектов сети.
  • Использование картографических подложек OpenStreetMap, Яндекс и Google.
  • Измерение расстояний на карте (линейка).
  • Поиск и геокодирование адресов.
  • Создание и редактирование объектов сети, линий, кабелей и зданий в соответствии с правами сотрудника.
  • Просмотр схемы коммутации узлов из ERP.
  • Работа с личным инвентарём и складом.
  • Поиск оборудования по серийному номеру, MAC-адресу или штрихкоду.
  • Сканирование штрихкодов и QR-кодов камерой устройства.
  • Перемещение ТМЦ между сотрудником, абонентом, домом, узлом, задачей и складом.
  • Справочник адресов с поиском домов.
  • Складские накладные на перемещение ТМЦ.
  • Поиск ONU/ONT с отображением текущего уровня сигнала и порта OLT.
  • История уровней PON и параметров ONU.
  • Уведомления о событиях ERP через Web Push и канал реального времени.
  • Чат между сотрудниками.
  • Блокнот с разделами и заметками из ERP.
  • Табель: календарь явок, сверхурочных и аварийных выездов.
  • Управление началом и окончанием смены.
  • Профиль сотрудника и доступ к функциям в соответствии с правами ERP.
  • Установка на смартфон, планшет или компьютер без использования магазина приложений.
  • Работа в браузере и в режиме установленного PWA-приложения.

Технические характеристики

  • React, TypeScript, Progressive Web App (PWA).
  • Интеграция с ERP через серверный Go-proxy.
  • JWT-аутентификация; API-ключ ERP не передаётся клиенту.
  • Карты на базе Leaflet.
  • Локальное хранение кэша и истории уведомлений в IndexedDB.
  • Уведомления через STOMP и Web Push.
  • Поддержка GPS-позиционирования при открытом приложении.
  • Портретная ориентация, режим standalone.

Требования

  • HTTPS на хосте PWA в проде (геолокация, камера, Web Push, установка PWA)

Параметры конфигурации PWA

Задаются в dist/config.js на сервере.
Префикс REACT_APP_ — исторический; все ключи ниже входят в runtime-конфиг.

Обязательные / основные

ПараметрПо умолчаниюОписание
REACT_APP_API_URLБазовый URL ipx без хвоста /api (напр. https://api.example.com). От него строятся /api, /webpush, иконки узлов и т.п.
REACT_APP_STOMP_URLиз API_URL → ws(s)://{host}/wsЯвный URL STOMP. Обычно не нужен, если WS на том же хосте, что API
REACT_APP_LOGO_URLпустоURL логотипа в шапке (ссылка на главную). Пусто — без картинки-лого

Карты и геопоиск

ПараметрПо умолчаниюОписание
REACT_APP_MAP_SEARCH_PROVIDERnominatim (если пусто — эвристика)Провайдер поиска адресов: yandex | dadata | nominatim
REACT_APP_YANDEX_TILES_KEYКлюч Tiles API — только подложка карты (не для поиска)
REACT_APP_YANDEX_GEOCODER_KEYJS API / Geocoder — поиск и reverse
REACT_APP_YANDEX_SUGGEST_KEYГеосаджест — подсказки адресов
REACT_APP_YANDEX_MAPS_KEYУстаревший/общий fallback для тайлов и геокодера, если отдельные ключи пусты
REACT_APP_DADATA_API_KEYТокен DaData (если provider = dadata или автовыбор)
REACT_APP_GOOGLE_MAPS_KEYКлюч тайлов Google (карта / спутник / гибрид)

Поведение поиска:

  • yandex — suggest + geocoder; без ключа или при ошибке → fallback на Nominatim
  • dadata — подсказки DaData
  • nominatim — OSM Nominatim (без ключа; соблюдать политику использования)

OSM-подложка карты работает без ключей. Яндекс/Google-слои появляются при наличии соответствующих ключей.

Схема работы

Locale Dropdown

Прокси Installer

ipx (installer proxy) — серверная часть Installer на Go. Клиент (PWA) не ходит в ERP напрямую: все запросы идут через ipx. API-ключ ERP хранится только на proxy и на устройство не передаётся.

Команды:

ipx # запуск сервера (foreground)
ipx install # systemd-сервис (нужен root)
ipx uninstall # остановить и удалить сервис (каталог /opt/ipx сохраняется)
ipx restart # перезапуск сервиса
ipx status # статус systemd
ipx help # справка

Конфигурация

Файл .env загружается из рабочей директории и/или рядом с бинарником. Переменные окружения процесса имеют приоритет над .env (уже заданные не перезаписываются).

Шаблон: server/.env.example.

cd server
cp .env.example .env
# отредактировать ERP_URL, ERP_API_KEY, SESSION_SECRET

При установке через ipx install конфиг ожидается в /opt/ipx/.env (если файла ещё нет — копируется найденный .env).

Переменные

ПеременнаяОбязательноПо умолчаниюОписание
LISTEN_ADDRнет:8080Адрес прослушивания ipx
ERP_URLдаБазовый URL ERP со слэшем в конце, напр. http://192.168.1.44/
ERP_API_KEYдаAPI-ключ ERP (поле key в запросах к api.php)
ERP_WS_URLнетиз ERP_URLws(s)://{host}/wsSTOMP WebSocket ERP
PUBLIC_BASE_URLнетLAN IP proxyURL, с которого ERP может скачать временный файл вложения (…/tmp/…)
TMP_DIRнетtmpКаталог временных файлов для upload
DEBUGнет00 — обычный JSON; 1 — сырой ответ ERP как text/plain (ломает SPA). JWT не отключается
CORS_ORIGINнет*Значение Access-Control-Allow-Origin
SESSION_SECRETнет*dev-строкаСекрет HMAC для JWT (HS256). В проде задать длинную случайную строку
WEBPUSH_DIRнетwebpushКаталог VAPID-ключей и подписок
VAPID_SUBJECTнетmailto:installer@localhostКонтакт VAPID (mailto: или https:)

* Без смены SESSION_SECRET токены можно подделать при известном дефолте.

Пример .env

LISTEN_ADDR=:8080
ERP_URL=https://erp.example.com/
ERP_API_KEY=your-erp-api-key
SESSION_SECRET=длинная-случайная-строка
CORS_ORIGIN=https://installer.example.com
PUBLIC_BASE_URL=https://api-installer.example.com
WEBPUSH_DIR=webpush
VAPID_SUBJECT=mailto:support@example.com
DEBUG=0

Демо

Адрес: https://installer.nodelink.ru

ЛогинПароль
demodemodemo

Версия: 1.0.0 Alpha

Штрихкоды для сканирования

Сканируйте камерой Installer для поиска оборудования или добавления в накладную: штрихкоды (PDF)