.
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 анализ без связи с обычным анализом.
|
||||
|
||||
@@ -149,7 +173,12 @@ Authorization: Bearer <token>
|
||||
- Проверяйте наличие поля `v2AnalysisId`
|
||||
- Если поле присутствует, можно показать кнопку/ссылку для просмотра v2 анализа
|
||||
|
||||
3. **При получении v2 анализа:**
|
||||
3. **При получении конкретного анализа:**
|
||||
|
||||
- Поле `v2AnalysisId` доступно в ответе `GET /api/marketing/analysis/{id}`
|
||||
- Используйте это поле для навигации к v2 анализу
|
||||
|
||||
4. **При получении v2 анализа:**
|
||||
- Используйте `GET /api/marketing/analysis/v2/{id}` для получения полных данных
|
||||
- Обрабатывайте случаи, когда v2 анализ может быть не найден (404)
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<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())) {
|
||||
MarketingAnalysisResult.MarketingReport report = buildReportFromData(analysis.getReportData(), analysis);
|
||||
result.setReport(report);
|
||||
|
||||
Reference in New Issue
Block a user