Категория: 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 код-обоснованы. Ранг = продуктовый приоритет.
Категория: 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.gointernal/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 код-обоснованы. Ранг = продуктовый приоритет.