fix: нельзя сохранить сценарий — валидация + svcId для instance_ref (v1.2.47)
Баг 1: collectFormSteps не вычислял svcId для instance_ref (output-ссылка не резолвилась в service_id) Баг 2: валидация требовала service_id для ВСЕХ шагов, включая не-create с instance_ref/instance_uid
This commit is contained in:
+1
-1
@@ -32,7 +32,7 @@ from routes.api_scenario_defs import bp_defs as api_scenario_defs_bp
|
|||||||
|
|
||||||
# Версия — показывается в топбаре UI. Меняется при КАЖДОМ изменении кода.
|
# Версия — показывается в топбаре UI. Меняется при КАЖДОМ изменении кода.
|
||||||
# Нужна для фильтрации истории (пользователь видит только записи своей версии).
|
# Нужна для фильтрации истории (пользователь видит только записи своей версии).
|
||||||
VERSION = "1.2.46"
|
VERSION = "1.2.47"
|
||||||
|
|
||||||
# Flask-приложение с Jinja2-шаблонами из папки templates/
|
# Flask-приложение с Jinja2-шаблонами из папки templates/
|
||||||
app = Flask(__name__, template_folder="templates", static_folder="static")
|
app = Flask(__name__, template_folder="templates", static_folder="static")
|
||||||
|
|||||||
@@ -501,7 +501,14 @@ function collectFormSteps() {
|
|||||||
svcId = cloud.serviceId;
|
svcId = cloud.serviceId;
|
||||||
s.instance_uid = ref; // облачный UUID
|
s.instance_uid = ref; // облачный UUID
|
||||||
} else {
|
} else {
|
||||||
s.instance_ref = ref; // output-ссылка
|
// output-ссылка — ищем service_id в предыдущих create-шагах
|
||||||
|
s.instance_ref = ref;
|
||||||
|
for (let j = 0; j < idx; j++) {
|
||||||
|
if (st.steps[j].output === ref) {
|
||||||
|
svcId = st.steps[j].service_id;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -541,8 +548,16 @@ async function saveScenario() {
|
|||||||
if (!name) { alert('Введите название'); return; }
|
if (!name) { alert('Введите название'); return; }
|
||||||
if (!steps.length) { alert('Добавьте хотя бы один шаг'); return; }
|
if (!steps.length) { alert('Добавьте хотя бы один шаг'); return; }
|
||||||
for (let i = 0; i < steps.length; i++) {
|
for (let i = 0; i < steps.length; i++) {
|
||||||
if (!steps[i].service_id) { alert('Шаг ' + (i+1) + ': выберите сервис или инстанс'); return; }
|
const s = steps[i];
|
||||||
if (!steps[i].operation) { alert('Шаг ' + (i+1) + ': выберите операцию'); return; }
|
if (!s.operation) { alert('Шаг ' + (i+1) + ': выберите операцию'); return; }
|
||||||
|
// CREATE: нужен service_id. Не-CREATE: service_id ИЛИ instance_ref/instance_uid
|
||||||
|
if (s.operation === 'create') {
|
||||||
|
if (!s.service_id) { alert('Шаг ' + (i+1) + ': выберите сервис'); return; }
|
||||||
|
} else {
|
||||||
|
if (!s.service_id && !s.instance_ref && !s.instance_uid) {
|
||||||
|
alert('Шаг ' + (i+1) + ': выберите инстанс (из create-шага или облака)'); return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const st = scenarioEditorState;
|
const st = scenarioEditorState;
|
||||||
|
|||||||
Reference in New Issue
Block a user