v1.0.69: autotest prefix fixed in CREATE field

This commit is contained in:
2026-07-27 12:36:18 +04:00
parent b9f5d1a17e
commit 199decf96c
4 changed files with 19 additions and 14 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
# Архитектура app-autotest — полный документ # Архитектура app-autotest — полный документ
v1.0.68, 27.07.2026 v1.0.69, 27.07.2026
--- ---
+12 -1
View File
@@ -1,6 +1,17 @@
# История разработки app-autotest # История разработки app-autotest
# v1.0.68 (27.07.2026) — operation name shown after OK + muted operation buttons # v1.0.69 (27.07.2026) — autotest prefix fixed in CREATE field
### Что изменилось
- В `site/templates/index.html` префикс `autotest-` отображается отдельным фиксированным текстом.
- Рядом с ним остаётся только редактируемый суффикс имени.
- При отправке CREATE имя собирается как `autotest-` + введённый хвост.
### Что это чинит
- Ситуацию, когда весь `displayName` показывался в одном редактируемом поле.
- Риск случайно стереть обязательный префикс `autotest-`.
## v1.0.68 (27.07.2026) — operation name shown after OK + muted operation buttons
### Что изменилось ### Что изменилось
- В `site/templates/index.html` финальный статус теперь показывает имя операции рядом со временем. - В `site/templates/index.html` финальный статус теперь показывает имя операции рядом со временем.
+1 -1
View File
@@ -6,7 +6,7 @@ from routes.main import bp as main_bp
from routes.api import bp as api_bp from routes.api import bp as api_bp
from routes.api_test import bp as api_test_bp from routes.api_test import bp as api_test_bp
VERSION = "1.0.68" VERSION = "1.0.69"
app = Flask(__name__, template_folder="templates", static_folder="static") app = Flask(__name__, template_folder="templates", static_folder="static")
app.config["NUBES_API_ENDPOINT"] = os.getenv("NUBES_API_ENDPOINT", "https://lk-api-gateway-dev.ngcloud.ru/api/v1/svc") app.config["NUBES_API_ENDPOINT"] = os.getenv("NUBES_API_ENDPOINT", "https://lk-api-gateway-dev.ngcloud.ru/api/v1/svc")
+5 -11
View File
@@ -178,15 +178,8 @@ function startCreate(){
} }
function makeCreateDisplayName(){ function makeCreateDisplayName(){
const existing = new Set((svcInstances||[])
.map(i => i.displayName || '')
.filter(name => name.startsWith(AUTOTEST_PREFIX)));
const suffix = Date.now().toString(36); const suffix = Date.now().toString(36);
let candidate = `${AUTOTEST_PREFIX}${suffix}`; return suffix;
while(existing.has(candidate)){
candidate = `${AUTOTEST_PREFIX}${suffix}-${Math.random().toString(36).slice(2, 6)}`;
}
return candidate;
} }
function runOp(opName,opId){ function runOp(opName,opId){
@@ -214,8 +207,8 @@ function showParams(opId,opName){
fetch('/api/params/'+opId).then(r=>r.json()).then(params=>{ fetch('/api/params/'+opId).then(r=>r.json()).then(params=>{
const form=document.getElementById('params-form'); const form=document.getElementById('params-form');
const displayNameHint=opName==='create'?makeCreateDisplayName():''; const displayNameValue=opName==='create'?makeCreateDisplayName():'';
form.innerHTML=(opName==='create'?`<div class="param-row"><label class="req">displayName</label><input type="text" id="param-displayname" placeholder="${displayNameHint}" autocomplete="off"></div>`:'') form.innerHTML=(opName==='create'?`<div class="param-row"><label class="req">displayName</label><span style="font-size:12px;color:var(--muted);white-space:nowrap;">${AUTOTEST_PREFIX}</span><input type="text" id="param-displayname" value="${displayNameValue}" autocomplete="off"></div>`:'')
+ params.map(p=>{ + params.map(p=>{
const req=p.isRequired; const req=p.isRequired;
const hasDfl=p.defaultValue!==null&&p.defaultValue!==undefined&&p.defaultValue!==''; const hasDfl=p.defaultValue!==null&&p.defaultValue!==undefined&&p.defaultValue!=='';
@@ -271,7 +264,8 @@ async function executeOp(params){
stopPoll(); stopPoll();
// Захватить displayName ДО очистки формы // Захватить displayName ДО очистки формы
const displayNameInput=document.getElementById('param-displayname'); const displayNameInput=document.getElementById('param-displayname');
const displayName=(displayNameInput?.value||'').trim() || displayNameInput?.placeholder || 'autotest'; const displayNameSuffix=(displayNameInput?.value||'').trim() || 'tut';
const displayName=`${AUTOTEST_PREFIX}${displayNameSuffix}`;
document.getElementById('params-card').style.display='block'; document.getElementById('params-card').style.display='block';
document.getElementById('params-form').innerHTML=''; document.getElementById('params-form').innerHTML='';
const btn=document.getElementById('btn-test'); const btn=document.getElementById('btn-test');