194 lines
5.9 KiB
Markdown
194 lines
5.9 KiB
Markdown
# Изменения в 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 <token>
|
|
```
|
|
|
|
---
|
|
|
|
## 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` опционально и не ломает существующий код
|
|
- Новые эндпойнты не влияют на старую функциональность
|