.
This commit is contained in:
@@ -290,8 +290,8 @@ public class MarketingAnalysisService {
|
||||
"Твоя задача — на основе входных данных о бизнесе выполнить ГЛУБОКИЙ анализ целевой аудитории с психологическим профилированием сегментов.\n\n");
|
||||
promptBuilder.append(
|
||||
"КРИТИЧЕСКИ ВАЖНО: Проведи глубокое психологическое профилирование. Распиши мотивацию и барьеры подробно. "
|
||||
+ "Не используй общие фразы типа 'хотят качество' или 'боятся потратить деньги'. "
|
||||
+ "Опиши КОНКРЕТНЫЕ психологические механизмы, жизненные ситуации, эмоциональные триггеры и реальные препятствия для каждого сегмента.\n\n");
|
||||
+ "Не используй общие фразы типа 'хотят качество' или 'боятся потратить деньги'. "
|
||||
+ "Опиши КОНКРЕТНЫЕ психологические механизмы, жизненные ситуации, эмоциональные триггеры и реальные препятствия для каждого сегмента.\n\n");
|
||||
promptBuilder.append(
|
||||
"Выдай результат ТОЛЬКО в виде корректного JSON-объекта строго по указанной структуре.\n\n");
|
||||
promptBuilder.append("Не добавляй пояснений, комментариев, текста до или после JSON.\n");
|
||||
@@ -358,13 +358,13 @@ public class MarketingAnalysisService {
|
||||
promptBuilder.append(" \"incomeLevel\": \"Средний\",\n");
|
||||
promptBuilder.append(
|
||||
" \"motivation\": \"Детальное описание мотивации покупки (3-4 предложения). Опиши психологические и практические причины, почему этот сегмент покупает продукт/услугу. "
|
||||
+ "Используй конкретные примеры жизненных ситуаций, эмоциональных потребностей, ценностей. НЕ используй общие фразы.\",\n");
|
||||
+ "Используй конкретные примеры жизненных ситуаций, эмоциональных потребностей, ценностей. НЕ используй общие фразы.\",\n");
|
||||
promptBuilder.append(
|
||||
" \"triggers\": \"Список триггеров (что заставляет действовать). Опиши конкретные ситуации, события, эмоции, которые побуждают к покупке (2-3 предложения). "
|
||||
+ "Например: 'Сезонные события (Новый год, 8 марта), жизненные изменения (рождение ребенка, переезд), эмоциональные состояния (стресс, радость, желание перемен)'.\",\n");
|
||||
+ "Например: 'Сезонные события (Новый год, 8 марта), жизненные изменения (рождение ребенка, переезд), эмоциональные состояния (стресс, радость, желание перемен)'.\",\n");
|
||||
promptBuilder.append(
|
||||
" \"barriers\": \"Что мешает купить (страхи, сомнения, препятствия). Опиши конкретные барьеры: финансовые, психологические, информационные (2-3 предложения). "
|
||||
+ "Например: 'Опасение переплатить, недоверие к онлайн-покупкам, отсутствие времени на изучение предложений, страх выбрать неправильно'.\",\n");
|
||||
+ "Например: 'Опасение переплатить, недоверие к онлайн-покупкам, отсутствие времени на изучение предложений, страх выбрать неправильно'.\",\n");
|
||||
promptBuilder.append(" \"primaryChannels\": [\"Instagram\", \"TikTok\"],\n");
|
||||
promptBuilder.append(" \"secondaryChannels\": [\"Telegram\"]\n");
|
||||
promptBuilder.append(" }\n");
|
||||
@@ -388,16 +388,16 @@ public class MarketingAnalysisService {
|
||||
"7. Для каждого сегмента заполни ВСЕ поля: name, sharePercent, ageRange, incomeLevel, motivation, triggers, barriers, primaryChannels, secondaryChannels.\n");
|
||||
promptBuilder.append(
|
||||
"8. Поля motivation, triggers, barriers должны содержать ДЕТАЛЬНЫЕ описания (не общие фразы, а конкретные инсайты с примерами). "
|
||||
+ "Каждое поле должно быть минимум 2-3 предложения с конкретными деталями.\n");
|
||||
+ "Каждое поле должно быть минимум 2-3 предложения с конкретными деталями.\n");
|
||||
promptBuilder.append(
|
||||
"9. В segmentsChannelMatrix должна быть строка для КАЖДОГО сегмента из массива segments. "
|
||||
+ "Используй значения \"High\", \"Medium\", \"Low\" (с заглавной буквы) для каждого канала: Instagram, Facebook, YouTube, TikTok, Telegram.\n");
|
||||
+ "Используй значения \"High\", \"Medium\", \"Low\" (с заглавной буквы) для каждого канала: Instagram, Facebook, YouTube, TikTok, Telegram.\n");
|
||||
promptBuilder.append("10. Все строки — на русском языке.\n");
|
||||
promptBuilder.append(
|
||||
"11. keyTakeaways должны содержать глубокие инсайты, а не общие фразы. Каждый вывод должен быть конкретным и практичным.\n");
|
||||
promptBuilder.append(
|
||||
"12. segmentsChannelMatrix должна отражать реальное поведение каждого сегмента в социальных сетях. "
|
||||
+ "High = сегмент активно использует канал, Medium = умеренное использование, Low = редкое использование.\n");
|
||||
+ "High = сегмент активно использует канал, Medium = умеренное использование, Low = редкое использование.\n");
|
||||
|
||||
String prompt = promptBuilder.toString();
|
||||
logger.debug("Generating audience analysis with detailed prompt (length: {} chars)", prompt.length());
|
||||
@@ -434,8 +434,8 @@ public class MarketingAnalysisService {
|
||||
"Твоя задача — на основе входных данных о бизнесе выполнить глубокий анализ конкурентов и выдать результат ТОЛЬКО в виде корректного JSON-объекта строго по указанной структуре.\n\n");
|
||||
promptBuilder.append(
|
||||
"КРИТИЧЕСКИ ВАЖНО: Найди или смоделируй реалистичных конкурентов для этой ниши. "
|
||||
+ "Оцени их цифровые метрики и контент-стратегию. Если ты не знаешь реальных конкурентов, "
|
||||
+ "создай реалистичные модели на основе типичных игроков в этой нише в Казахстане.\n\n");
|
||||
+ "Оцени их цифровые метрики и контент-стратегию. Если ты не знаешь реальных конкурентов, "
|
||||
+ "создай реалистичные модели на основе типичных игроков в этой нише в Казахстане.\n\n");
|
||||
promptBuilder.append("Не добавляй пояснений, комментариев, текста до или после JSON.\n");
|
||||
promptBuilder.append("Ответ должен быть валидным JSON.\n\n");
|
||||
promptBuilder.append("---\n\n");
|
||||
@@ -467,15 +467,17 @@ public class MarketingAnalysisService {
|
||||
promptBuilder.append(" \"competitorsDetails\": [ // Детали по 3-4 конкурентам\n");
|
||||
promptBuilder.append(" {\n");
|
||||
promptBuilder.append(" \"name\": \"Конкурент А\",\n");
|
||||
promptBuilder.append(" \"digitalMetrics\": { \"reach\": число, \"followers\": число, \"activityIndex\": число }, // activityIndex от 0 до 100\n");
|
||||
promptBuilder.append(
|
||||
" \"digitalMetrics\": { \"reach\": число, \"followers\": число, \"activityIndex\": число }, // activityIndex от 0 до 100\n");
|
||||
promptBuilder.append(" \"channelsHeatmap\": { // Оценка (0-100) качества ведения канала\n");
|
||||
promptBuilder.append(" \"Instagram\": число, \"TikTok\": число, \"Telegram\": число, \"YouTube\": число, \"Facebook\": число\n");
|
||||
promptBuilder.append(
|
||||
" \"Instagram\": число, \"TikTok\": число, \"Telegram\": число, \"YouTube\": число, \"Facebook\": число\n");
|
||||
promptBuilder.append(" },\n");
|
||||
promptBuilder.append(" \"priceStrategy\": \"Премиум/Средняя/Эконом\",\n");
|
||||
promptBuilder.append(
|
||||
" \"contentStrategy\": \"Детальное описание контент-стратегии конкурента (3-4 предложения). "
|
||||
+ "Опиши типы контента, стиль подачи, частоту публикаций, основные темы, тон коммуникации. "
|
||||
+ "Проанализируй, что работает у конкурента и почему.\",\n");
|
||||
+ "Опиши типы контента, стиль подачи, частоту публикаций, основные темы, тон коммуникации. "
|
||||
+ "Проанализируй, что работает у конкурента и почему.\",\n");
|
||||
promptBuilder.append(" \"swot\": {\n");
|
||||
promptBuilder.append(
|
||||
" \"strengths\": [\"Конкретная сильная сторона 1\", \"Конкретная сильная сторона 2\", \"Конкретная сильная сторона 3\"],\n");
|
||||
@@ -556,7 +558,7 @@ public class MarketingAnalysisService {
|
||||
"Твоя задача — на основе входных данных о бизнесе выполнить глубокий анализ сезонности и рынка и выдать результат ТОЛЬКО в виде корректного JSON-объекта строго по указанной структуре.\n\n");
|
||||
promptBuilder.append(
|
||||
"КРИТИЧЕСКИ ВАЖНО: Предоставь детальный анализ сезонных колебаний спроса с конкретными объяснениями. "
|
||||
+ "Опиши рыночные тренды, возможности и угрозы с конкретными инсайтами, а не общими фразами.\n\n");
|
||||
+ "Опиши рыночные тренды, возможности и угрозы с конкретными инсайтами, а не общими фразами.\n\n");
|
||||
promptBuilder.append("Не добавляй пояснений, комментариев, текста до или после JSON.\n");
|
||||
promptBuilder.append("Ответ должен быть валидным JSON.\n\n");
|
||||
promptBuilder.append("---\n\n");
|
||||
@@ -580,13 +582,13 @@ public class MarketingAnalysisService {
|
||||
promptBuilder.append(" \"demandIndex\": [12 чисел от 0 до 100], // Индекс спроса по месяцам\n");
|
||||
promptBuilder.append(
|
||||
" \"description\": \"Детальное описание сезонности (3-4 предложения). Опиши конкретные причины сезонных колебаний: "
|
||||
+ "праздники, климатические условия, культурные особенности, жизненные циклы целевой аудитории. "
|
||||
+ "Укажи, какие месяцы являются пиковыми и почему, какие - низкими и что это означает для бизнеса.\"\n");
|
||||
+ "праздники, климатические условия, культурные особенности, жизненные циклы целевой аудитории. "
|
||||
+ "Укажи, какие месяцы являются пиковыми и почему, какие - низкими и что это означает для бизнеса.\"\n");
|
||||
promptBuilder.append(" },\n");
|
||||
promptBuilder.append(" \"market\": {\n");
|
||||
promptBuilder.append(
|
||||
" \"marketSize\": \"Оценка объема рынка (например, 'Оценка объема рынка составляет X млн тенге в год' или 'Средний рынок с потенциалом роста'). "
|
||||
+ "Дай конкретную оценку или описание масштаба рынка в Казахстане для данной ниши.\",\n");
|
||||
+ "Дай конкретную оценку или описание масштаба рынка в Казахстане для данной ниши.\",\n");
|
||||
promptBuilder.append(
|
||||
" \"growthRate\": \"Темп роста рынка (например, '+15% в год' или 'Стабильный рост 10-12% ежегодно')\",\n");
|
||||
promptBuilder.append(
|
||||
@@ -600,7 +602,8 @@ public class MarketingAnalysisService {
|
||||
promptBuilder.append("КРИТИЧЕСКИ ВАЖНЫЕ ТРЕБОВАНИЯ:\n\n");
|
||||
promptBuilder.append("1. Верни ТОЛЬКО JSON, без пояснений, комментариев, markdown-разметки.\n");
|
||||
promptBuilder.append("2. JSON должен быть синтаксически корректным и валидным.\n");
|
||||
promptBuilder.append("3. Значения \"demandIndex\" должны быть от 0 до 100 (12 чисел для каждого месяца).\n");
|
||||
promptBuilder
|
||||
.append("3. Значения \"demandIndex\" должны быть от 0 до 100 (12 чисел для каждого месяца).\n");
|
||||
promptBuilder.append(
|
||||
"4. Поле \"description\" в seasonality должно содержать ДЕТАЛЬНОЕ описание (3-4 предложения) с конкретными причинами сезонных колебаний.\n");
|
||||
promptBuilder.append(
|
||||
@@ -618,7 +621,8 @@ public class MarketingAnalysisService {
|
||||
"11. НЕ включай поле \"estimated\" ни в seasonality, ни в market.\n");
|
||||
|
||||
String prompt = promptBuilder.toString();
|
||||
logger.debug("Generating seasonality and market analysis with detailed prompt (length: {} chars)", prompt.length());
|
||||
logger.debug("Generating seasonality and market analysis with detailed prompt (length: {} chars)",
|
||||
prompt.length());
|
||||
String jsonResponse = openAIAnalyticsService.generateWithInstruction(context, prompt, "ru");
|
||||
|
||||
if (jsonResponse == null || jsonResponse.trim().isEmpty()) {
|
||||
|
||||
Reference in New Issue
Block a user