Skip to content

Онлайн-монитор: зелёная точка «онлайн» и фильтр «Онлайн сейчас» #110

Description

@Postlog

Категория: feature · Приоритет: medium · Размер: M · Ранг: 8/10

Что построить

Зелёная точка / бейдж «онлайн» рядом с активными пользователями в таблице и опциональный фильтр/панель «Онлайн сейчас». Источник — периодический опрос онлайн-набора каждого узла, кэш в сервисе флита.

Паритет с конкурентами

3x-ui (getOnlineClients / onlines), Marzneshin/Marzban (online users, scoped per-admin), Remnawave (unique online users). Индикатор онлайна — у всех.

Чего не хватает сейчас (код)

xui-клиент реализует только ListInbounds/AddClient/DelClient — нет метода онлайн-клиентов и нигде нет периодического опроса. Флит даёт состав клиентов, но не активность. В users_get нет признака онлайна, в SPA нет точки/фильтра.

Зачем

С первого взгляда видно «пользуется ли клиент аккаунтом» и «кто сейчас подключён / здоров ли узел» — самая запрашиваемая операторами read-функция и сигнал для детекта шеринга. Subgen сейчас онлайн-статус не показывает вообще.

Предлагаемая реализация

Новый метод xui-клиента OnlineClients (POST /panel/api/inbounds/onlines → список email; один файл + httptest-тест). Сервис флита (или новый presence-сервис) держит TTL-кэш онлайн-email по узлам (как уже делает TTL-кэш флита). users_get добавляет булев online по email в строку; параметр-фильтр online=true (как уже есть q и inbound). Во Vue — точка в строке и переключатель в тулбаре.

Затронутые файлы

  • internal/clients/xui/online_clients.go (новый) + тест, contract.go
  • internal/service/fleet/{fleet.go,contract.go} (presence-кэш)
  • openapi/users_get.yaml (параметр + поле online), internal/handlers/users_get/, internal/handlers/web/static/

Продуктовый ресёрч: изучены аналоги (Marzban/Marzneshin, 3x-ui, Remnawave, Hiddify, sub-store + клиентские стандарты импорта). Паритет и subgen-gap код-обоснованы. Ранг = продуктовый приоритет.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions