From acc28351c5bf24aa1a73c5dfd116ffad6a4c090b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Thu, 30 Jul 2026 13:36:35 +0400 Subject: [PATCH] docs: ARCHITECTURE-FULL.md + README link --- DOCS/ARCHITECTURE-FULL.md | 95 +++++++++++++++++++++++++++++++++++++++ README.md | 4 ++ 2 files changed, 99 insertions(+) create mode 100644 DOCS/ARCHITECTURE-FULL.md diff --git a/DOCS/ARCHITECTURE-FULL.md b/DOCS/ARCHITECTURE-FULL.md new file mode 100644 index 0000000..5b2b9d2 --- /dev/null +++ b/DOCS/ARCHITECTURE-FULL.md @@ -0,0 +1,95 @@ +# Архитектура Autotest — полный обзор + +v1.1.44, 2026-07-30 + +## Назначение + +Платформа для тестирования Nubes Cloud API — ручное и автоматизированное создание/изменение/удаление инстансов любых сервисов (PostgreSQL, Redis, S3, Kafka, ~35 сервисов). + +## Развёртывание + +- **Платформа:** Nubes pythonk8s (managed Flask + gunicorn) +- **URL:** `https://atest.pythonk8s.dev.nubes.ru/` +- **БД:** PostgreSQL 17 (Zalando Operator), autotest +- **Репозиторий:** `/home/naeel/nubes/autotest/app-autotest` +- **Родительский репо:** `/home/naeel/nubes/autotest` + +## Ключевые файлы + +### Бэкенд (Flask) +| Файл | Назначение | +|------|-----------| +| `site/app.py` | Точка входа, регистрация blueprint'ов, VERSION | +| `site/routes/api_test.py` | Основной: POST /api/test, GET /api/params, поллинг, _finish_op | +| `site/routes/main.py` | GET /, /api/operations/{svc_id} | +| `site/routes/api.py` | LEGACY эндпоинты (будет удалён) | +| `site/api/http_client.py` | HTTP-клиент Nubes API (GET/POST/raw_delete) | +| `site/api/auth.py` | Токены, get_client, get_stand | +| `site/operations/get_params.py` | get_params_with_current_values, _normalize_value_list, state.out | +| `site/operations/get_instances.py` | GET /instances с пагинацией | +| `site/operations/get_services.py` | GET /services, /services/{id} | +| `site/operations/service_list.py` | Загрузка services_{stand}.txt | +| `site/operations/tracker.py` | fcntl.flock файловый трекер инстансов | +| `site/db/pool.py` | psycopg2 ThreadedConnectionPool (lazy-init) | +| `site/db/init_db.py` | CREATE TABLE runs + миграции | +| `site/db/save_run.py` | INSERT в runs (16 колонок) | +| `site/runner.py` | LEGACY runner (будет удалён) | +| `site/config.yaml` | LEGACY конфиг (будет удалён) | + +### Фронтенд (vanilla JS) +| Файл | Назначение | +|------|-----------| +| `site/templates/index.html` | Jinja2 шаблон, CSS, window.APP | +| `site/static/app.js` | Весь фронтенд (460 строк) | +| `site/static/style.css` | Доп. стили | + +### Конфиги +| Файл | Назначение | +|------|-----------| +| `site/config/services_test.txt` | Список сервисов TEST (комментировать # для исключения) | +| `site/config/services_dev.txt` | Список сервисов DEV | +| `requirements.txt` | Python-зависимости | + +## CREATE flow (9 шагов Nubes API) + +1. POST /instances +2. POST /instanceOperations {operation:"create"} +3. GET /instanceOperations/{opUid}?fields=cfsParams +4. resolveRefSvcParamValues +5. POST /instanceOperationCfsParams (пользовательские) +6. POST /instanceOperationCfsParams (required+default) +7. GET /validate-cfs +8. POST /run +9. Поллинг dtFinish + +## Фронтенд — глобальное состояние + +``` +svcInstances — кеш инстансов +selectedInst — UID выбранного +selectedOp — {opId, opName, svcId} +pollTimer — setInterval поллинга +currentSvcId — ID сервиса +currentSvcName — имя сервиса +currentSvcShort— краткое имя (redis, postgres) +busy — блокировка параллельных операций +``` + +## План развития (MVP сценариев) + +Файлы: `/home/naeel/nubes/autotest/TASKS/3007.md` (требования), `/home/naeel/nubes/autotest/DOCS/sol-answers.md` (решения) + +1. Багфиксы аудита +2. Удалить legacy (api.py, runner.py, config.yaml) +3. Сервисные токены для сценариев +4. YAML-сценарии + валидатор +5. scenario_runs таблица + runner +6. UI: сворачиваемая секция «Сценарии» + +## Документация + +- `/home/naeel/nubes/autotest/DOCS/terraform-operations-full-logic.md` — эталонный Nubes API flow +- `/home/naeel/nubes/autotest/DOCS/sol-answers.md` — ответы на 14 вопросов по архитектуре +- `/home/naeel/nubes/autotest/DOCS/questions-to-sol.md` — 14 вопросов к Sol +- `/home/naeel/nubes/autotest/app-autotest/DOCS/sonnet-final-audit.md` — финальный аудит Соннета +- `/home/naeel/nubes/autotest/HISTORY/2026-07-29-session.md` — хронология правок diff --git a/README.md b/README.md index 22f5f44..d567d7b 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,10 @@ Flask-приложение для автотестов сервисов Nubes. См. основной репо: [DOCS/](../DOCS/) — [стадии операций](../DOCS/api-operation-stages.md), [поток CREATE](../DOCS/api-create-flow.md), [доступ к API](../DOCS/api-access.md). +## Архитектура + +**Полный обзор:** [DOCS/ARCHITECTURE-FULL.md](DOCS/ARCHITECTURE-FULL.md) — все файлы, CREATE flow, глобальное состояние, план развития. + ## Сервис `https://autotest.pythonk8s.dev.nubes.ru/` (test)