21 lines
1.2 KiB
Go
21 lines
1.2 KiB
Go
// Package stats — аналитический слой консоли.
|
|
//
|
|
// StatsProvider абстрагирует конкретный инструмент (Grafana, Prometheus, etc.).
|
|
// При смене инструмента достаточно заменить реализацию и переменные окружения.
|
|
package stats
|
|
|
|
import "context"
|
|
|
|
// StatsProvider — интерфейс аналитики.
|
|
// Реализации: GrafanaProvider (GRAFANA_INTERNAL_URL задан), NoopProvider (заглушка).
|
|
type StatsProvider interface {
|
|
// EnsureOrgForNamespace идемпотентно создаёт аналитическое пространство
|
|
// для namespace (Grafana Org + datasource + dashboard + public link).
|
|
// Вызывается при handleAuth — fire-and-forget горутиной.
|
|
EnsureOrgForNamespace(ctx context.Context, namespace, email string) error
|
|
|
|
// DashboardURL возвращает публичный URL дашборда без логина.
|
|
// Возвращает "" если аналитика не настроена или provisioning не завершён.
|
|
DashboardURL(ctx context.Context, namespace string) string
|
|
}
|