v0.5.0: 3 стенда — изоляция состояния, WSGI middleware, OpenAPI server selector, POLYGON_STANDS env
- loader.py: STANDS dict, get_services/get_ops_index per stand, POLYGON_STANDS env
- mock_state.py: get_state(stand_id) — ленивая инициализация
- app.py: StandMiddleware — перезапись PATH_INFO до Flask-роутинга
- Все роуты: LocalProxy(state), LocalProxy(SERVICES/OPS_INDEX) через g.stand_id
- openapi.py: _build_servers() — по одному серверу на стенд
- services/stand{1,2,3}/ — 37 YAML на стенд из STANDS/dev и STANDS/test
- tests/test_api.py: +4 multi-stand теста (изоляция, fail-next, OpenAPI servers)
- Обратная совместимость: /api/v1/svc/... → стенд по умолчанию
This commit is contained in:
+6
-3
@@ -7,12 +7,15 @@ Blueprint "root" регистрируется в app.py БЕЗ url_prefix.
|
||||
"""
|
||||
|
||||
import os
|
||||
from flask import Blueprint, render_template
|
||||
from flask import Blueprint, g, render_template
|
||||
from werkzeug.local import LocalProxy
|
||||
|
||||
import mock_state
|
||||
import config.loader as _cfg
|
||||
|
||||
# Версия — из config/loader.py (единый источник правды)
|
||||
state = LocalProxy(lambda: mock_state.get_state(g.stand_id))
|
||||
SERVICES = LocalProxy(lambda: _cfg.get_services(g.stand_id))
|
||||
|
||||
VERSION = _cfg.VERSION
|
||||
|
||||
# Токен для авторизации в Swagger UI (предзаполняется)
|
||||
@@ -44,7 +47,7 @@ def index():
|
||||
Использует Jinja2-шаблон templates/index.html и внешний CSS из static/style.css.
|
||||
"""
|
||||
svc_count = len(_cfg.SERVICES)
|
||||
inst_count = len(mock_state.state.instances)
|
||||
inst_count = len(state.instances)
|
||||
|
||||
# Список сервисов для таблицы: name, id, кол-во операций
|
||||
svc_list = []
|
||||
|
||||
Reference in New Issue
Block a user