UI/документация: крошки, метрики узлов в stats, правки навигации и подвала
- Документация: хлебные крошки; секции H2 в одной карточке; заголовок вкладки от H1 - Навигация: активна только текущая пилюля (Панель без постоянного home-стиля) - GET /api/v1/stats: cluster_resources (docker stats CPU/RAM/I/O по узлам kind) - Панель: блок ресурсов в карточке статистики; убраны строки подвала про api_routes/clusters - Удалён app/docs/README.md; крошки app/docs → api_routes.md; README корня обновлён
This commit is contained in:
@@ -58,6 +58,26 @@ class ClusterSummary(BaseModel):
|
||||
meta: dict[str, Any] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class KindNodeResourceStat(BaseModel):
|
||||
"""Одна нода kind (контейнер): снимок ``docker stats`` / ``podman stats``."""
|
||||
|
||||
container_name: str
|
||||
cpu_percent: str | None = Field(default=None, description="Доля CPU, напр. 1.23%")
|
||||
memory_usage: str | None = Field(default=None, description="Использование / лимит, напр. 120MiB / 7.7GiB")
|
||||
memory_percent: str | None = Field(default=None, description="Процент памяти от лимита контейнера")
|
||||
net_io: str | None = Field(default=None, description="Сетевой I/O (накопительно за жизнь контейнера)")
|
||||
block_io: str | None = Field(default=None, description="Блочный I/O")
|
||||
pids: int | None = Field(default=None, description="Число процессов в контейнере")
|
||||
|
||||
|
||||
class KindClusterResources(BaseModel):
|
||||
"""Ресурсы узлов одного кластера kind (только запущенные контейнеры)."""
|
||||
|
||||
cluster_name: str
|
||||
nodes: list[KindNodeResourceStat] = Field(default_factory=list)
|
||||
note: str | None = Field(default=None, description="Пояснение, если узлов нет или ошибка списка")
|
||||
|
||||
|
||||
class StatsResponse(BaseModel):
|
||||
"""Краткая статистика для дашборда."""
|
||||
|
||||
@@ -66,6 +86,14 @@ class StatsResponse(BaseModel):
|
||||
total_workers_from_meta: int | None
|
||||
jobs_total: int
|
||||
jobs_recent_failed: int
|
||||
cluster_resources: list[KindClusterResources] = Field(
|
||||
default_factory=list,
|
||||
description="CPU/RAM/I/O узлов kind по данным container CLI",
|
||||
)
|
||||
cluster_resources_error: str | None = Field(
|
||||
default=None,
|
||||
description="Глобальная ошибка сбора метрик (например CLI не найден)",
|
||||
)
|
||||
|
||||
|
||||
class ClusterWorkloadsResponse(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user