From 2571e6e50ee38f13a965dc3dd37b9e47054888b9 Mon Sep 17 00:00:00 2001 From: JiriUhlir <149317995+JiriUhlir@users.noreply.github.com> Date: Mon, 8 Jun 2026 08:08:14 +0200 Subject: [PATCH] =?UTF-8?q?Bootstrap=20v2=20u=C5=BE=20nejde=20spustit=20be?= =?UTF-8?q?z=20re=C5=BEimu:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit výchozí akce je Run Bootstrap Check s mode=check, Run Bootstrap Repair je samostatná akce s potvrzením, Run Bootstrap Deploy je oddělený ve výrazném varování a není defaultní. --- app/routes/migration_readiness.py | 45 +++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/app/routes/migration_readiness.py b/app/routes/migration_readiness.py index d118b4e..f6799ce 100644 --- a/app/routes/migration_readiness.py +++ b/app/routes/migration_readiness.py @@ -1,6 +1,6 @@ import html -from fastapi import APIRouter, Depends, Request +from fastapi import APIRouter, Depends, Form, HTTPException, Request from fastapi.responses import HTMLResponse, RedirectResponse from app.auth import require_user @@ -18,6 +18,7 @@ from app.routes.jobs import render_job_status from app.templates.layout import page router = APIRouter() +BOOTSTRAP_MODES = {"check", "repair", "deploy"} def render_readiness_pill(ready: bool) -> str: @@ -107,23 +108,36 @@ def migration_readiness_page(request: Request, user=Depends(require_user)):
-
- + + + +
+
+ +
-
- Bootstrap v2 provádí zásahy do systému. +
+ Bootstrap v2 má explicitní režimy.

Portál bootstrap nespouští přímo přes shell. Pouze založí maintenance job pro {html.escape(BOOTSTRAP_SCRIPT)}.

+
+ Plný Bootstrap Deploy není výchozí akce. +

Režim deploy deployuje core services a může změnit stav systému. Spouštějte ho jen po kontrole dopadu.

+
+ + +
+
+
Stav{render_readiness_pill(summary["ready"])}
OK{html.escape(str(summary["ok_count"]))}
@@ -163,12 +177,21 @@ def run_migration_readiness(user=Depends(require_user)): @router.post("/migration-readiness/bootstrap") -def run_bootstrap_v2(user=Depends(require_user)): +def run_bootstrap_v2(mode: str = Form(...), user=Depends(require_user)): + mode = (mode or "").strip().lower() + if mode not in BOOTSTRAP_MODES: + raise HTTPException(status_code=400, detail="Neplatný režim bootstrapu") + job_id = create_job( job_type="run_script", target_type="maintenance_script", target_id=BOOTSTRAP_SCRIPT, - payload={"script_name": BOOTSTRAP_SCRIPT}, + payload={ + "script_name": BOOTSTRAP_SCRIPT, + "args": [mode], + "arguments": [mode], + "mode": mode, + }, user=user, source="portal_manual", )