fix
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user