v1.0.88: new ARCHITECTURE.md (current state) + HISTORY updated + legacy docs marked

This commit is contained in:
2026-07-27 21:56:35 +04:00
parent c0f577f030
commit 7180587538
9 changed files with 603 additions and 376 deletions
+46 -18
View File
@@ -1,28 +1,56 @@
# История разработки app-autotest
## v1.0.76 (27.07.2026) — modify показывает актуальные значения параметров инстанса
## v1.0.87 (27.07.2026) — документация: ARCHITECTURE.md переписан, legacy-доки помечены
## v1.0.84 (27.07.2026) — лог-панель скрыта по умолчанию
### Что изменилось
- В `site/routes/api_test.py` `GET /api/params/<op_id>` теперь принимает `?instanceUid=xxx&opName=xxx`:
- Создаёт pending-операцию через `POST /instanceOperations`, читает `GET /instanceOperations/{opUid}` и возвращает **текущие** `paramValue` из `cfsParams` вместо шаблонных `defaultValue`.
- В ответ добавлен `previewOpUid` — UID созданной preview-операции.
- В `site/routes/api_test.py` `POST /api/test` принимает опциональный `previewOpUid`:
- Если передан — переиспользует уже созданную операцию, пропускает `POST /instanceOperations`.
- В `site/templates/index.html` `showParams()` для не-create операций передаёт `?instanceUid=&opName=` в запрос параметров и сохраняет `previewOpUid`.
- В `site/templates/index.html` `executeOp()` передаёт `previewOpUid` в теле запроса.
- Версия поднята до `1.0.76`.
- Лог-панель теперь `display:none`, показывается кнопкой `log` (правый нижний угол).
- При скрытой панели `/api/log` не поллится.
## v1.0.83 (27.07.2026) — HTML-escape + JSON-валидация map-полей
### Что изменилось
- `_esc(s)` — HTML-экранирование значений (`"``&quot;`, `&``&amp;`, `<``&lt;`).
- `validateJson(el, quiet)` — проверка `JSON.parse()` при `onblur` (красная рамка + текст ошибки).
- Batch-проверка всех map-полей перед отправкой — ошибка → запрос не уходит.
### Что это чинит
- Форма modify теперь показывает **реальные текущие значения** параметров инстанса (а не шаблонные `0`, `false`, `""`).
- Раньше: `GET /instanceOperations/default/{opId}``defaultValue` из шаблона.
- Теперь: `POST /instanceOperations``GET /instanceOperations/{opUid}``paramValue` из инстанса.
- Поломку HTML при значениях с кавычками (напр. `{"f":1}`).
- Отправку битого JSON в API.
### Как это работает
1. Пользователь нажимает modify → `showParams(opId, 'modify')`
2. Фронт вызывает `GET /api/params/{opId}?instanceUid={iuid}&opName=modify`
3. Бэкенд создаёт pending-операцию и читает её `cfsParams` с актуальными `paramValue`
4. Форма заполняется реальными значениями, `previewOpUid` сохраняется
5. При submit → `POST /api/test` с `previewOpUid` → переиспользуется та же операция, выставляются новые params → run
## v1.0.82 (27.07.2026) — displayName из API для non-create операций
### Что изменилось
- `_get_instance_display_name(client, uid)``GET /instances/{uid}``displayName`.
- Используется в не-create ветке `POST /api/test` вместо `instance_uid` как fallback.
### Что это чинит
- UUID вместо имени инстанса в финальном статусе.
## v1.0.81 (27.07.2026) — get_params.py: текущие значения из state.params
### Что изменилось
- Новый файл `site/operations/get_params.py` — независимый модуль.
- `get_params_with_current_values(client, op_id, instance_uid)`:
- `GET /instances/{uid}``state.params` (текущие значения)
- `GET /instanceOperations/default/{opId}` → шаблон
- Слияние: `defaultValue = state.params["код"] ?? template.defaultValue`
- Убран `previewOpUid` полностью (и из бэкенда, и из фронтенда).
## v1.0.80 (27.07.2026) — попытка fix через svcOperationId (НЕ СРАБОТАЛО)
## v1.0.79 (27.07.2026) — файловый лог для multi-worker
### Что изменилось
- `_log()` пишет в `/tmp/app-autotest.log` под `fcntl.flock` (вместо in-memory deque).
- `/api/log` читает из файла последние 200 строк.
- Ротация при 512 КБ.
- UI-панель логов (180px, автоскролл, поллинг 2s).
## v1.0.77 (27.07.2026) — debug-логирование в api_params
## v1.0.76 (27.07.2026) — modify: preview-операция для получения paramValue (НЕ СРАБОТАЛО)
# v1.0.74 (27.07.2026) — version bump for push