.
This commit is contained in:
@@ -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 <token>
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 4. POST `/api/marketing/analysis/start/v2` - Без изменений
|
## 5. POST `/api/marketing/analysis/start/v2` - Без изменений
|
||||||
|
|
||||||
Эндпойнт работает как прежде - создает только v2 анализ без связи с обычным анализом.
|
Эндпойнт работает как прежде - создает только v2 анализ без связи с обычным анализом.
|
||||||
|
|
||||||
@@ -149,7 +173,12 @@ Authorization: Bearer <token>
|
|||||||
- Проверяйте наличие поля `v2AnalysisId`
|
- Проверяйте наличие поля `v2AnalysisId`
|
||||||
- Если поле присутствует, можно показать кнопку/ссылку для просмотра v2 анализа
|
- Если поле присутствует, можно показать кнопку/ссылку для просмотра v2 анализа
|
||||||
|
|
||||||
3. **При получении v2 анализа:**
|
3. **При получении конкретного анализа:**
|
||||||
|
|
||||||
|
- Поле `v2AnalysisId` доступно в ответе `GET /api/marketing/analysis/{id}`
|
||||||
|
- Используйте это поле для навигации к v2 анализу
|
||||||
|
|
||||||
|
4. **При получении v2 анализа:**
|
||||||
- Используйте `GET /api/marketing/analysis/v2/{id}` для получения полных данных
|
- Используйте `GET /api/marketing/analysis/v2/{id}` для получения полных данных
|
||||||
- Обрабатывайте случаи, когда v2 анализ может быть не найден (404)
|
- Обрабатывайте случаи, когда v2 анализ может быть не найден (404)
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ public class MarketingAnalysisResult {
|
|||||||
private LocalDateTime createdAt;
|
private LocalDateTime createdAt;
|
||||||
private LocalDateTime completedAt;
|
private LocalDateTime completedAt;
|
||||||
private MarketingReport report;
|
private MarketingReport report;
|
||||||
|
private String v2AnalysisId; // ID связанного v2 анализа
|
||||||
|
|
||||||
public MarketingAnalysisResult() {
|
public MarketingAnalysisResult() {
|
||||||
}
|
}
|
||||||
@@ -63,6 +64,14 @@ public class MarketingAnalysisResult {
|
|||||||
this.report = report;
|
this.report = report;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getV2AnalysisId() {
|
||||||
|
return v2AnalysisId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setV2AnalysisId(String v2AnalysisId) {
|
||||||
|
this.v2AnalysisId = v2AnalysisId;
|
||||||
|
}
|
||||||
|
|
||||||
public static class MarketingReport {
|
public static class MarketingReport {
|
||||||
private String summary;
|
private String summary;
|
||||||
private String fullAnalysis;
|
private String fullAnalysis;
|
||||||
|
|||||||
@@ -5165,6 +5165,20 @@ public class MarketingAnalysisService {
|
|||||||
result.setCreatedAt(analysis.getCreatedAt());
|
result.setCreatedAt(analysis.getCreatedAt());
|
||||||
result.setCompletedAt(analysis.getCompletedAt());
|
result.setCompletedAt(analysis.getCompletedAt());
|
||||||
|
|
||||||
|
// Ищем связанный v2 анализ
|
||||||
|
String v2AnalysisId = analysis.getV2AnalysisId();
|
||||||
|
if (v2AnalysisId == null || v2AnalysisId.isEmpty()) {
|
||||||
|
// Если v2AnalysisId не установлен, пытаемся найти по analysisId
|
||||||
|
Optional<MarketingAnalysisV2Document> 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())) {
|
if (analysis.getReportData() != null && "completed".equals(analysis.getStatus())) {
|
||||||
MarketingAnalysisResult.MarketingReport report = buildReportFromData(analysis.getReportData(), analysis);
|
MarketingAnalysisResult.MarketingReport report = buildReportFromData(analysis.getReportData(), analysis);
|
||||||
result.setReport(report);
|
result.setReport(report);
|
||||||
|
|||||||
Reference in New Issue
Block a user