From 2f834770a7ac308d851c0fbf1e6762114cae0507 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 20 Dec 2025 00:17:53 +0500 Subject: [PATCH] . --- .../service/MarketingAnalysisService.java | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/src/main/java/kz/konturai/parser/service/MarketingAnalysisService.java b/src/main/java/kz/konturai/parser/service/MarketingAnalysisService.java index a436694..97862d2 100644 --- a/src/main/java/kz/konturai/parser/service/MarketingAnalysisService.java +++ b/src/main/java/kz/konturai/parser/service/MarketingAnalysisService.java @@ -1599,21 +1599,47 @@ public class MarketingAnalysisService { } break; case "swot": + // Новая структура: strategyAnalysis.globalSwot if (fullJson.containsKey("swot")) { context.put("swot", fullJson.get("swot")); + } else if (fullJson.containsKey("strategyAnalysis")) { + @SuppressWarnings("unchecked") + Map strategyAnalysis = (Map) fullJson.get("strategyAnalysis"); + if (strategyAnalysis != null && strategyAnalysis.get("globalSwot") != null) { + context.put("swot", strategyAnalysis.get("globalSwot")); + } } break; case "channels": + // Новая структура: strategyAnalysis.channelsPotential (List) if (fullJson.containsKey("channels")) { context.put("channels", fullJson.get("channels")); } if (fullJson.containsKey("channelsPotential")) { context.put("channelsPotential", fullJson.get("channelsPotential")); + } else if (fullJson.containsKey("strategyAnalysis")) { + @SuppressWarnings("unchecked") + Map strategyAnalysis = (Map) fullJson.get("strategyAnalysis"); + if (strategyAnalysis != null && strategyAnalysis.get("channelsPotential") != null) { + Object channelsPotential = strategyAnalysis.get("channelsPotential"); + context.put("channelsPotential", channelsPotential); + // Alias: чтобы текущие промпты (про channels) работали даже без старого ключа + if (!context.containsKey("channels")) { + context.put("channels", channelsPotential); + } + } } break; case "funnel": + // Новая структура: strategyAnalysis.funnel (Map со stages) if (fullJson.containsKey("funnel")) { context.put("funnel", fullJson.get("funnel")); + } else if (fullJson.containsKey("strategyAnalysis")) { + @SuppressWarnings("unchecked") + Map strategyAnalysis = (Map) fullJson.get("strategyAnalysis"); + if (strategyAnalysis != null && strategyAnalysis.get("funnel") != null) { + context.put("funnel", strategyAnalysis.get("funnel")); + } } if (fullJson.containsKey("conversionFunnel")) { context.put("conversionFunnel", fullJson.get("conversionFunnel")); @@ -4057,8 +4083,9 @@ public class MarketingAnalysisService { // Паттерн для поиска следующего раздела: может быть markdown заголовок или // римская цифра - java.util.regex.Pattern nextSectionPattern = java.util.regex.Pattern - .compile("^(##+\\s*[IVX]+\\.|\\s*[IVX]+\\.\\s+[А-Я])", java.util.regex.Pattern.MULTILINE); + java.util.regex.Pattern nextSectionPattern = java.util.regex.Pattern.compile( + "^(##+\\s*[IVX]+\\.|\\s*[IVX]+\\.\\s+[A-ZА-Я])", + java.util.regex.Pattern.MULTILINE); java.util.regex.Matcher nextSectionMatcher = nextSectionPattern.matcher(remainingText); String blocks = blocksToInsert.toString(); @@ -4070,7 +4097,7 @@ public class MarketingAnalysisService { } else { // Ищем следующий раздел по римской цифре java.util.regex.Pattern romanNumeralPattern = java.util.regex.Pattern - .compile("\\n\\s*[IVX]+\\.\\s+[А-Я]", java.util.regex.Pattern.MULTILINE); + .compile("\\n\\s*[IVX]+\\.\\s+[A-ZА-Я]", java.util.regex.Pattern.MULTILINE); java.util.regex.Matcher romanMatcher = romanNumeralPattern.matcher(remainingText); if (romanMatcher.find()) {