v1.0.69: autotest prefix fixed in CREATE field
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# Архитектура app-autotest — полный документ
|
# Архитектура app-autotest — полный документ
|
||||||
|
|
||||||
v1.0.68, 27.07.2026
|
v1.0.69, 27.07.2026
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
+12
-1
@@ -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
@@ -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")
|
||||||
|
|||||||
@@ -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');
|
||||||
|
|||||||
Reference in New Issue
Block a user