fix: code review #2 — _cfg.DELAY + VERSION в config/loader + мёртвые импорты

This commit is contained in:
2026-07-31 22:32:00 +04:00
parent 9647afcfa2
commit 94d35f3914
8 changed files with 48 additions and 27 deletions
+2 -3
View File
@@ -11,8 +11,7 @@ Blueprint "mock" с префиксом /api/v1/svc/_mock.
from flask import Blueprint, jsonify
import mock_state
from config.loader import SERVICES, DELAY as _DELAY
import config.loader as _cfg # для модификации модульной переменной DELAY
import config.loader as _cfg # для чтения/записи модульных переменных DELAY, SERVICES
bp = Blueprint("mock", __name__, url_prefix="/api/v1/svc/_mock")
@@ -73,7 +72,7 @@ def mock_services():
не дёргая реальный /api/v1/svc/services.
"""
result = {}
for svc_id, svc_def in SERVICES.items():
for svc_id, svc_def in _cfg.SERVICES.items():
result[str(svc_id)] = {
"name": svc_def.get("name", ""),
"displayName": svc_def.get("service_display_name", ""),
+3 -4
View File
@@ -8,10 +8,9 @@ Blueprint "operations" с префиксом /api/v1/svc.
POST /instanceOperationCfsParams — установить параметр
GET /instanceOperations/<uid>/validate-cfs — пустое тело, 200
ВАЖНО: порядок маршрутов в蓝图 критичен.
/instanceOperations/default/<int:op_id> ДОЛЖЕН быть выше
/instanceOperations/<uid>
Иначе Flask распарсит "default" как uid и уйдёт не в тот обработчик.
Порядок маршрутов: default/<int:op_id> (целое число) и <uid> (строка UUID)
различаются Flask/Werkzeug автоматически — конфликта нет, но default размещён
выше для ясности.
"""
from flask import Blueprint, jsonify, make_response, request
+6 -7
View File
@@ -8,11 +8,10 @@ Blueprint "root" регистрируется в app.py БЕЗ url_prefix.
from flask import Blueprint, render_template
import mock_state
from config.loader import SERVICES, DELAY
from utils.now import now as _now
import config.loader as _cfg
# Версия — показывается на HTML-странице и в healthcheck (опционально)
VERSION = "0.2.2"
# Версия — из config/loader.py (единый источник правды)
VERSION = _cfg.VERSION
# Blueprint без префикса — роуты /health и / будут на корне домена
bp = Blueprint("root", __name__)
@@ -36,12 +35,12 @@ def index():
текущую задержку операций. Использует Jinja2-шаблон templates/index.html
и внешний CSS из static/style.css.
"""
svc_count = len(SERVICES)
svc_count = len(_cfg.SERVICES)
inst_count = len(mock_state.state.instances)
return render_template(
"index.html",
version=VERSION,
version=_cfg.VERSION,
svc_count=svc_count,
inst_count=inst_count,
delay=DELAY,
delay=_cfg.DELAY,
)
+5 -4
View File
@@ -14,7 +14,7 @@ from flask import Blueprint, jsonify
import mock_state
import state_machine
from config.loader import SERVICES, DELAY
import config.loader as _cfg
from utils.now import now as _now
bp = Blueprint("run", __name__, url_prefix="/api/v1/svc")
@@ -48,12 +48,13 @@ def run_operation(uid):
op["dtStart"] = _now()
# Эмулируем задержку выполнения (по умолчанию 0.1с)
if DELAY > 0:
time.sleep(DELAY)
# ⛔ _cfg.DELAY — модульная переменная, может меняться через /_mock/delay
if _cfg.DELAY > 0:
time.sleep(_cfg.DELAY)
# Применить эффект операции к состоянию инстанса
# (create → running+params, delete → удалить, modify → мерж params, ...)
state_machine.apply_effect(uid, mock_state.state, SERVICES)
state_machine.apply_effect(uid, mock_state.state, _cfg.SERVICES)
# Фиксируем время завершения — операция выполнена успешно
op["dtFinish"] = _now()