## Спецификация: система инженерных решений на основе ИИ

### 1. Цель и пользователи

**Цель**: Создать систему, способную генерировать инженерные решения с использованием ИИ для задач, связанных с проектированием, оптимизацией и анализом.

**Пользователи**:
- Инженеры (проектные специалисты)
- Технические директора
- Аналитики данных

### 2. Границы системы

**Входящие компоненты**:
- Модель ИИ с предварительным обучением на наборах инженерных задач (например, CAD-модели, технические документы)
- Данные о требовании или проблеме от пользователя

**Не входящие компоненты**:
- Поддержка реального физического производства/внедрения решений (пока не реализовано)
- Ручной контроль и модификация решений на уровне инженера после генерации (если не будет разработан механизм взаимодействия)

### 3. Сценарии работы по шагам

#### Сценарий 1: Генерация решения
**Шаги**:
1. Пользователь передает текстовое описание проблемы или задачи (например, «Создать оптимизированный проект водяного охлаждения для сервера»)
2. Система анализирует запрос и формирует промпт
3. ИИ генерирует набор инженерных решений в виде текстового описания и технических чертежей (в формате JSON или PDF)
4. Результат передается пользователю

#### Сценарий 2: Адаптация решения
**Шаги**:
1. Пользователь выбирает одно из решений
2. Пользователь указывает ограничения (например, максимальная стоимость или размер)
3. Система пересчитывает решение с учетом новых параметров и выводит обновленный вариант
4. Результат возвращается пользователю

#### Сценарий 3: Оценка решения
**Шаги**:
1. Пользователь запрашивает оценку одного или нескольких решений по заданным метрикам (например, эффективность, стоимость)
2. Система анализирует каждый вариант на основе встроенных правил и выдает рейтинг и рекомендации
3. Результат передается пользователю

### 4. Входы и выходы с типами данных
| Вход | Тип | Описание |
|------|-----|----------|
| user_query | string (max length: 1000 символов) | Описание задачи/проблемы пользователя |
| constraints | object with fields {max_cost, max_size} | Дополнительные ограничения по параметрам решения |
| solution_id | uuid | Уникальный идентификатор решения для пересчета или оценки |

| Выход | Тип | Описание |
|------|-----|----------|
| generated_solution | object with fields {id, description, diagrams} | Сгенерированное решение с ID |
| revised_solution | object with fields {id, updated_description, updated_diagrams} | Обновленное решение после адаптации |
| evaluation_result | object with fields {solution_id, rating, metrics} | Оценка решения по метрикам |

### 5. Нефункциональные требования
- **Объём**: Система должна обрабатывать до 1000 запросов в день с использованием ресурсов на уровне облачной платформы (AWS / GCP)
- **Скорость**: Время генерации одного решения — не более 30 секунд
- **Права доступа**:
   - Анонимный пользователь: чтение, запись только в ограниченных случаях (например, запросы для тестов)
   - Авторизованный пользователь: полное управление своими запросами и решениями

### 6. Критерии готовности
- Генерация решения прошла успешно с заданной точностью
- Пользователь может получить и сохранить результат в формате PDF или JSON
- Система поддерживает пересчет решения по ограничениям
- Доступна оценка решений по метрикам (оценочные функции реализованы)

## Примеры использования

1. **Инженерный анализ**: «Нужно проектировать систему автоматического управления теплом для серверной»
   - Вход: user_query = "Проект системы управления теплом для серверной"
   - Выход: generated_solution с id = uuid4() и техническими описаниями

2. **Пересчет решения**: «Ограничение по стоимости — 150 000 руб»
   - Вход: solution_id = "abc-123-def", constraints = {max_cost: 150000}
   - Выход: revised_solution с обновленным решением