Initial commit: VoIdeaAI - voice-first AI idea assistant
This commit is contained in:
@@ -0,0 +1,175 @@
|
||||
# QATesterAgent Mechanism - VoIdea
|
||||
|
||||
**Дата:** 2026-05-10
|
||||
**Статус:** Backlog
|
||||
|
||||
---
|
||||
|
||||
## Обзор
|
||||
|
||||
Механизм функционального тестирования с созданием временных аккаунтов и очисткой.
|
||||
|
||||
---
|
||||
|
||||
## Архитектура
|
||||
|
||||
### QATesterAgent responsibilities
|
||||
|
||||
1. **Создание временных аккаунтов**
|
||||
- Уникальный префикс: `test_*`
|
||||
- Автоматическая генерация данных
|
||||
- Ограничение по времени жизни
|
||||
|
||||
2. **Выполнение тестов**
|
||||
- Функциональные тесты
|
||||
- API тесты
|
||||
- UI тесты (через UITestAgent)
|
||||
|
||||
3. **Очистка**
|
||||
- Удаление временных данных
|
||||
- Проверка целостности
|
||||
- Логирование результатов
|
||||
|
||||
---
|
||||
|
||||
## Процесс работы
|
||||
|
||||
```python
|
||||
async def run_tests(test_config: TestConfig) -> TestResult:
|
||||
# 1. Создание временных аккаунтов
|
||||
temp_users = await create_temp_users(count=test_config.count)
|
||||
|
||||
try:
|
||||
# 2. Выполнение тестов
|
||||
results = []
|
||||
for user in temp_users:
|
||||
result = await execute_test_suite(user, test_config)
|
||||
results.append(result)
|
||||
|
||||
# 3. Сохранение результатов
|
||||
await save_test_results(results)
|
||||
|
||||
# 4. Очистка
|
||||
await cleanup_temp_users(temp_users)
|
||||
|
||||
return aggregate_results(results)
|
||||
|
||||
except Exception as e:
|
||||
# При ошибке - очистка обязательна
|
||||
await cleanup_temp_users(temp_users)
|
||||
raise
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Правила очистки
|
||||
|
||||
### Безопасность
|
||||
|
||||
1. **Никогда не удалять пользователей без `test_` префикса**
|
||||
2. **Использовать soft delete перед hard delete**
|
||||
3. **Логировать все операции очистки**
|
||||
4. **Проверять foreign key constraints**
|
||||
5. **Тестировать очистку в staging**
|
||||
|
||||
### Механизм очистки
|
||||
|
||||
```python
|
||||
async def cleanup_temp_users(users: list[TempUser]):
|
||||
for user in users:
|
||||
# 1. Soft delete
|
||||
await user.soft_delete()
|
||||
|
||||
# 2. Проверка связанных данных
|
||||
related = await check_related_entities(user.id)
|
||||
if related:
|
||||
await cleanup_related(related)
|
||||
|
||||
# 3. Hard delete (через время)
|
||||
await schedule_hard_delete(user.id, delay_minutes=5)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Конфигурация
|
||||
|
||||
```yaml
|
||||
qa_tester:
|
||||
max_temp_users: 10 # Максимум одновременно
|
||||
user_ttl_minutes: 30 # Время жизни
|
||||
auto_cleanup: true # Автоматическая очистка
|
||||
cleanup_delay_minutes: 5 # Задержка перед hard delete
|
||||
|
||||
tests:
|
||||
functional:
|
||||
enabled: true
|
||||
timeout_seconds: 300
|
||||
api:
|
||||
enabled: true
|
||||
timeout_seconds: 60
|
||||
ui:
|
||||
enabled: true # Через UITestAgent
|
||||
timeout_seconds: 120
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Триггеры
|
||||
|
||||
1. **pre-commit** — автоматически перед merge
|
||||
2. **Ежедневно** — scheduled в cron
|
||||
3. **Вручную** — кнопка в админ-панели
|
||||
4. **После failed тестов** — FixAgent запускает повторно
|
||||
|
||||
---
|
||||
|
||||
## Статусы
|
||||
|
||||
Агент может находиться в состояниях:
|
||||
- `idle` — готов к работе
|
||||
- `creating_users` — создаёт temp аккаунты
|
||||
- `running_tests` — выполняет тесты
|
||||
- `cleaning` — очищает данные
|
||||
- `error` — требует внимание
|
||||
- `offline` — отключён
|
||||
|
||||
---
|
||||
|
||||
## Отчёты
|
||||
|
||||
После каждого теста создаётся отчёт:
|
||||
```json
|
||||
{
|
||||
"test_id": "uuid",
|
||||
"timestamp": "2026-05-10T12:00:00Z",
|
||||
"status": "passed|failed",
|
||||
"users_created": 3,
|
||||
"users_cleaned": 3,
|
||||
"tests_run": [
|
||||
{
|
||||
"name": "test_create_idea",
|
||||
"status": "passed",
|
||||
"duration_ms": 150
|
||||
}
|
||||
],
|
||||
"bugs_found": [],
|
||||
"logs": "..."
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## TODO
|
||||
|
||||
- [ ] Реализовать QATesterAgent
|
||||
- [ ] Создать механизм создания temp users
|
||||
- [ ] Реализовать безопасную очистку
|
||||
- [ ] Добавить отчёты в админ-панель
|
||||
- [ ] Настроить триггеры
|
||||
- [ ] Интегрировать с FixAgent
|
||||
- [ ] Написать тесты механизма
|
||||
|
||||
---
|
||||
|
||||
*Создано: 2026-05-10*
|
||||
*Управляется QATesterAgent*
|
||||
Reference in New Issue
Block a user