This commit is contained in:
arys
2026-01-19 16:14:29 +05:00
parent 60e475b9ce
commit cf953f39c8
@@ -2,7 +2,9 @@ package kz.konturai.parser.dto;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.List;
@@ -10,6 +12,8 @@ import java.util.Map;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class MarketingAnalysisResponseV2 {
@@ -19,6 +23,8 @@ public class MarketingAnalysisResponseV2 {
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class Sections {
private MarketOverview marketOverview;
@@ -30,29 +36,25 @@ public class MarketingAnalysisResponseV2 {
private MarketingEconomics marketingEconomics;
private Bottlenecks bottlenecks;
private Recommendations recommendations;
public Sections() {
}
}
@Setter
@Getter
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
@AllArgsConstructor
@NoArgsConstructor
public static class MarketOverview {
private String title;
private MarketOverviewMetrics metrics;
private MonthlyOnlineIndex monthlyOnlineIndex;
private Map<String, Integer> geography;
private String conclusion;
public MarketOverview() {
}
}
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class MarketOverviewMetrics {
private String onlineDemandIndex;
@@ -60,14 +62,12 @@ public class MarketingAnalysisResponseV2 {
private String demandGrowthRateYoy;
private String seasonalityCoefficientSpring;
private String seasonalityRange;
public MarketOverviewMetrics() {
}
}
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class MonthlyOnlineIndex {
private Double january;
@@ -82,14 +82,12 @@ public class MarketingAnalysisResponseV2 {
private Double october;
private Double november;
private Double december;
public MonthlyOnlineIndex() {
}
}
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class TargetAudience {
private String title;
@@ -99,44 +97,33 @@ public class MarketingAnalysisResponseV2 {
private List<AudienceSegment> segments;
private Map<String, String> ageStructure;
private String conclusion;
public TargetAudience() {
}
}
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class TargetAudienceMetrics {
private String totalAudienceSize;
private String leadingSegmentShare;
private String aboveAverageIncomeShare;
public TargetAudienceMetrics() {
}
}
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class AudienceSegment {
private String name;
private String share;
public AudienceSegment() {
}
public AudienceSegment(String name, String share) {
this.name = name;
this.share = share;
}
}
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class CompetitiveEnvironment {
private String title;
@@ -144,14 +131,12 @@ public class MarketingAnalysisResponseV2 {
private Map<String, Integer> digitalVisibilityBenchmarks;
private Map<String, List<String>> competitorStrengths;
private String conclusion;
public CompetitiveEnvironment() {
}
}
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class CompetitiveEnvironmentMetrics {
private String marketShareTraffic;
@@ -159,13 +144,12 @@ public class MarketingAnalysisResponseV2 {
private String competitorShareInContextAds;
private String benchmarkAstana;
public CompetitiveEnvironmentMetrics() {
}
}
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class DemandAndBehavior {
private String title;
@@ -174,27 +158,23 @@ public class MarketingAnalysisResponseV2 {
private Map<String, String> decisionFactors;
private Map<String, String> reasonsForRefusal;
private String conclusion;
public DemandAndBehavior() {
}
}
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class DemandAndBehaviorMetrics {
private String searchVolumeGrowth;
private String interactionsBeforePurchase;
private String repeatRefusalProbability;
public DemandAndBehaviorMetrics() {
}
}
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class CustomerJourney {
private String title;
@@ -202,14 +182,12 @@ public class MarketingAnalysisResponseV2 {
private ConversionRates conversionRates;
private FunnelBottlenecks funnelBottlenecks;
private String conclusion;
public CustomerJourney() {
}
}
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class FunnelMetrics {
private String adTraffic;
@@ -217,39 +195,33 @@ public class MarketingAnalysisResponseV2 {
private Integer leads;
private Integer bookings;
private Integer payments;
public FunnelMetrics() {
}
}
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class ConversionRates {
private String leadToBooking;
private String bookingToPayment;
private String leadToPaymentTotal;
public ConversionRates() {
}
}
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class FunnelBottlenecks {
private String leadToBooking;
private String bookingToPayment;
public FunnelBottlenecks() {
}
}
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class AcquisitionChannels {
private String title;
@@ -257,44 +229,33 @@ public class MarketingAnalysisResponseV2 {
private Map<String, String> channelShares;
private Map<String, ChannelEfficiency> channelEfficiency;
private String conclusion;
public AcquisitionChannels() {
}
}
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class AcquisitionChannelsMetrics {
private String searchTrafficShare;
private String averageLeadCost;
private String growthPotential;
public AcquisitionChannelsMetrics() {
}
}
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class ChannelEfficiency {
private String cost;
private String status;
public ChannelEfficiency() {
}
public ChannelEfficiency(String cost, String status) {
this.cost = cost;
this.status = status;
}
}
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class MarketingEconomics {
private String title;
@@ -305,6 +266,8 @@ public class MarketingAnalysisResponseV2 {
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class MarketingEconomicsMetrics {
private String customerAcquisitionCostCac;
@@ -314,6 +277,8 @@ public class MarketingAnalysisResponseV2 {
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class FinancialPerformance {
private MonthYearValue marketingExpenses;
@@ -326,20 +291,19 @@ public class MarketingAnalysisResponseV2 {
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class MonthYearValue {
private String month;
private String year;
public MonthYearValue(String month, String year) {
this.month = month;
this.year = year;
}
}
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class Bottlenecks {
private String title;
@@ -350,6 +314,8 @@ public class MarketingAnalysisResponseV2 {
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class BottlenecksDetails {
private List<String> landing;
@@ -359,6 +325,8 @@ public class MarketingAnalysisResponseV2 {
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class Recommendations {
private String title;
@@ -368,14 +336,11 @@ public class MarketingAnalysisResponseV2 {
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class CorePillar {
private String strategy;
private String action;
public CorePillar(String strategy, String action) {
this.strategy = strategy;
this.action = action;
}
}
}