""" routes/root.py — корневые эндпоинты (/health, /). Blueprint "root" регистрируется в app.py БЕЗ url_prefix. Отвечает за healthcheck (для Nubes) и HTML-страницу с информацией о сервисе. """ from flask import Blueprint, render_template import mock_state from config.loader import SERVICES, DELAY from utils.now import now as _now # Версия — показывается на HTML-странице и в healthcheck (опционально) VERSION = "0.2.1" # Blueprint без префикса — роуты /health и / будут на корне домена bp = Blueprint("root", __name__) @bp.route("/health") def health(): """Healthcheck для Nubes. Платформа периодически дёргает этот эндпоинт. Если вернёт не 200 — контейнер будет перезапущен. Возвращаем просто "OK", без JSON. """ return "OK" @bp.route("/") def index(): """Корневая HTML-страница с информацией о сервисе. Показывает: версию, количество загруженных сервисов, количество инстансов, текущую задержку операций. Использует Jinja2-шаблон templates/index.html и внешний CSS из static/style.css. """ svc_count = len(SERVICES) inst_count = len(mock_state.state.instances) return render_template( "index.html", version=VERSION, svc_count=svc_count, inst_count=inst_count, delay=DELAY, )