5.6 KiB
5.6 KiB
⚠️ LEGACY — НЕАКТУАЛЬНО. Исторический документ.
Задание: архитектура приложения автотестов Nubes
Контекст
Проект: автотесты операций сервисов облачной платформы Nubes.
Обсуждение с заказчиком: /home/naeel/nubes/autotest/DOCS/dialogues.md
Что есть сейчас
-
Flask-приложение в
site/app.py(задеплоено на Nubes как pythonk8s):- Токен-вход (cookie)
- Показывает организацию пользователя
- Список всех инстансов пользователя
- Таблица сервисов с раскрытием операций (AJAX)
- Дизайн Nubes (CSS custom properties, Lucide-иконки, карточки)
-
API облака (три стенда: dev/test/prod):
GET /services— список сервисовGET /services/{id}— детали + операцииGET /instanceOperations/default/{opId}— параметры операции (valueList, dataDescriptor, isModifiable)GET /instances— инстансы пользователяPOST /instances— создать инстансPOST /instanceOperations— запустить операцию- Аутентификация:
Authorization: Bearer <TOKEN> - Обязательный
User-Agent: Mozilla/5.0
-
YAML-конфигурации сервисов в
/home/naeel/nubes/autotest/STANDS/— полные описания всех сервисов и их параметров (по стендам).
Что требуется (из диалога с заказчиком)
- Веб-интерфейс со списком сервисов-операций и статусами тестирования
- Конфигурирование тестов (НЕ кодировать)
- Возможность выбирать какие операции тестировать для каждого сервиса
- Запуск прямо на платформе
- Не все операции можно делать (например, организацию создавать нельзя)
- Для многих сервисов — удаление с передержкой (создать можно, удалить нельзя)
- Объекты создавать и удалять в специальной тестовой организации
- Пока со своим токеном, потом — токенами по стендам
Вопросы для архитектурного решения
1. Модель данных / конфигурация тестов
Как хранить конфигурацию тестов? Нужна ли БД?
- Какие сущности: TestSuite (набор тестов), TestCase (один тест = сервис + операция), TestRun (прогон)?
- Как конфигурировать какие операции тестировать, а какие нет?
- Как задавать параметры для операций (значения полей)?
- Нужна ли привязка к конкретной организации (для isolate-тестов)?
2. Процесс тестирования (Pipeline)
Какая механика запуска и отслеживания:
- Пользователь выбирает сервисы/операции → нажимает «Запустить»
- Что происходит дальше? Последовательно? Параллельно?
- Как отслеживать статус каждой операции?
- Как обрабатывать долгие операции (удаление с передержкой)?
- Нужен ли откат (удалить созданное после теста)?
3. UI/UX
- Как должен выглядеть экран конфигурации тестов?
- Нужен ли конструктор pipeline (drag-and-drop операций)?
- Как показывать результаты: таблица? дерево? график?
- История прогонов?
4. Техническая архитектура
- Flask-бэкенд остаётся или что-то другое?
- Нужна ли очередь (Redis, RabbitMQ) для запуска тестов?
- Поллинг или WebSocket для статуса?
- Где хранить состояние: SQLite? PostgreSQL? Файлы?
5. Multi-stand
- Один инстанс приложения на все стенды или по одному на стенд?
- Как переключаться между dev/test/prod?
- Разные токены для разных стендов?
Ограничения
- Приложение деплоится как pythonk8s на Nubes (Flask, gunicorn)
- Структура:
site/app.py+ модули вsite/ - Импорты без префикса
site.(папкаsite/— не пакет, конфликт со stdlib) if __name__ == "__main__": app.run(host="0.0.0.0", port=5000)— обязательно- Минимум зависимостей (Flask, gunicorn, requests — уже есть)
- Дизайн Nubes (CSS custom properties, карточки, Lucide)
Что НЕ нужно
- Авторизация пользователей (пока один технический токен)
- Мобильная версия
- Сложная админка
- CI/CD пайплайны