v1.0.93: HISTORY + ARCHITECTURE updated with v1.0.90-1.0.93 changes
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Архитектура app-autotest — текущее состояние
|
||||
|
||||
v1.0.87, 27.07.2026
|
||||
v1.0.93, 28.07.2026
|
||||
|
||||
---
|
||||
|
||||
|
||||
+43
-2
@@ -1,11 +1,52 @@
|
||||
# История разработки app-autotest
|
||||
|
||||
## Инфраструктура
|
||||
- **Кластер**: `iot-naeel` (resourceRealm K8s, DEV-стенд)
|
||||
- **Кластер**: `iot-naeel` (resourceRealm K8s)
|
||||
- **URL**: `https://atest.pythonk8s.dev.nubes.ru`
|
||||
- **Деплой**: git push → managed service pythonk8s → gunicorn
|
||||
- **PostgreSQL**: `foriot` (509145c3-...), PG 17, `iot-naeel`
|
||||
|
||||
## v1.0.89 (27.07.2026) — Sonnet Round 3: практические вопросы
|
||||
## v1.0.93 (28.07.2026) — отдельные DB_* переменные
|
||||
|
||||
### Что изменилось
|
||||
- `db/pool.py`: `_dsn()` собирает DSN из отдельных переменных: DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD, DB_SSLMODE
|
||||
- `db/init_db.py`: проверка `DB_USER` вместо `DATABASE_URL`
|
||||
- `secrets/pg-foriot.md`: полный jsonEnv для pythonk8s (6 DB-переменных + 2 существующие)
|
||||
- `app.py`: NUBES_API_ENDPOINT по умолчанию TEST
|
||||
|
||||
## v1.0.92 (27.07.2026) — Steps 5-9: динамические сервисы + PostgreSQL история
|
||||
|
||||
### Шаг 5: JS → /static/app.js
|
||||
- JS вынесен из index.html в отдельный файл
|
||||
- `window.APP = {version, stand, hasUserToken}` — передача Jinja2-переменных
|
||||
|
||||
### Шаг 6: Динамические сервисы
|
||||
- `currentSvcId` вместо хардкода `SVC_ID=1`
|
||||
- `initServices()` — загрузка из `/api/services` при старте
|
||||
|
||||
### Шаг 7-8: PostgreSQL
|
||||
- `db/pool.py` — ThreadedConnectionPool (lazy-init, 1-5 соединений)
|
||||
- `db/init_db.py` — таблица `runs` с индексами (идемпотентно)
|
||||
- `db/save_run.py` — запись результатов в БД
|
||||
- `requirements.txt` — добавлен `psycopg2-binary`
|
||||
|
||||
### Шаг 9: /api/history
|
||||
- GET `/api/history` — последние 50 записей (фильтр по client_id + stand)
|
||||
|
||||
## v1.0.90 (27.07.2026) — Steps 1-4: auth.py + TTL + cookie
|
||||
|
||||
### Шаг 1-2: api/auth.py
|
||||
- Новый модуль: `get_token()`, `get_client()`, `get_client_id()`, `get_stand()`, `get_token_info()`, `get_token_masked()`
|
||||
- Убраны дубликаты из main.py и api_test.py
|
||||
|
||||
### Шаг 3: Cookie httponly + samesite
|
||||
- `set_cookie(..., httponly=True, samesite="Strict")`
|
||||
|
||||
### Шаг 4: _op_results TTL
|
||||
- Максимум 500 записей, удаление старше 1 часа
|
||||
- `_ts` timestamp в каждой записи
|
||||
|
||||
## v1.0.89 (27.07.2026) — Sonnet Rounds 1-3 + документирование
|
||||
|
||||
### 1. PostgreSQL connection string
|
||||
- `os.getenv("DATABASE_URL")` — никакого service discovery
|
||||
|
||||
Reference in New Issue
Block a user