fix
This commit is contained in:
@@ -50,7 +50,7 @@ public class MarketingAnalysisV3Result {
|
||||
private String geography;
|
||||
private int activeCompetitors;
|
||||
private String competitionLevel;
|
||||
private String averageNicheEr;
|
||||
private double averageNicheEr;
|
||||
private double averageRating;
|
||||
private String demandTrend;
|
||||
private List<String> keyFigures;
|
||||
@@ -60,7 +60,6 @@ public class MarketingAnalysisV3Result {
|
||||
public static class MarketLandscape {
|
||||
private Map<String, Integer> activePlayersByPlatform;
|
||||
private Map<String, Integer> cityDistribution;
|
||||
private List<TimeSeriesPoint> demandDynamics;
|
||||
private double nicheReputationLevel;
|
||||
}
|
||||
|
||||
@@ -100,8 +99,8 @@ public class MarketingAnalysisV3Result {
|
||||
private double reviewsContentPercent;
|
||||
private double engagementContentPercent;
|
||||
private double videoShare;
|
||||
private String avgTextLength;
|
||||
private String ctaFrequency;
|
||||
private int avgTextLengthCharacters;
|
||||
private double ctaUsagePercent;
|
||||
}
|
||||
|
||||
@Data
|
||||
@@ -117,22 +116,21 @@ public class MarketingAnalysisV3Result {
|
||||
private int medianReviews;
|
||||
private Map<String, Double> starDistribution;
|
||||
private double highTrustBusinessShare;
|
||||
private String avgOwnerResponseSpeed;
|
||||
private int avgOwnerResponseTimeHours;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class BehavioralPattern {
|
||||
private String promoFrequency;
|
||||
private String bookingFrequency;
|
||||
private String dmRequestFrequency;
|
||||
private String priceVisibility;
|
||||
private String avgCycleDuration;
|
||||
private double promoUsagePercent;
|
||||
private double directBookingPercent;
|
||||
private double priceVisibilityPercent;
|
||||
private int avgCycleDays;
|
||||
private List<String> commonCta;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class SearchDemand {
|
||||
private String avgFrequency;
|
||||
private int avgMonthlySearches;
|
||||
private List<TimeSeriesPoint> seasonality;
|
||||
private List<String> peakPeriods;
|
||||
private List<String> relatedQueries;
|
||||
|
||||
@@ -241,9 +241,9 @@ public class MarketingAnalysisV3Service {
|
||||
|
||||
КРИТИЧЕСКИЕ ПРАВИЛА (ANTI-HALLUCINATION PROTOCOL):
|
||||
1. ТОЛЬКО РЕАЛЬНЫЕ ДАННЫЕ: Вся аналитика строится на переданном SEARCH EVIDENCE.
|
||||
2. РЕАЛЬНЫЕ КОНКУРЕНТЫ: В блоке `3_competitor_map` ОБЯЗАНО быть строго от 5 до 10 РЕАЛЬНЫХ компаний из предоставленных данных. Ровно 3 — ЗАПРЕЩЕНО. Использовать плейсхолдеры — ЗАПРЕЩЕНО.
|
||||
3. ПОЛНАЯ РУСИФИКАЦИЯ: Все значения статусов, уровней и трендов (businessStage, competitionLevel, demandTrend, intensityLabel, status) СТРОГО на русском языке. Запрещено копировать английские слова (JUST_STARTING, HIGH, STABLE, NONE) из DTO. Переводи их по смыслу (Например: 'Запуск', 'Высокая', 'Стабильный', 'Отсутствует').
|
||||
4. ОЦИФРОВКА: В Казахстане все измеряется в KZT. Приложение Kaspi.kz и 2GIS — основа рынка. Учитывай это в анализе.
|
||||
2. РЕАЛЬНЫЕ КОНКУРЕНТЫ: В блоке `3_competitor_map` ОБЯЗАНО быть строго от 5 до 10 РЕАЛЬНЫХ компаний из предоставленных данных. Ровно 3 — ЗАПРЕЩЕНО.
|
||||
3. ПОЛНАЯ РУСИФИКАЦИЯ: Все текстовые значения статусов, уровней и трендов (businessStage, competitionLevel, demandTrend, intensityLabel, status) СТРОГО на русском языке. Запрещено копировать английские слова (JUST_STARTING, HIGH, STABLE, NONE) из DTO. Переводи их по смыслу (Например: 'На старте', 'Высокая', 'Стабильный', 'Отсутствует').
|
||||
4. ОЦИФРОВКА И ТИПЫ ДАННЫХ: Возвращай строго те типы данных, которые указаны в шаблоне. Если указано число (0 или 0.0), возвращай число, а не строку.
|
||||
5. СВЯЗЬ СО СТРАТЕГИЕЙ: Твой анализ — это фундамент для будущего SMM-Scoring Model.
|
||||
6. НИКАКИХ NULL: Заполни абсолютно все поля JSON. Если точной цифры нет, примени метод Ферми и сделай экстраполяцию, характерную для рынка РК.
|
||||
""";
|
||||
@@ -272,36 +272,39 @@ public class MarketingAnalysisV3Service {
|
||||
%s
|
||||
|
||||
ИНСТРУКЦИИ ПО СЕКЦИЯМ (СТРОГО):
|
||||
|
||||
СТРОГО ИСПОЛЬЗУЙ ВСЕ ГОРОДА, КОТОРЫЕ ТЕБЕ ОТПРАВЛЯЮТ, ПРЯМ ВСЕ
|
||||
[0_executive_summary]
|
||||
- activeCompetitors: Реальное количество найденных в поиске игроков (минимум 5).
|
||||
- keyFigures: 5-7 мощных метрик. Обязательно укажи оценку объема рынка/спроса.
|
||||
- Все статусы СТРОГО на русском.
|
||||
- averageNicheEr: Верни число (double, например 0.05).
|
||||
|
||||
[1_market_landscape] и [2_geo_structure]
|
||||
- ОБЯЗАТЕЛЬНО выведи метрики в этих блоках для КАЖДОГО из этих городов: %s. Пропуск любого города — критическая ошибка.
|
||||
- demandDynamics: 12 объектов. Поле "period" СТРОГО на русском (Январь, Февраль...).
|
||||
- ОБЯЗАТЕЛЬНО выведи метрики распределения для КАЖДОГО из этих городов: %s. Пропуск любого города — критическая ошибка.
|
||||
|
||||
[3_competitor_map]
|
||||
- ОБЯЗАНО быть строго от 5 до 10 РЕАЛЬНЫХ компаний. Ровно 3 — ЗАПРЕЩЕНО.
|
||||
- ОБЯЗАНО быть строго от 5 до 10 РЕАЛЬНЫХ компаний.
|
||||
- Рассчитай реалистичный ER (от 0.01 до 0.08).
|
||||
|
||||
[4_content_profile]
|
||||
- Сумма всех ContentPercent должна быть ровно 100.0.
|
||||
- avgTextLengthCharacters: Верни конкретное число символов (int, например 400).
|
||||
- ctaUsagePercent: Верни процент использования призывов (double, например 85.0).
|
||||
|
||||
[5_competition_intensity]
|
||||
- ciiIndex: 0-100. Оцени по плотности выдачи 2GIS и Google в EVIDENCE.
|
||||
[6_reputation_analysis]
|
||||
- avgOwnerResponseTimeHours: Верни среднее время ответа в часах (int, например 2 или 24).
|
||||
|
||||
[7_behavioral_pattern]
|
||||
- Отрази привычки КЗ: Kaspi Red, WhatsApp, чувствительность к скидкам.
|
||||
- Все показатели верни в процентах (double, например 45.0).
|
||||
- avgCycleDays: Верни цикл сделки в днях (int, например 7).
|
||||
|
||||
[8_search_demand]
|
||||
- avgMonthlySearches: Верни число поисковых запросов в месяц (int, например 15000).
|
||||
- seasonality: 12 объектов. Поле "period" СТРОГО на русском (Январь, Февраль...).
|
||||
|
||||
[9_user_positioning]
|
||||
- Если DTO smmStatus == "NONE", радар-чарт по нулям, а статус напиши "Отсутствует".
|
||||
|
||||
[10_structured_conclusions]
|
||||
- Подведи итог: Какой фактор доминирует?
|
||||
- status: СТРОГО на русском (например 'Отсутствует', 'Действующий').
|
||||
|
||||
[11_smm_strategy_rationale]
|
||||
- МИНИМУМ 50 СЛОВ. Обоснуй стратегию на основе реальных данных из блоков 5 и 7. Свяжи барьеры аудитории с выбором SMM.
|
||||
- МИНИМУМ 50 СЛОВ. Обоснуй стратегию на основе реальных данных из блоков 5 и 7.
|
||||
|
||||
ЭТАЛОННЫЙ JSON:
|
||||
%s
|
||||
@@ -315,32 +318,18 @@ public class MarketingAnalysisV3Service {
|
||||
return """
|
||||
{
|
||||
"0_executive_summary": {
|
||||
"businessStage": "СТРОГО НА РУССКОМ (например 'На старте', 'Действующий бизнес')",
|
||||
"geography": "СТРОГО НА РУССКОМ (например 'Несколько городов', 'Один город')",
|
||||
"businessStage": "СТРОГО НА РУССКОМ",
|
||||
"geography": "СТРОГО НА РУССКОМ",
|
||||
"activeCompetitors": 0,
|
||||
"competitionLevel": "СТРОГО НА РУССКОМ (например 'Высокий', 'Средний')",
|
||||
"averageNicheEr": "string",
|
||||
"competitionLevel": "СТРОГО НА РУССКОМ",
|
||||
"averageNicheEr": 0.0,
|
||||
"averageRating": 0.0,
|
||||
"demandTrend": "СТРОГО НА РУССКОМ (например 'Стабильный', 'Растущий')",
|
||||
"demandTrend": "СТРОГО НА РУССКОМ",
|
||||
"keyFigures": ["string", "string", "string"]
|
||||
},
|
||||
"1_market_landscape": {
|
||||
"activePlayersByPlatform": {"Instagram": 0, "TikTok": 0, "GoogleMaps": 0},
|
||||
"cityDistribution": {"Almaty": 0},
|
||||
"demandDynamics": [
|
||||
{"period": "Январь", "value": 0.0},
|
||||
{"period": "Февраль", "value": 0.0},
|
||||
{"period": "Март", "value": 0.0},
|
||||
{"period": "Апрель", "value": 0.0},
|
||||
{"period": "Май", "value": 0.0},
|
||||
{"period": "Июнь", "value": 0.0},
|
||||
{"period": "Июль", "value": 0.0},
|
||||
{"period": "Август", "value": 0.0},
|
||||
{"period": "Сентябрь", "value": 0.0},
|
||||
{"period": "Октябрь", "value": 0.0},
|
||||
{"period": "Ноябрь", "value": 0.0},
|
||||
{"period": "Декабрь", "value": 0.0}
|
||||
],
|
||||
"nicheReputationLevel": 0.0
|
||||
},
|
||||
"2_geo_structure": {
|
||||
@@ -367,12 +356,12 @@ public class MarketingAnalysisV3Service {
|
||||
"reviewsContentPercent": 0.0,
|
||||
"engagementContentPercent": 0.0,
|
||||
"videoShare": 0.0,
|
||||
"avgTextLength": "string",
|
||||
"ctaFrequency": "string"
|
||||
"avgTextLengthCharacters": 0,
|
||||
"ctaUsagePercent": 0.0
|
||||
},
|
||||
"5_competition_intensity": {
|
||||
"ciiIndex": 0,
|
||||
"intensityLabel": "СТРОГО НА РУССКОМ (например 'Высокая', 'Низкая')",
|
||||
"intensityLabel": "СТРОГО НА РУССКОМ",
|
||||
"contributingFactors": ["string"]
|
||||
},
|
||||
"6_reputation_analysis": {
|
||||
@@ -380,18 +369,17 @@ public class MarketingAnalysisV3Service {
|
||||
"medianReviews": 0,
|
||||
"starDistribution": {"5": 0.0, "4": 0.0, "3": 0.0, "2": 0.0, "1": 0.0},
|
||||
"highTrustBusinessShare": 0.0,
|
||||
"avgOwnerResponseSpeed": "string"
|
||||
"avgOwnerResponseTimeHours": 0
|
||||
},
|
||||
"7_behavioral_pattern": {
|
||||
"promoFrequency": "string",
|
||||
"bookingFrequency": "string",
|
||||
"dmRequestFrequency": "string",
|
||||
"priceVisibility": "string",
|
||||
"avgCycleDuration": "СТРОГО числовой диапазон, например '5-7 дней', НИКАКИХ абстрактных слов",
|
||||
"promoUsagePercent": 0.0,
|
||||
"directBookingPercent": 0.0,
|
||||
"priceVisibilityPercent": 0.0,
|
||||
"avgCycleDays": 0,
|
||||
"commonCta": ["string"]
|
||||
},
|
||||
"8_search_demand": {
|
||||
"avgFrequency": "СТРОГО числовой диапазон, например '10000-15000', НИКАКИХ абстрактных слов",
|
||||
"avgMonthlySearches": 0,
|
||||
"seasonality": [
|
||||
{"period": "Январь", "value": 0.0},
|
||||
{"period": "Февраль", "value": 0.0},
|
||||
@@ -417,11 +405,11 @@ public class MarketingAnalysisV3Service {
|
||||
"reputation": 0,
|
||||
"frequency": 0
|
||||
},
|
||||
"status": "СТРОГО НА РУССКОМ (например 'Отсутствует', 'Активный')",
|
||||
"status": "СТРОГО НА РУССКОМ",
|
||||
"gaps": ["string"]
|
||||
},
|
||||
"10_structured_conclusions": ["string", "string", "string"],
|
||||
"11_smm_strategy_rationale": "МИНИМУМ 50 СЛОВ. Обосновать стратегию на основе данных конкуренции и паттернов поведения."
|
||||
"11_smm_strategy_rationale": "string"
|
||||
}
|
||||
""";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user