diff --git a/DOCS/HISTORY.md b/DOCS/HISTORY.md index ed2fa80..1626b44 100644 --- a/DOCS/HISTORY.md +++ b/DOCS/HISTORY.md @@ -1,5 +1,31 @@ # История разработки app-autotest +## v1.0.89 (27.07.2026) — Sonnet Round 3: практические вопросы + +### 1. PostgreSQL connection string +- `os.getenv("DATABASE_URL")` — никакого service discovery +- Инжектится через `jsonEnv` параметры pythonk8s-сервиса (как NUBES_API_TOKEN) +- Порядок: создать PostgreSQL-инстанс в Nubes → взять host/port/user/pass из state_out → собрать DSN → jsonEnv → деплой + +### 2. Миграции при деплое +- `init_db()` на уровне модуля в app.py, до register_blueprint +- `CREATE TABLE/INDEX IF NOT EXISTS` — идемпотентно, каждый воркер выполнит независимо +- PostgreSQL обрабатывает конкурентный DDL корректно +- Никаких ручных шагов при деплое +- `DROP COLUMN` — не идемпотентно, осторожно + +### 3. Multi-service UI (map-fixed) +- `dataDescriptor` уже в API-ответе — инфраструктура готова +- `map` (свободный): textarea + JSON-валидация (как сейчас) +- `map-fixed`: таблица подполей с отдельными input/select из dataDescriptor +- Бэкенд не меняется — paramValue всегда строка +- Изменения только во фронте: showParams() + сбор подполей в JSON перед отправкой + +### 4. Тесты +- pytest для чистых функций без моков: `_find_uid`, `_uid_from_location`, `_with_prefix`, слияние params, tracker +- Структура: `tests/conftest.py`, `test_utils.py`, `test_tracker.py`, `test_get_params.py` +- Роуты с Flask test client + mock HttpClient — отложить (высокая стоимость мокирования) + ## v1.0.89 (27.07.2026) — Sonnet Round 2: PostgreSQL, auth.py, детальный план ### Результаты анализа