This commit is contained in:
arys
2026-01-22 13:17:46 +05:00
parent cf953f39c8
commit 473edafc58
2 changed files with 53 additions and 3 deletions
@@ -16,4 +16,6 @@ public interface MarketingAnalysisV2Repository extends MongoRepository<Marketing
Optional<MarketingAnalysisV2Document> findByIdAndUserId(String id, String userId);
Optional<MarketingAnalysisV2Document> findByAnalysisId(String analysisId);
List<MarketingAnalysisV2Document> findByUserId(String userId);
}
@@ -5491,9 +5491,57 @@ public class MarketingAnalysisService {
public List<MarketingAnalysis> getUserAnalyses(String userId) {
logger.debug("Fetching analyses for userId: {}", userId);
try {
List<MarketingAnalysis> analyses = repository.findByUserIdOrderByCreatedAtDesc(userId);
logger.debug("Found {} analyses for userId: {}", analyses.size(), userId);
return analyses;
// 1. Получаем стандартные анализы (V1 и те, что были созданы через startAnalysis)
List<MarketingAnalysis> v1Analyses = repository.findByUserIdOrderByCreatedAtDesc(userId);
List<MarketingAnalysisV2Document> v2Analyses = v2Repository.findByUserId(userId);
List<MarketingAnalysis> v2AsV1List = v2Analyses.stream()
// Фильтруем те V2, которые уже привязаны к V1 (чтобы не было дубликатов),
// если у вас есть логика связывания через analysisId
.filter(v2 -> v2.getAnalysisId() == null)
.map(v2 -> {
MarketingAnalysis ma = new MarketingAnalysis();
// Маппинг полей из V2 в V1
ma.setId(v2.getId()); // Используем ID документа V2
ma.setUserId(v2.getUserId());
ma.setProduct(v2.getProduct());
ma.setBusinessNiche(v2.getBusinessNiche());
ma.setGoal(v2.getGoal());
ma.setRegion(v2.getRegion());
ma.setTargetAudience(v2.getTargetAudience());
ma.setDetailLevel(v2.getDetailLevel());
ma.setAnalysisType(v2.getAnalysisType());
// V2 анализы, сохраненные через generateAndSaveAnalysisV2, считаются завершенными
ma.setStatus("completed");
// Важно: проставляем ссылку на самого себя или помечаем, что это V2
ma.setV2AnalysisId(v2.getId());
// Время создания (если в V2Document нет createdAt, берем текущее или из ID)
// Лучше добавить поле createdAt в MarketingAnalysisV2Document
if (v2.getCreatedAt() != null) {
ma.setCreatedAt(v2.getCreatedAt());
ma.setCompletedAt(v2.getCreatedAt());
} else {
// Fallback, если времени нет
ma.setCreatedAt(LocalDateTime.now());
}
return ma;
}).toList();
List<MarketingAnalysis> allAnalyses = new ArrayList<>(v1Analyses);
allAnalyses.addAll(v2AsV1List);
allAnalyses.sort(Comparator.comparing(MarketingAnalysis::getCreatedAt, Comparator.nullsLast(Comparator.reverseOrder())));
logger.debug("Found {} total analyses (V1: {}, V2: {}) for userId: {}",
allAnalyses.size(), v1Analyses.size(), v2AsV1List.size(), userId);
return allAnalyses;
} catch (Exception e) {
logger.error("Error fetching analyses for userId {}: {}", userId, e.getMessage(), e);
throw e;