feat: редизайн главной страницы в стиле Nubes (v0.3.2)

- Логотип Nubes, фавикон
- Дизайн-система Nubes: карточки, таблицы, цвета, типографика
- Описание «Что такое Polygon» и «Как использовать»
- Примеры curl для всех основных операций
- Таблица API эндпоинтов
- Таблица загруженных сервисов с деталями
- Светлая тема вместо тёмной
This commit is contained in:
2026-08-01 09:32:22 +04:00
parent 462b26d0eb
commit 691e9f4cbd
6 changed files with 564 additions and 25 deletions
+22 -2
View File
@@ -5,6 +5,7 @@ Blueprint "root" регистрируется в app.py БЕЗ url_prefix.
Отвечает за healthcheck (для Nubes) и HTML-страницу с информацией о сервисе.
"""
import os
from flask import Blueprint, render_template
import mock_state
@@ -32,15 +33,34 @@ def index():
"""Корневая HTML-страница с информацией о сервисе.
Показывает: версию, количество загруженных сервисов, количество инстансов,
текущую задержку операций. Использует Jinja2-шаблон templates/index.html
и внешний CSS из static/style.css.
текущую задержку операций, список сервисов с операциями.
Использует Jinja2-шаблон templates/index.html и внешний CSS из static/style.css.
"""
svc_count = len(_cfg.SERVICES)
inst_count = len(mock_state.state.instances)
# Список сервисов для таблицы: name, id, кол-во операций
svc_list = []
for sid, svc in sorted(_cfg.SERVICES.items(), key=lambda x: x[1].get("name", x[0])):
svc_list.append({
"id": sid,
"name": svc.get("name", sid),
"display_name": svc.get("service_display_name", svc.get("name", "")),
"op_count": len(svc.get("operations", [])),
"has_cfs": bool(svc.get("cfsParams")),
"has_state": bool(svc.get("stateParams")),
"has_out": bool(svc.get("stateOut")),
})
# URL для примеров — из переменной окружения или автоопределение
endpoint = os.getenv("POLYGON_ENDPOINT", "https://polygon.pythonk8s.dev.nubes.ru")
return render_template(
"index.html",
version=_cfg.VERSION,
svc_count=svc_count,
inst_count=inst_count,
delay=_cfg.DELAY,
svc_list=svc_list,
endpoint=endpoint,
)