# План проверки генерации инженерных решений на основе ИИ

## Введение
При разработке нового функционала для платформы n2j.ru, основной задачей является создание модуля, способного генерировать инженерные решения с использованием искусственного интеллекта. Данный план проверки обеспечивает структурированную методологию оценки корректности работы модуля.

## Что проверяем и почему это важно?
Проверка включает:
- Корректность генерации решений на основе входных данных;
- Соблюдение требований к структуре выходных данных;
- Обработка крайних случаев;
- Надежность API при реальном использовании.

Цель: убедиться, что система работает корректно и соответствует ожиданиям пользователя в условиях реального использования.

## Таблица проверок

| № | Шаг | Входные данные | Ожидаемый результат |
|---|-----|----------------|----------------------|
| 1 | Генерация решения | Пользовательский запрос: "Создай решение для уменьшения шума в системе охлаждения" | Выходной JSON с полями `solution_id`, `title`, `description` и `implementation_steps` |
| 2 | Валидация данных | JSON-ответ с отсутствующим полем `title` | Ошибка 400 или исключение ValidationError |
| 3 | Обработка крайнего случая | Пустой запрос (пустая строка) | Выходной ответ с сообщением об ошибке, например: `{"error": "Empty input provided"}` |
| 4 | Валидация API | Реальный вызов метода `POST /api/ai-solutions` | Возвращает корректный JSON или код 201 |

## Крайние случаи и их воспроизведение

### Случай 1: Неполные данные
- Входные данные: `{"input": "некорректная строка", "extra_field": null}`
- Как воспроизвести: отправить JSON с отсутствующим `title`

### Случай 2: Пустой запрос
- Входные данные: `""`
- Как воспроизвести: вызвать метод без указания запроса

## Критерии провала
Для каждого тест-кейса следующие критерии считаются провалом:
1. Ответ не соответствует структуре ожидаемого JSON;
2. Система не возвращает ошибку при некорректных входных данных;
3. Повторный вызов API после ошибки не приводит к корректному результату;
4. Крайние случаи не обрабатываются.

## Как прогонять повторно
Повторные тесты проводятся:
1. На базе фиксированного набора входных данных;
2. С использованием автоматизированной системы мониторинга состояния API;
3. По истечении времени между запусками (каждые 5 минут);

## Примеры успешной работы

Пример входных данных:
```json
{
  "input": "Разработка решения для повышения эффективности теплообменника",
  "context": {
    "constraints": [
      "Минимальные размеры",
      "Ограниченная мощность"
    ]
  }
}
```

Пример выходных данных:
```json
{
  "solution_id": "sol-1234567890",
  "title": "Улучшенный теплообменник с уменьшением теплопотерь",
  "description": "Теплообменник с модифицированными каналами для повышения эффективности.",
  "implementation_steps": [
    {
      "step": "Разработка архитектуры",
      "duration": "3 дня"
    },
    {
      "step": "Создание прототипа",
      "duration": "2 недели"
    }
  ]
}
```

## Рекомендации по тестированию
- Проводить регулярную проверку на соответствие схеме данных;
- Использовать фиксированные тестовые наборы для воспроизводимости;
- Обеспечивать мониторинг API в условиях реального использования.