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 — текущее состояние
|
# Архитектура app-autotest — текущее состояние
|
||||||
|
|
||||||
v1.0.87, 27.07.2026
|
v1.0.93, 28.07.2026
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
+43
-2
@@ -1,11 +1,52 @@
|
|||||||
# История разработки app-autotest
|
# История разработки app-autotest
|
||||||
|
|
||||||
## Инфраструктура
|
## Инфраструктура
|
||||||
- **Кластер**: `iot-naeel` (resourceRealm K8s, DEV-стенд)
|
- **Кластер**: `iot-naeel` (resourceRealm K8s)
|
||||||
- **URL**: `https://atest.pythonk8s.dev.nubes.ru`
|
- **URL**: `https://atest.pythonk8s.dev.nubes.ru`
|
||||||
- **Деплой**: git push → managed service pythonk8s → gunicorn
|
- **Деплой**: 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
|
### 1. PostgreSQL connection string
|
||||||
- `os.getenv("DATABASE_URL")` — никакого service discovery
|
- `os.getenv("DATABASE_URL")` — никакого service discovery
|
||||||
|
|||||||
Reference in New Issue
Block a user