Initial commit: VoIdeaAI - voice-first AI idea assistant

This commit is contained in:
2026-05-13 12:51:42 +03:00
commit 688d043dad
421 changed files with 47915 additions and 0 deletions
+175
View File
@@ -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*