diff --git a/FRONTEND_API_CHANGES_V2.md b/FRONTEND_API_CHANGES_V2.md index 20db2f5..81ecff7 100644 --- a/FRONTEND_API_CHANGES_V2.md +++ b/FRONTEND_API_CHANGES_V2.md @@ -86,7 +86,31 @@ Body: { ... } --- -## 3. GET `/api/marketing/analysis/v2/{id}` - Новый эндпойнт +## 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}` - Новый эндпойнт ### Описание: @@ -131,7 +155,7 @@ Authorization: Bearer --- -## 4. POST `/api/marketing/analysis/start/v2` - Без изменений +## 5. POST `/api/marketing/analysis/start/v2` - Без изменений Эндпойнт работает как прежде - создает только v2 анализ без связи с обычным анализом. @@ -149,7 +173,12 @@ Authorization: Bearer - Проверяйте наличие поля `v2AnalysisId` - Если поле присутствует, можно показать кнопку/ссылку для просмотра v2 анализа -3. **При получении v2 анализа:** +3. **При получении конкретного анализа:** + + - Поле `v2AnalysisId` доступно в ответе `GET /api/marketing/analysis/{id}` + - Используйте это поле для навигации к v2 анализу + +4. **При получении v2 анализа:** - Используйте `GET /api/marketing/analysis/v2/{id}` для получения полных данных - Обрабатывайте случаи, когда v2 анализ может быть не найден (404) diff --git a/src/main/java/kz/konturai/parser/dto/MarketingAnalysisResult.java b/src/main/java/kz/konturai/parser/dto/MarketingAnalysisResult.java index 33a03b2..1d0597a 100644 --- a/src/main/java/kz/konturai/parser/dto/MarketingAnalysisResult.java +++ b/src/main/java/kz/konturai/parser/dto/MarketingAnalysisResult.java @@ -10,6 +10,7 @@ public class MarketingAnalysisResult { private LocalDateTime createdAt; private LocalDateTime completedAt; private MarketingReport report; + private String v2AnalysisId; // ID связанного v2 анализа public MarketingAnalysisResult() { } @@ -63,6 +64,14 @@ public class MarketingAnalysisResult { this.report = report; } + public String getV2AnalysisId() { + return v2AnalysisId; + } + + public void setV2AnalysisId(String v2AnalysisId) { + this.v2AnalysisId = v2AnalysisId; + } + public static class MarketingReport { private String summary; private String fullAnalysis; diff --git a/src/main/java/kz/konturai/parser/service/MarketingAnalysisService.java b/src/main/java/kz/konturai/parser/service/MarketingAnalysisService.java index c366522..23cda67 100644 --- a/src/main/java/kz/konturai/parser/service/MarketingAnalysisService.java +++ b/src/main/java/kz/konturai/parser/service/MarketingAnalysisService.java @@ -5165,6 +5165,20 @@ public class MarketingAnalysisService { result.setCreatedAt(analysis.getCreatedAt()); result.setCompletedAt(analysis.getCompletedAt()); + // Ищем связанный v2 анализ + String v2AnalysisId = analysis.getV2AnalysisId(); + if (v2AnalysisId == null || v2AnalysisId.isEmpty()) { + // Если v2AnalysisId не установлен, пытаемся найти по analysisId + Optional optV2 = v2Repository.findByAnalysisId(analysis.getId()); + if (optV2.isPresent()) { + v2AnalysisId = optV2.get().getId(); + // Обновляем анализ для сохранения связи + analysis.setV2AnalysisId(v2AnalysisId); + repository.save(analysis); + } + } + result.setV2AnalysisId(v2AnalysisId); + if (analysis.getReportData() != null && "completed".equals(analysis.getStatus())) { MarketingAnalysisResult.MarketingReport report = buildReportFromData(analysis.getReportData(), analysis); result.setReport(report);