Список доработок дашборда — на человеческом языке. Каждый блок отвечает на вопрос «что это даёт вам как пользователю / администратору».
Розница: режим «все свободные модемы» в пуле (настройка «Свободные порты пула» = 0). Автоподпитка теперь заполняет все годные модемы, а не ограничивается пятью портами. Занятые клиентом модемы выпадают из кандидатов автоматически, дублей нет. Доступ к панели из РФ восстановлен через фронт на StarNet (MTS LTE тоже работает), SSL-сертификаты обновляются на нём автоматически.
Утренняя сводка: строка «Неуспешные по операторам: unknown 88%» больше не приходит — это были свободные модемы без оператора в мете и без клиентов (незарегистрированные SIM). Остались только реальные операторские аномалии. Также: доступность панели из РФ восстановлена через молдавский фронт (обход душения хостинговых AS), Chart.js и шрифты — self-hosted.
Инфраструктура после переезда: на новом сервере не было sshpass и SSH-ключа для боксов — метрики серверов собирались в деградированном режиме, а S4 уходил в «Бокс недоступен». Ключ перевыпущен и прописан на всех боксах, sshpass установлен. Панельный HTTP-фолбэк метрик: таймаут 12→30 сек — на нагруженном S4-хабе /system_status рендерится ~12.5 сек и раньше ложно считался недоступным.
Белый экран на мобильных сетях РФ — второй внешний блокер устранён: шрифты Inter/JetBrains Mono грузились с fonts.googleapis.com как блокирующий стиль; в сетях, где Google Fonts висит, страница не рендерилась совсем (подтверждено эмуляцией WebKit/iPhone). Шрифты теперь на нашем сервере (/vendor/fonts.css), страница рендерится даже при полностью недоступных Google Fonts. Панель не зависит ни от одного внешнего CDN.
Белый экран админки на части мобильных сетей РФ: Chart.js грузился с cdn.jsdelivr.net синхронно в шапке — при блокировке CDN оператором страница не рендерилась вообще. Библиотека теперь лежит на нашем сервере (/vendor/chart.umd.min.js), внешних блокирующих зависимостей нет.
Колокольчик больше не присылает ежедневные напоминания о долге по неактивным клиентам: событие «Клиент в долгу» создаётся только если у клиента есть хотя бы один живой прокси-порт и он не на паузе (исторический минус бывшего клиента больше не спамит). Исправлено противоречивое уведомление о пакете SIM («осталось 0 дн — до 2027 года»): для исчерпанного по симптомам пакета дата-прогноз убран, текст теперь прямо говорит «пакет исчерпан по симптомам, скорость урезана оператором». На сервер добавлен swap 2 ГБ — исчезают многосекундные фризы панели при нехватке памяти (медленные уведомления и «вечная загрузка» страниц были именно от этого).
Системный лог больше не спамится записями «Фид offline, но прокси живы»: запись делается один раз при входе модема в это состояние, а не каждую минуту (было ~800 записей в сутки). Сами проверки зондом работают как раньше.
Устранён массовый красный статус «HTTP-ошибка» на странице модемов. Корень: проверка «модем только что сменил IP» сравнивала даты в разных форматах (ISO с буквой T против формата с пробелом) — каждый модем круглые сутки считался «ротирующимся», реальные проверки не выполнялись, а пропуски отображались как ошибки. Теперь пропуск по ротации работает только 2 минуты после фактической смены IP, а в интерфейсе показывается нейтральным серым «ротация», как и задумано. Заодно исправлены окна утренней сводки: блок «Ротации» раньше показывал данные за позавчера (форма времени ProxySmart с символом @), а новая метрика «Проблемных прокси» читала не тот день — завтра сводка придёт с правильными сутками. Карточка «Модем отключен» теперь помечает модемы без клиентов отдельным бейджем «без клиента» (и счётчиком в плитке), чтобы свободные модемы хаба не смешивались с клиентскими.
Утренняя сводка: список «Симки без смены IP (7 дн)» теперь показывает только модемы с активными клиентами — свободные модемы хаба (без единого клиентского порта) больше не попадают в дайджест и не создают ложную тревогу. Критерий тот же, что у офлайн-уведомлений: наличие ростерного порта с клиентским именем.
Большая чистка ложных уведомлений. «Проблемные прокси» в утренней сводке теперь считаются по HTTP-проверкам сайта через прокси (доля сбоев >20% за день), а не по пингу 8.8.8.8 — мобильные операторы фильтруют эту канарейку, и метрика показывала десятки «проблемных» модемов при живом трафике. Офлайн модема перед уведомлением подтверждается зондом через его прокси-порт; HTTP-сбой — только если контрольный сайт жив напрямую; проверки во время ротации IP пропускаются (2 минуты грации). CONNECT 403 от прокси (ACL порта, а не поломка модема) больше не считается ошибкой — чек уходит на запасной сайт. Офлайн-уведомления приходят только по модемам с активными клиентами. Для бандлов Moldcell/Moldtelecom отключена пер- sim детекция «пакет исчерпан» (у них общий пакет, у одной симки трафик кончиться не может). Групповые инциденты объявляются с грацией 10 минут — микро-флапы по 1–2 минуты молчат. В админке изменения (подтверждение оплаты, создание/удаление клиента) теперь видны сразу, без обновления страницы. Восстановлен клиент flint019 с портами и историей; порты Медиалогии переименованы в mlg_ru; фрод-поллер мёртвой клиентской сессии из московского ДЦ ограничен rate-limit'ом в nginx.
Realtime-кабинет: статусы прокси, смена IP и баланс обновляются мгновенно по SSE-каналу, без ожидания таймера; первый экран открывается мгновенно из кэша и догружается в фоне. Вебхуки для клиентов (Профиль → «Вебхук»): события «прокси офлайн/вернулся», «сменился IP», «платёж зачислен», «ежедневное списание» — POST на ваш URL с заголовком X-Webhook-Event. SLA-отчёт за месяц — в «Документах», печатная страница для сохранения в PDF. Админка: канон трафика теперь один — счётчики ProxySmart (проводные замеры остались детектором расхождений, значения больше не подменяются); «Ротации IP» и статистика IP ускорены в разы (rollup + кэши); мониторинг лага event loop; единый реестр сроков хранения данных + отчёт «Размер таблиц» в настройках; runbook-подсказки «что делать» прямо в уведомлениях; онбординг-чеклист новых клиентов в карточке; в сводку за последний день месяца добавлена ревизия пакетов операторов (факт vs бандл + рекомендация). На хабе S4 вендорный reset_gently урежем с */5 до */15 минут — панель перестанет деградировать по 2–3 минуты каждые пять минут.
Личный кабинет: исправлена кнопка «Сменить IP» — она ошибочно отвечала «модем не привязан» (не совпадали форматы IMEI) и падала по таймауту на хабах MF289; теперь команда ждёт до 30 секунд, а при занятости сервера модемов просит повторить через минуту. Уникальные IP в админке наконец честные: раньше история адресов обрезалась до 100 записей на модем (~17 часов) и «IP-разнообразие» показывало 80–100 вместо реальных тысяч — история хранится 90 дней и восстановлена из журнала ротаций. Период «Месяц» на дашборде, в аналитике и в списаниях заменён на «последние 30 дней». В «Топ по трафику» добавлена кнопка «Все модемы» с полным списком по убыванию. Скорость по операторам сгруппирована по странам (Молдова / Румыния), операторы без замеров скрыты, а график больше не пустует у операторов, чьи модемы клиента не успели измериться — серии считаются по всему флоту. Из профиля убраны плитки «Недоступно»/«Дней с простоем» и вводящая в заблуждение строка про ссылку смены IP (у каждого прокси — своя ссылка от ProxySmart, без общего токена). Раздел API вернул полную документацию в едином стиле кабинета: методы, поля ответа, примеры на cURL/Python/JavaScript, коды ошибок.
Новый дизайн личного кабинета клиента (v3): обзор, прокси, аналитика, баланс, документы, API, профиль. Детектор исчерпания пакета трафика на SIM: система распознаёт по косвенным признакам, что у симки закончился высокоскоростной трафик, сообщает об этом и автоматически снимает отметку после реактивации пакета (по контрольному замеру скорости). SLA стал честнее: периоды «пакет исчерпан» не портят аптайм, короткие недоступности сервера не считаются простоем модемов; пересчитано задним числом. Почасовой трафик показывает текущий час в реальном времени с собственной точкой отсчёта — фантомные скачки при сбросе счётчиков ProxySmart исключены. Клиентская скорость по операторам и локациям — медианы замеров без привязки к модему. Ускорена загрузка кабинета у крупных клиентов: тяжёлая статистика ротаций считается в фоне, а не в запросе страницы.
Точнее мониторинг и восстановление портов. Продление порта теперь подтверждается перечитыванием из ProxySmart — если дата не применилась, попытка честно считается неудачной и повторяется, а не отмечается успехом; фоновые recovery-задачи (оплаченные карточные платежи, долговые восстановления) запланированы при старте: первый прогон через 30–60 секунд, далее каждые 5–10 минут. Модем попадает в «сбоит прокси» только при свежем неуспешном последнем пинге — протухшие данные больше не триггерят автоперезагрузку. Recovery применяет промокод из заказа, даже если он истёк после оформления. Среднесуточное списание считается за полные 7 дней. ИИ-сводка в Telegram получила реальные тексты причин HTTP-сбоев и правила против ложных выводов (ICMP-пинг ≠ доступность прокси, без выдуманной USB-топологии и дублей модемов).
Фоновые задачи стали устойчивее к сбоям. Ночной бэкап: архив проверяется контрольной суммой и публикуется атомарно — битый бэкап больше не заменит рабочий, повторный запуск не создаст параллельных копий. Очистка истории и старых портов объединена в одну политику и больше не трогает данные недоступных серверов. Восстановление прокси после оплаты переживает сбои и перезапуски: если продлить порт не удалось, попытка повторяется автоматически с той же целевой датой (а протухшая дата из прошлого пересчитывается от сегодня), незавершённое восстановление не приводит к удалению порта. Мониторинг модемов точнее: живые одинаковые пинги не считаются «протухшими», пропавшие данные гасят статус сразу, а HTTPS-проверки корректно читают любые страницы и не ронят дашборд при обрыве туннеля.
Надёжность карточных платежей. Раньше сбой между подтверждением оплаты банком и зачислением денег оставлял платёж «висеть»: деньги у нас, а баланс не пополнен — разбор только вручную. Теперь каждое зачисление (и бонус по промокоду) фиксируется устойчивой «квитанцией» в той же транзакции, что и баланс, а фоновая задача каждые 5 минут автоматически доводит до конца платежи, прерванные сбоем или перезапуском — повторное зачисление при этом исключено, а после 15 минут неудачи приходит алерт. Заодно: повтор одного и того же платёжного события с другой суммой теперь явная ошибка, а не молчаливый пропуск; «бесконечные» и мусорные суммы отклоняются на входе; частичная оплата счёта с указанием его номера больше не «разливается» по чужим счетам; статус счёта в интерфейсе не показывает «оплачен», пока это не сохранилось в базе.
Исправления плановых операций по независимому аудиту. Главное: «остановка» завершённого правила больше не «оживляет» его задним числом — раньше повторная остановка расширяла диапазон до текущего месяца и ретроактивно добавляла расходы в прошлые дашборды; теперь повторная остановка безопасна (no-op), а физически удалить можно именно завершённое правило. Также: «Итого за месяц» в модалке затрат теперь включает плановые операции (совпадает с дашбордом); редактирование правила не затирает количество (qty); изменение правила больше не стирает несохранённые суммы месяца; subkey нового правила выбирается из списка локаций, а не вводится вручную; граница месяца считается по МСК, а не UTC — остановка в первые часы первого числа ставит корректный месяц окончания. Плюс пачка мелочей: дашборд различает «частично по плану», история изменений правила пишется в аудит, строки месяца, не отрисованные в модалке, не теряются при сохранении.
Плановые операции в расходах месяца. Раньше «повторением» служил неявный шаблон — строки последнего заполненного месяца: правка старого месяца молча меняла будущие, а любой разовый расход копировался вперёд бесконечно. Теперь повторение задаётся явным правилом с диапазоном действия (с месяца — по месяц или бессрочно) в модалке «Затраты месяца», секция «Плановые операции»: правила можно добавлять, править и останавливать (остановка закрывает правило концом текущего месяца, история не переписывается). Разовая сумма на конкретный месяц по-прежнему вводится как раньше и перекрывает правило только в своём месяце. В дашборде финансов видно, из чего собраны затраты: введённый месяц или плановые операции — факт и оценка больше не смешиваются молча. Существующие расходы ничего не потеряли: последний заполненный месяц один раз перенесён в бессрочные правила при обновлении.
Тепловая карта почасового трафика: подписи строк с датами больше не переносятся на две строки — «11 сентября» не влезало в узкую колонку и ломало разметку рядов. Даты в строках стали короткими («11 сен»), полная форма осталась в сводке под графиком и во всплывающих подсказках.
Клиенты с отключённым учётом баланса больше не теряют прокси по «сроку годности» порта. Раньше такой клиент выпадал из всех контуров: биллинг его пропускал (списаний нет), антидолговой конвейер не трогал, а «дата до» на портах тикала — и порты молча отключались, причём даже пополнение баланса их не продлевало (инцидент grshabl). Теперь при включении паузы биллинга «дата до» снимается со всех портов клиента — они становятся бессрочными; долговые конвейеры таких клиентов гарантированно не трогают. Существующим paused-клиентам сроки уже сняты вручную.
Румынские модемы больше не отображаются как «Orange MD». Причина была только во фронтенде админки: он определял Румынию по старому имени сервера «S2», а после переименования в RO1-MF289 все Orange-модемы румынской площадки подписывались молдавским оператором. Теперь страна берётся из карточки сервера, как и везде. Хранимая статистика (трафик, скорость, ICCID) не пострадала — там всегда писалось корректное «Orange RO», исправлять историю не потребовалось.
Сводка «N модемов не работает» больше не считает модемы, вынутые из слота навсегда. Раньше такой модем бесконечно копил простой (тысячи минут) и показывался под ником слота, в который уже воткнули другое железо, — в списке появлялись «два одинаковых» модема с разными минутами. Теперь действует тот же порог «long-dead», что и для одиночных уведомлений (Настройки → «Порог „оффлайн модем“», по умолчанию 12 часов): лежащий дольше порога из сводки убирается, свежие отключения остаются как были.
Исправлено «воскрешение» удалённых модемов и появление оффлайн-дубликатов после замены железа в слоте. ProxySmart назначает имя модема по слоту, поэтому после перестановки под старым именем живёт новый IMEI. Раньше при удалении в оперативную память попадал только один IMEI — живой модем с новым оставался видимым до перезапуска, а при авто-восстановлении флаг удаления снимался со всех IMEI этого слота сразу, и старый (уже снятый физически) возвращался рядом как дубликат «отключен». Теперь удаление по имени захватывает все IMEI, которые носили этот слот, а восстановление (ручное и автоматическое) возвращает строго тот модем, который реально появился в сети, — старое железо больше не всплывает.
Порог уведомлений об HTTP-ошибках модемов стал настраиваемым: Настройки → Уведомления → «HTTP-ошибки до уведомления». Алерт «HTTP-ошибка» уходит только после выбранного числа подряд неудачных проверок сайта через прокси (по умолчанию 3, раньше было зашито 2) — кратковременные сбои сети больше не присылают ложные тревоги. Применяется без перезапуска.
Клиенты теперь сами перевыпускают API-ключ в личном кабинете (вкладка «API» → «Перевыпустить ключ»), не дожидаясь администратора. Ротация без обрыва: новый ключ работает сразу, прежний — ещё 24 часа, этого хватает, чтобы обновить интеграцию; после дедлайна старый ключ отклоняется. Полный ключ показывается один раз сразу после перевыпуска — в системе хранится только его хэш, поэтому «показать текущий ключ» невозможно в принципе, а кнопка «Копировать» у замаскированного ключа убрана (раньше она копировала маску со звёздочками). В карточке ключа видно, когда он выдан, когда использовался последний раз и сколько запросов было за сутки; во время ротации висит предупреждение с дедлайном прежнего ключа. О каждом перевыпуске клиент получает уведомление в Telegram — несанкционированная ротация не пройдёт незамеченной. Заодно исправлен скрытый баг админского перевыпуска: новый ключ раньше начинал работать только после перезапуска дашборда, а отозванный продолжал работать до него же.
Удалённый модем больше не «воскресает» сам, пока его физически не отключили и не подключили обратно. Раньше авто-восстановление срабатывало после 3 подряд онлайн-опросов — модем, удалённый «на живую» (железо продолжало отвечать на боксе), возвращался в списки через полторы минуты (MD1). Теперь авто-восстановление — только реальный возврат из оффлайна; мгновенно вернуть модем можно кнопкой восстановления. График «Скорость модемов» на дашборде строится по линиям «оператор · локация», а не по отдельным модемам — в авто-режиме замеров модемы ротируются, и помодемные линии давали рваную картину; час теперь — среднее успешных замеров группы. В истории списаний фиксируется фактическая ставка, по которой прошло списание, а не сырая цена из карточки клиента — акт больше не распиливается на строки с разными ставками при расхождении источников цены.
Почасовой замер скорости — режим «Авто»: цель — скорость каждого оператора на каждой локации, а не конкретных симок. Каждый час выбираются до 2 онлайн-модемов на пару «сервер + оператор» (Настройки → Спидтесты); при замене SIM покрытие оператора не теряется, а если целевой модем лёг — замеряется другой модем того же оператора. Защита от массового сбоя бокса: ночью 01.09 сломанный DNS на площадке давал пустые результаты у всех модемов сразу, очередь перезамеров крутилась часами и съела два часовых тика. Теперь после 3 подряд пустых замеров бокс признаётся сломанным (алерт «Спидтесты на боксе не работают»), остальные цели пропускаются мгновенно, в перезамеры бокс идёт одним пробником, а весь прогон ограничен 20 минутами — часовые тики больше не сдвигаются. Плюс фикс: «перевыставить акт с правками» сохранял акт с суммой 0 ₽ (позиции из редактора приходили без суммы строки).
Восстановлена связь с API Точки. 20.08 банк перевёл enter.tochka.com на сертификат НУЦ Минцифры (Russian Trusted Root/Sub CA), которому Node по умолчанию не доверяет — все запросы падали с «self-signed certificate in certificate chain»: акты и счета создавались только локально, выписка не синхронизировалась. Дашборд теперь доверяет и корням Минцифры (certs/russian-trusted-ca-bundle.pem), и стандартным корням — цепочка любого типа будет принята.
Знаменатель «модемов у клиента» больше не зависает после удаления сервера. Ростер старил записи только по свежему фиду бокса; у удалённого из конфига сервера фида больше нет — его записи замерзали навсегда (после удаления S2 у клиентов днями висели лишние модемы: Brandanalytics 46 вместо 34, speech2text 33 вместо 23). Теперь при старте дашборда ростер серверов, отсутствующих в конфиге, вычищается, а блок «Клиенты» дополнительно игнорирует такие серверы даже без рестарта.
Telegram-уведомления снова показывают названия площадок вместо технических S-кодов. При инициализации алертов в kvGet приезжал prepared statement вместо функции — подстановка названия молча падала в catch, и алерты уходили как «Бокс S1 отвечает не по контракту». Теперь подстановка принимает обе формы kvGet, точка инъекции обёрнута функцией, добавлен регрессионный тест.
Две правки «сегодняшнего» трафика. (1) Таблица «Клиенты»: фронтовая коррекция «Сегодня» строила ключ как сервер+portID, но portID уже содержит префикс сервера — ключ получался двойным («S1_S1_port…»), совпадений не было ни одного, и таблица до 03:00 МСК показывала вчерашние счётчики. Теперь сначала прямой ключ, конкатенация — только фолбэк. (2) График «Потребление трафика за 60 дней»: столбец текущего дня больше не ждёт ночного агрегатора — подставляется live-значение из portTodayBytes (тот же источник, что у hero «Трафик сегодня»), с раскладкой по клиентам и по странам.
Тест восстановления бэкапа больше не распаковывает дамп в /tmp — на сервере это tmpfs в оперативной памяти (1,9 ГБ), куда 700-мегабайтная база не влезала, если tmpfs частично занят (инцидент 30.08, ENOSPC). По умолчанию распаковка идёт на диск в DB_BACKUP_DIR/tmp, переопределяется переменной BACKUP_TEST_TMPDIR.
Блок «Клиенты» на дашборде получил переключатель «Трафик / Доходность»: режим «Доходность» показывает данные одноимённого блока страницы финансов (тариф, выручка за 30 дней, себестоимость, маржа, Δ M/M, баланс) — выбор запоминается и не сбрасывается автообновлением. С дашборда убрана карточка «Операторы»; ряд «Требует внимания» теперь из трёх карточек.
Исправлены нулевые ротации и «нет замеров» по S3 и RO1 в панели «Надёжность ротаций». Модем определяется как устаревший по IMEI устройства, а не по отдельной строке «сервер+IMEI»: железка, побывавшая на нескольких боксах (S4→S3→RO1), оставляла древнюю строку прошлого сервера, и она скрывала живую статистику. Теперь модем устаревший, только если не виден онлайн нигде более 12 часов.
Исправлено определение страны сервера при записи оператора модема: признак Румынии больше не привязан к имени «S2», а берётся из карточки сервера — модемы RO1 снова считаются Orange RO в статистике уникальных IP и везде, где группировка по операторам. График «Скорость по локациям»: устранена невидимая линия отдачи — стили ссылались на несуществующую переменную --primary, заменена на фирменный --accent (синий); заодно починены цвет активного периода, стрелки ↓↑ и маркер отдачи в попапе.
График «Скорость по локациям»: обе линии приведены к одному стилю — одинаковая толщина, без заливок и теней. Зелёная — загрузка (download), синяя — отдача (upload); цвета синхронизированы в линиях, легенде, точках наведения и попапе.
Все показатели «сегодня» на главной теперь идут из собственного почасового учёта: верхняя плашка «Трафик сегодня», колонки «Сегодня» в таблицах клиентов и модемов и вкладка «Трафик → Сегодня» больше не завышаются ночью, когда панели площадок ещё не обнулили суточные счётчики. График «Скорость по локациям» стал нагляднее: под линиями получения и отдачи появились мягкие цветные заливки — две серии различимы даже там, где кривые сближаются.
Устранён часовой провал трафика «сегодня» сразу после полуночи: панели площадок обнуляют суточные счётчики ровно в свою локальную полночь (00:00 по Москве), буквально через секунды после опорного снимка системы — и до первого почасового пересчёта карточки серверов и клиентов показывали ноль. Теперь падение счётчика трактуется как сброс и «сегодня» считается от нуля корректно, без провала и без двойного учёта.
Исправлен суточный трафик «сегодня» с 00:00 до 03:00 ночи: счётчики панелей обнуляются в 03:00 по Москве, а московские сутки начинаются в полночь — из-за этого первые три часа ночи график «Потребление по дням», карточки серверов и клиентов показывали вчерашний объём как сегодняшний (по Румынии это выглядело как ~300 ГБ в час ночи). Теперь «сегодня» считается из собственного почасового учёта плюс прирост текущего часа, и цифры корректны в любое время суток.
Попап графика скорости локаций приведён к единому стилю тултипов сайта: белая карточка с тенью, приглушённое время замера сверху, строки с цветным маркером (получение/отдача) и жирным значением справа, пинг отделён разделителем. Обе линии одинаковой толщины, маркеры легенды — квадратные, как в других графиках.
График скорости проводного интернета стал интерактивным: при наведении появляется вертикальная линия с точками на обеих кривых и попап с точным временем замера, скоростью получения и отдачи и пингом. Линии различимы: синяя — получение, зелёная — отдача.
Дашборд загружается заметно быстрее: ответ основного API теперь сжимается gzip на nginx (2,6 МБ → ~0,5 МБ), а из ответа убрана полная история смен IP — фронту нужна только последняя запись на модем. Заодно починен почасовой замер проводного канала: сломанный на боксах speedtest-cli (download 0, ping 30 минут, сервер в Турции) больше не перебивает точный Cloudflare-замер.
Исправлено создание портов и изменение ротации на серверах с нестандартным именем (RO1-MF289 и далее): дашборд срезал с IMEI только префиксы вида «S1_», и на бокс улетал идентификатор «RO1-MF289_8673…», который ProxySmart молча отклонял. Заодно восстановлен учёт аптайма клиентов таких серверов.
В настройках серверов вместо гайда по модему теперь полный чек-лист «Как подключить новый сервер»: команды для пользователя mon с ключом дашборда, пробросы на роутере, поля формы добавления и шаги проверки.
В карточку клиента вернулась вкладка «Документы»: акты, счета и загрузка файлов снова доступны из профиля клиента — раздел пропал при редизайне карточки.
Проводной канал теперь измеряется по физическим локациям, падение скорости модемов сравнивается с корректной почасовой нормой, а создание портов использует реквизиты самого ProxySmart.
Красный статус OFFLINE у сервера теперь означает именно недоступность самого сервера. Доступный сервер без работающих модемов (например, новая площадка, где парк ещё не подключён) помечается нейтральным «Нет модемов» — раньше он выглядел как авария.
Дашборд 2 теперь не только показывает состояние парка, но группирует массовые сбои, замечает деградацию относительно нормы и заранее показывает финансовые и инфраструктурные риски.
Появился отдельный упрощённый главный экран: вместо длинной ленты графиков он сразу показывает, что требует действий, какие клиенты затронуты и где есть готовый резерв.
На странице модемов номер телефона теперь всегда берётся из загруженного реестра SIM, если карта там есть — раньше устаревший номер, закэшированный на сервере, мог отображаться вместо актуального.
У пакетов операторов появился день обновления тарифа: остаток трафика и темп расхода теперь считаются от реальной даты обнуления пакета у оператора, а не от 1-го числа месяца.
При расхождении номера телефона между загруженным реестром SIM и данными сервера приоритет теперь всегда у реестра: загруженный номер считается эталонным и автоматически заменяет устаревший.
Реестр SIM теперь понимает выгрузки операторов, где у ICCID обрезана последняя контрольная цифра (19 вместо 20): недостающая цифра восстанавливается автоматически по стандартному алгоритму, и совпадение с модемом по-прежнему проверяется строго — цифра в цифру.
Идентификаторы SIM-карт теперь хранятся и сравниваются в едином виде (только цифры): перестановки служебных символов больше не выглядят как «замена SIM». А если панель сервера начинает отклонять логин и пароль, вы сразу увидите предупреждение — раньше это маскировалось под обычную недоступность сервера.
В инфраструктуре появились отдельный учёт оборудования по физическим локациям и реестр соответствий ICCID ↔ номер телефона.
Устранена причина редких самопроизвольных перезапусков панели: если модем рвал соединение в середине проверки доступности сайта, процесс дашборда перезапускался целиком. Теперь такой обрыв корректно записывается как неудачная проверка конкретного модема — панель работает дальше без перезапуска.
Исправлен показ потребления трафика за день, в который сервер перезапускался: раньше в личном кабинете такой день мог выглядеть заниженным, хотя начисления считались верно. Теперь статистика в кабинете, как и в админ-панели, сверяется с независимой почасовой историей и показывает бо́льшее из двух значений.
Ежемесячные расходы на инфраструктуру теперь группируются по физическим площадкам, а не по серверам: два бокса на одном адресе — одна строка расхода. Добавлена история недоступности серверов за произвольный период (24 часа, 7, 30 или 90 дней) с учётом текущего простоя и окон обслуживания.
Аптайм модема теперь один на всю платформу: в личном кабинете, SLA-отчёте и таблице модемов показывается одна и та же цифра, посчитанная из минутных проверок доступности. Устаревшая метрика «Здоровье» удалена — вместо неё честный аптайм за 30 дней: если модема не было в сети, это учитывается как простой, а не пропускается.
«Трафик сегодня» и «Трафик месяц» в карточках серверов и в личном кабинете теперь считаются по собственному почасовому учёту дашборда. Раньше цифры брались из живых счётчиков бокса и обнулялись при перезапуске его панели — теперь показания переживают такие перезапуски.
Загрузка серверов собирается целиком по защищённому SSH-подключению одним запросом: процессор, память, диск, температура, аптайм, соединения, база данных, дрейф часов и USB-ошибки. Веб-панель бокса опрашивается только когда SSH недоступен — показания больше не смешиваются из разных источников.
В личном кабинете появился SLA-отчёт за месяц: аптайм по каждому дню отдельно и за весь период, посчитанный по реальным проверкам доступности модемов. Аптайм на всех экранах теперь считается одинаково — расхождений между разделами больше нет.
Если сервер временно недоступен, начисления за день больше не теряются: списания проводятся по последним достоверным данным, а когда сервер возвращается, биллинг автоматически догоняет пропущенное по факту трафика. Админка обновляется мгновенно через realtime-канал — без ожидания минутного автообновления.
Переработан контроль доступности: каждый модем проверяется пингом раз в минуту, работоспособность прокси подтверждается открытием сайта через него, а текущий трафик на модеме виден в реальном времени.
Карточки «Парк по серверам» адаптированы под телефон: компактные графики в один ряд, перестроенный нижний блок показателей, память и диск в гигабайтах под процентами.
Порты заблокированных клиентов автоматически удаляются после периода удержания, а сами клиенты переходят во вкладку «Неактивные». Счётчик модемов у клиента теперь всегда сходится с фактом: удалённый порт сразу исключается из реестра.
Карточки в блоке «Парк по серверам» перерисованы: у каждого сервера — мини-графики загрузки процессора, памяти и диска за последние сутки, текущее значение и среднее за 24 часа рядом, плюс трафик за сегодня, средний сигнал и число проблемных модемов одним взглядом.
Загрузка серверов (процессор, память, диск, температура, аптайм) теперь собирается по защищённому SSH-подключению с отдельным read-only доступом — данные точнее и не зависят от веб-панели бокса. Порт подключения задаётся в настройках сервера. На шкалах памяти и диска рядом с процентами показаны реальные цифры — «44% · 3,3/7,4 ГБ».
Исправлена ошибка, из-за которой кнопки во всплывающих окнах (например, «Применить» при массовой смене ротации) иногда не реагировали на нажатие. Автообновление страниц стало ещё аккуратнее: больше не скрывает раскрытые пароли и не трогает открытые фильтры и поля ввода.
Разделы настроек перегруппированы по смыслу: появился отдельный раздел «Спидтесты», а «Данные и хранение» стал разделом «Система». В карточке клиента появилась кнопка полной блокировки: доступ, сессии и все соединения отключаются одним действием.
Блок «Загрузка серверов» встроен в раздел «Парк по серверам» (без отдельного заголовка). История недоступности серверов больше не забивается флапами: эпизоды с паузой меньше 10 минут объединяются в один со счётчиком эпизодов.
Покупка прокси стала короче: после оплаты тарифа кабинет сам открывает вкладку с реквизитами, а при нехватке средств — сразу переносит на пополнение и подставляет нужную сумму. Вкладка «История баланса» переименована в «Баланс» — там же живёт и пополнение.
Уведомления «модем оффлайн» / «модем вернулся» теперь ходят строго парами: сообщение о возвращении приходит только если до этого реально уходило сообщение о падении (и наоборот). Массовая смена ротации выполняется по одному модему с живым прогрессом («3/10 — …») вместо одного долгого запроса, который обрывался на середине пачки.
На вкладке «Дашборд» появился блок «Загрузка серверов»: процессор, средняя загрузка, память, swap, диск, температура и аптайм каждого сервера — цветными шкалами, чтобы нехватку ресурсов было видно заранее. Письма (подтверждение email, сброс пароля) теперь оформлены в фирменном стиле сайта с кнопкой вместо «голой» ссылки.
Красная пометка портов на странице «Модемы» теперь работает и для обычных (B2B) клиентов, а не только для розницы: если клиент заблокирован (за долг или антифрод), его порты в таблице модемов красные, а в карточке модема — с красной рамкой и меткой «Заблокирован». Раньше пометка бралась только из розничного пула, поэтому порты заблокированных B2B-клиентов никак не выделялись.
Уведомление доменного контроля теперь показывает не только запрещённый домен, но и все сайты, которые клиент посещал в тот день — сразу виден контекст нарушения. В админке появился раздел «Настройки → Доменный контроль»: журнал совпадений с бан-листом по дням и кнопка «Все домены» у каждой строки — полный список обращений клиента за день с подсветкой запрещённых. Важно: источник данных (ProxySmart) отдаёт только домены, полных ссылок (URL) в нём нет — технически доступен максимум домен + количество обращений. Также: красной рамкой на странице «Клиенты» теперь выделяются только заблокированные клиенты (их порты уже не работают и будут удалены, если не оплатить), без лишних меток у активных.
Исправлено редкое двойное зачисление банковского платежа: банк присылает один и тот же платёж по двум каналам (мгновенное уведомление и выписка) с разными внутренними номерами, и система могла принять их за два разных платежа. Теперь записи по двум каналам автоматически связываются, и деньги зачисляются строго один раз; защита от коллизий (два одинаковых платежа в один день) при этом сохраняется — оба зачислятся, как и раньше. Плюс: клиенты, у которых баланс заканчивается (меньше ~5 дней при текущем расходе), теперь явно подсвечены: красная рамка и метка «Истекает · N дн» на карточке клиента и красная метка в таблицах дашборда и финансов — такие клиенты больше не потеряются.
Заблокированные порты теперь видны на странице «Модемы» с первого взгляда: в таблице такой порт подсвечен красным, а в карточке модема он выделен красной рамкой с меткой «Заблокирован» и датой, когда порт будет удалён автоматически. Раньше понять, что порт уже не работает и скоро исчезнет, можно было только в разделе настроек пула.
Попапы на графиках больше не «зависают» на экране при прокрутке страницы — закрываются сразу. В попапе графика скорости теперь учитывается легенда: скрытый модем исчезает и из разбивки в попапе. У заблокированных клиентов в списке появилась заметная метка «Блок» — раньше блокировку было видно только внутри карточки. Метка «Пауза» (когда списания остановлены) заменена на аккуратный значок перечёркнутого рубля — единый вид на всех страницах, смысл виден при наведении. Уведомления об автоматическом переносе портов на запасные модемы стали компактнее: одно сообщение на модем со списком перенесённых портов вместо отдельного сообщения на каждый порт. Если перенести не удалось (нет запасного модема или ошибка), дашборд напоминает об этом каждые 15 минут, пока проблема не решится.
Нумерация «№ NN/MM-YYYY»: NN — сквозной номер документа конкретного клиента (идёт подряд с начала работы и не сбрасывается каждый месяц), MM-YYYY — месяц, за который выставлен документ. По номеру сразу видно, какой это по счёту акт или счёт клиента, и за какой он месяц: «01/07-2026», «02/08-2026»… Акты и счета одного клиента делят общую серию. Ранее выставленные документы не перенумеровываются.
В актах, отправляемых в банк, теперь автоматически заполняется поле «Основание» — берётся из реквизита договора клиента (например, «Договор № … от …»). Раньше его приходилось заполнять вручную в интернет-банке. Если у клиента договор не указан, акт уходит без основания, как раньше.
Новая модель нумерации закрывающих документов: «№ N/MM-YYYY» — номер теперь соответствует месяцу, к которому относится документ, а не дате выставления. Например, акт за июль, выставленный в августе, получит номер из июльской серии («5/07-2026»). У каждого месяца своя нумерация с единицы; акты и счёта по-прежнему делят одну серию. Уже выставленные документы не перенумеровываются.
Исправлен учёт модемов у клиента при отвязке портов. Если порт отвязан от клиента, а сам модем остался онлайн, счётчик «в работе» раньше продолжал считать его рабочим. Теперь порт, отсутствующий на боксе дольше 10 минут, из «в работе» исключается сразу. На начисления это не влияет: списания всегда шли по факту трафика. Дополнительно: отвязанный порт больше не сохраняет доступ к личному кабинету на остаток суток — доступ отзывается через те же 10 минут после отвязки.
Исправлено периодическое уменьшение количества модемов у клиентов без каких-либо удалений. Причина: ежесуточная очистка ошибочно считала часть привязок «дублями» и удаляла их из реестра. Автоматическое удаление из реестра полностью отключено: модем теперь убирается только вручную через админку, как и было заявлено в политике.
Все ключи и пароли интеграций теперь проверяются «вживую» в момент сохранения в настройках: почта, Telegram-бот, ИИ и банк. Если сервис отвечает «доступ запрещён» (неверный логин/пароль, отозванный токен) — сохранение блокируется с понятным сообщением, и невалидные креды не попадают в систему. Если же проверка не состоялась из-за сети (сервис недоступен) — настройки сохраняются, но показывается предупреждение. Успешные проверки подтверждаются зелёными уведомлениями.
В блоке затрат (Финансы → «Затраты») суммы можно указывать в молдавских леях (MDL) и румынских ронах (RON): валюта выбирается у каждой строки и подставляется автоматически. Суммы пересчитываются в рубли по сегодняшнему курсу ЦБ (обновляется ежедневно автоматически; в шапке окна можно задать свой фиксированный курс). По SIM-картам теперь указываются количество симок и цена за штуку — итог считается сам. Рядом с каждой строкой в валюте показывается серый эквивалент «≈ X ₽». Финансовый дашборд суммирует затраты уже в рублях.
Telegram отключил старый виджет входа (iframe oauth.telegram.org — при клике показывал «deprecated»): вход переведён на новый протокол OpenID Connect — кнопка «Войти через Telegram» теперь по размеру как «Войти» и работает через официальный code-flow. В полях пароля на регистрации и сбросе появился «глазик» для просмотра введённого. Добавлена кнопка «Отправить письмо ещё раз» для подтверждения email (в баннерах профиля и витрины, кулдаун 5 минут). В профиле теперь виден @username привязанного Telegram-аккаунта. Исправлена отправка писем подтверждения email. Тарифы из админки стали видны в витрине.
Исправлено отображение кнопки входа/регистрации через Telegram: старый виджет конфликтовал с политикой безопасности страницы и молча не появлялся. Кнопка Telegram добавлена и на страницу входа личного кабинета. Убран лишний вертикальный зазор под заголовком на страницах регистрации и восстановления пароля (пустые блоки ошибок больше не занимают место).
Страницы регистрации, восстановления и сброса пароля, подтверждения email были пустыми: их скрипты блокировались политикой безопасности страниц. Исправлено — все страницы работают.
Банковские уведомления (входящие платежи B2B) перенесены на новый API-ключ банка. Обработчик уведомлений стал универсальным: корректно принимает все типы событий.
Подключён интернет-эквайринг банка: ключи введены в настройках (Раздел «Розница» → «Эквайринг»). Исправлена проверка подписи банковских уведомлений об оплате — платежи больше не отклоняются ошибочно.
Карточки «Промокоды», «Эквайринг», «Карточные платежи» и «Пул портов» в разделе «Розница» больше не скрываются при выключенной рознице — настраивать продажи можно до запуска. В настройки вынесены параметры, которые раньше были только в коде: интеграции (CRM, ИИ-сводка), публичный адрес дашборда, пороги алертов, сроки хранения, а также включение и лимиты симулятора нагрузки (раздел «Симулятор»).
Настройки больше не сбрасываются авторефрешом: если вы редактируете поле и не успели нажать «Сохранить», периодическое обновление данных (раз в 10 секунд) не перезаписывает форму — после сохранения обновление возобновляется. Алерт «массовая покупка» можно полностью выключить: порог 0 = выкл.
Все параметры розницы собраны в отдельный пункт настроек «Розница»: главный выключатель продаж, цена тест-дня, сроки grace/hold, лимиты регистраций, алерты и антифрод, ключи интеграций (секреты хранятся зашифрованными). В спидтестах убраны параметры старых массовых замеров — вместо них настройки выборочного почасового замера: порог перезамера, шаг и число раундов, срок хранения. В карточке модема «История» разделена на вкладки «Ротации IP» и «Скорость». Из промокодов убран тип «бонусные дни» — остались процент и фиксированная сумма к пополнению.
Промокоды: процент или фиксированная сумма бонусом к пополнению, бонусные дни при покупке прокси (управление — в админке, раздел тарифов). В личном кабинете появилась партнёрская ссылка для приглашений и кнопка вывода накопленной комиссии на баланс одним нажатием. Оператор может зафиксировать выплату комиссии деньгами — из карточки клиента в админке.
Исправлено: часть заявок с сайта отклонялась из-за формата рекламных меток. Теперь заявки проходят.
Заявка с сайта теперь создаёт не только контакт, но и сделку в CRM, заметка видна в карточке сделки.
Каждая заявка с лендинга arendaproxy.ru теперь автоматически падает в Twenty CRM — ничего не теряется и не забывается в переписке.
Четвёртый этап B2C: кодовая часть приёма платежей от физлиц — пополнение баланса картой или СБП прямо из личного кабинета.
Пятый этап B2C: автоматическая защита пула от абьюза — саспенд при нарушениях, анти-мультиаккаунт, контроль качества IP.
Один бот на всех: клиенты привязывают аккаунт и получают свои уведомления, админы — алерты и сводки по whitelist.
/start link_код — и уведомления приходят вам. Отвязка — там же.Второй этап B2C: конвейер автоблокировки розничных клиентов, пул свободных портов и понятные баннеры в кабинете.
Замеры скорости стали честнее, настройки — удобнее, а в кабинете появилась смена email.
Пакет мелких, но заметных улучшений: ссылка смены IP прямо в строке подключения, истории разнесены по вкладкам, замеры скорости настраиваются, а диск сервера больше не забивается бэкапами.
user:pass@ip:port дописывается ссылка через «|» — user:pass@ip:port|link. Выбор запоминается.Первый этап B2C: физлицо может само зарегистрироваться, подтвердить email, выбрать тариф и купить прокси — без участия администратора. Покупка списывает средства с баланса. Функция включается настройкой — по умолчанию выключена.
Личный кабинет клиента и админка теперь говорят на одном визуальном языке: одинаковая навигация, одинаковая загрузка, одинаковые графики. Плюс кабинет научился показывать скорость модемов и почасовой трафик, а все эмодзи на сайте заменены аккуратными иконками.
Главное — цифрам снова можно верить: списания больше не выглядят как приходы, удалённые модемы не считаются в парке, а уведомления не будят из-за того, чего не видно на экране. Плюс все графики приведены к одному стилю, а кабинет стал светлым.
Кабинет перерисован целиком: левый сайдбар, светлый Дашборд-«командный центр», единый стиль всех страниц — плюс автоматизация финансов и самовосстановление парка модемов.
Полная переработка денежного потока, архитектуры и тестового покрытия. Внешне ничего не поменялось — внутри дашборд стал в разы надёжнее.
Симулятор нагрузки, ИИ-инсайты, перестройка вкладки аналитики, защита от потери данных.
Расширенный мониторинг прокси, авто-восстановление модемов, развёрнутая документация.
Конфигурация серверов переехала из .env в базу — управление через UI без перезапусков.
UI для управления серверами + поддержка переименования портов на разных моделях.