v1.0.64: version header and displayName placeholder
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# Архитектура app-autotest — полный документ
|
# Архитектура app-autotest — полный документ
|
||||||
|
|
||||||
v1.0.63, 27.07.2026
|
v1.0.64, 27.07.2026
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -351,6 +351,8 @@ def detect_endpoint(token):
|
|||||||
| 18 | v1.0.59 | После F5 список терял tracked-инстанс | `api_operations()` не добирал tracked-сирот обратно из трекера | `tracked_by_uid` + добавление отсутствующих tracked-инстансов |
|
| 18 | v1.0.59 | После F5 список терял tracked-инстанс | `api_operations()` не добирал tracked-сирот обратно из трекера | `tracked_by_uid` + добавление отсутствующих tracked-инстансов |
|
||||||
| 19 | v1.0.60 | CREATE не появлялся сразу в списке после OK | UI делал diff и мог не перерисовать список целиком | Полная перерисовка `inst-list` в `refreshInstances()` |
|
| 19 | v1.0.60 | CREATE не появлялся сразу в списке после OK | UI делал diff и мог не перерисовать список целиком | Полная перерисовка `inst-list` в `refreshInstances()` |
|
||||||
| 20 | v1.0.63 | Дубли и чужие инстансы | Принадлежность определялась не по namespace | `autotest-` prefix + уникализация `displayName` при CREATE |
|
| 20 | v1.0.63 | Дубли и чужие инстансы | Принадлежность определялась не по namespace | `autotest-` prefix + уникализация `displayName` при CREATE |
|
||||||
|
| 21 | v1.0.64 | Версия не показывалась в шапке | `load_config()` затирал VERSION | `config["VERSION"] = current_app.config["VERSION"]` |
|
||||||
|
| 22 | v1.0.64 | displayName был editable value, а не placeholder | CREATE подставлял имя в value | Placeholder `autotest-...`, значение вводит пользователь |
|
||||||
|
|
||||||
### ✅ Закрыто в v1.0.56
|
### ✅ Закрыто в v1.0.56
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,17 @@
|
|||||||
# История разработки app-autotest
|
# История разработки app-autotest
|
||||||
|
|
||||||
|
## v1.0.64 (27.07.2026) — header version + editable displayName placeholder
|
||||||
|
|
||||||
|
### Что изменилось
|
||||||
|
- В `site/routes/main.py` версия теперь гарантированно попадает в `config.VERSION` даже после `load_config()`.
|
||||||
|
- В `site/templates/index.html` поле `displayName` остаётся редактируемым, но автотест-имя показывается как placeholder.
|
||||||
|
- При CREATE пользователь может ввести своё имя, а backend всё равно добавит `autotest-` и проверит уникальность.
|
||||||
|
- В `DOCS/ARCHITECTURE.md` зафиксированы оба изменения.
|
||||||
|
|
||||||
|
### Что это чинит
|
||||||
|
- Пропадающую версию в шапке.
|
||||||
|
- Неправильное поведение поля `displayName`, когда оно выглядело как готовое значение вместо подсказки.
|
||||||
|
|
||||||
## v1.0.63 (27.07.2026) — autotest namespace for instances
|
## v1.0.63 (27.07.2026) — autotest namespace for instances
|
||||||
|
|
||||||
### Что изменилось
|
### Что изменилось
|
||||||
|
|||||||
+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.63"
|
VERSION = "1.0.64"
|
||||||
|
|
||||||
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")
|
||||||
|
|||||||
+2
-1
@@ -116,7 +116,8 @@ def index():
|
|||||||
for i in instances:
|
for i in instances:
|
||||||
svc_name = i.get("svc", "Прочее")
|
svc_name = i.get("svc", "Прочее")
|
||||||
instance_groups.setdefault(svc_name, []).append(i)
|
instance_groups.setdefault(svc_name, []).append(i)
|
||||||
config = load_config()
|
config = dict(load_config() or {})
|
||||||
|
config["VERSION"] = current_app.config["VERSION"]
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error = str(e)
|
error = str(e)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -189,8 +189,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 displayName=opName==='create'?makeCreateDisplayName():'';
|
const displayNameHint=opName==='create'?makeCreateDisplayName():'';
|
||||||
form.innerHTML=(opName==='create'?`<div class="param-row"><label class="req">displayName</label><input type="text" id="param-displayname" value="${displayName}"></div>`:'')
|
form.innerHTML=(opName==='create'?`<div class="param-row"><label class="req">displayName</label><input type="text" id="param-displayname" placeholder="${displayNameHint}" 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!=='';
|
||||||
@@ -242,7 +242,8 @@ function setRunningState(opName, displayName){
|
|||||||
async function executeOp(params){
|
async function executeOp(params){
|
||||||
stopPoll();
|
stopPoll();
|
||||||
// Захватить displayName ДО очистки формы
|
// Захватить displayName ДО очистки формы
|
||||||
const displayName=document.getElementById('param-displayname')?.value||'autotest-1';
|
const displayNameInput=document.getElementById('param-displayname');
|
||||||
|
const displayName=(displayNameInput?.value||'').trim() || displayNameInput?.placeholder || 'autotest';
|
||||||
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