# Изменения в API: Интеграция v2 анализа ## Обзор изменений Добавлена возможность опционального создания и сохранения v2 анализа вместе с обычным анализом. Все v2 анализы сохраняются в MongoDB и доступны через новые эндпойнты. --- ## 1. POST `/api/marketing/analysis/start` - Обновлен ### Новый query параметр: - **`generateV2`** (boolean, опционально, по умолчанию `false`) - Если `true`, вместе с обычным анализом создается и сохраняется v2 анализ - Оба анализа автоматически связываются между собой ### Изменения в ответе: **Если `generateV2=false` (по умолчанию):** ```json { "success": true, "message": "Анализ запущен успешно", "data": { "analysisId": "string", "status": "processing", "estimatedCompletionTime": "2024-01-01T12:00:00", "message": "Комплексный анализ (...) запущен успешно..." } } ``` **Если `generateV2=true`:** ```json { "success": true, "message": "Анализ запущен успешно", "data": { "analysisId": "string", "status": "processing", "estimatedCompletionTime": "2024-01-01T12:00:00", "message": "Комплексный анализ (...) запущен успешно...", "v2AnalysisId": "string" // ← НОВОЕ ПОЛЕ } } ``` ### Пример использования: ```javascript // Создание обычного анализа POST /api/marketing/analysis/start Body: { ... } // Создание обычного анализа + v2 анализа POST /api/marketing/analysis/start?generateV2=true Body: { ... } ``` --- ## 2. GET `/api/marketing/analysis/my` - Обновлен ### Новое поле в ответе: Каждый элемент в списке теперь содержит опциональное поле `v2AnalysisId`: ```json { "success": true, "data": [ { "analysisId": "string", "businessNiche": "string", "product": "string", // ... другие поля ... "v2AnalysisId": "string" // ← НОВОЕ ПОЛЕ (может быть null) } ] } ``` **Примечание:** Поле `v2AnalysisId` будет присутствовать только если для данного анализа был создан связанный v2 анализ. --- ## 3. GET `/api/marketing/analysis/{id}` - Обновлен ### Новое поле в ответе: Эндпойнт теперь возвращает опциональное поле `v2AnalysisId`: ```json { "success": true, "data": { "analysisId": "string", "status": "string", "createdAt": "2024-01-01T12:00:00", "completedAt": "2024-01-01T12:00:00", "v2AnalysisId": "string", // ← НОВОЕ ПОЛЕ (может быть null) "report": { ... } } } ``` **Примечание:** Поле `v2AnalysisId` будет присутствовать только если для данного анализа был создан связанный v2 анализ. --- ## 4. GET `/api/marketing/analysis/v2/{id}` - Новый эндпойнт ### Описание: Получение сохраненного v2 анализа по ID. ### Параметры: - **Path:** `id` (string) - ID v2 анализа - **Header:** `Authorization` (JWT токен) ### Ответ: **Успешный ответ (200):** ```json { "success": true, "data": { "reportTitle": "string", "sections": { "marketOverview": { ... }, "targetAudience": { ... }, "competitiveEnvironment": { ... }, // ... другие секции ... } } } ``` **Ошибки:** - `401` - Не авторизован - `404` - Анализ не найден - `403` - Нет доступа к этому анализу ### Пример использования: ```javascript GET /api/marketing/analysis/v2/507f1f77bcf86cd799439011 Authorization: Bearer ``` --- ## 5. POST `/api/marketing/analysis/start/v2` - Без изменений Эндпойнт работает как прежде - создает только v2 анализ без связи с обычным анализом. --- ## Рекомендации для фронтенда 1. **При создании анализа:** - Используйте `generateV2=true` если нужен v2 анализ сразу - Сохраняйте `v2AnalysisId` из ответа для последующего доступа 2. **При отображении списка анализов:** - Проверяйте наличие поля `v2AnalysisId` - Если поле присутствует, можно показать кнопку/ссылку для просмотра v2 анализа 3. **При получении конкретного анализа:** - Поле `v2AnalysisId` доступно в ответе `GET /api/marketing/analysis/{id}` - Используйте это поле для навигации к v2 анализу 4. **При получении v2 анализа:** - Используйте `GET /api/marketing/analysis/v2/{id}` для получения полных данных - Обрабатывайте случаи, когда v2 анализ может быть не найден (404) --- ## Обратная совместимость ✅ Все изменения обратно совместимы: - Существующие запросы без `generateV2` работают как прежде - Поле `v2AnalysisId` опционально и не ломает существующий код - Новые эндпойнты не влияют на старую функциональность