Skip to content

Вкладка «Обзор»: дашборд с онлайн-юзерами, трафиком и статусами #108

Description

@Postlog

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

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

Новая первая вкладка «Обзор» со stat-карточками: всего пользователей, активных/отключённых/истёкших, онлайн сейчас, суммарный трафик флота (вверх/вниз), число узлов и недоступных панелей. Чисто read-only лендинг.

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

Remnawave (Home overview: online users, active/expired, трафик Today/Week/Month), Marzneshin/Marzban (users monitoring + online), 3x-ui (дашборд с графиками). Стартовая сводная страница есть у всех.

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

В SPA ровно три вкладки (index.html: Пользователи / Узлы / Конфиг Mihomo) — стартового обзора нет. Данные для агрегатов уже в кэше флита (число подписчиков, суммарный Up/Down, истёкшие/отключённые), но нигде не сводятся. Read-эндпоинта со сводкой нет.

Зачем

Сводка с первого взгляда — здоровье и рост: оператор сразу видит, кто активен, сколько истекло и какова нагрузка, без листания таблицы. Самая запрашиваемая операторами фича дашборда; у subgen стартовой страницы нет вообще.

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

Новая ручка dashboard_get (GET /admin/api/dashboard, openapi → ogen) — тонкий хендлер, агрегирующий по кэшу флита (fleet.Fleet) и счётчику юзеров: статусы, суммарный трафик, число узлов/недоступных панелей. Онлайн-число — из #110 (онлайн-монитор), при его отсутствии секция скрыта. Во Vue — новая вкладка с grid карточек в существующих токенах темы (app.css).

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

  • openapi/dashboard_get.yaml (новый) + openapi.yaml
  • internal/handlers/dashboard_get/ (новый) + contract.go, internal/service/fleet/ (агрегаты)
  • internal/handlers/web/static/{index.html,app.js,app.css}

Продуктовый ресёрч: изучены аналоги (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