package growth import "time" const ( AnalyticsVersion = "1.3.0" DefaultModelConfigVersion = "avalai-responses-v1-tools4-turns2-output1600" MinBaselineObservations = 4 MinBaselineSessions = 100 MaterialChangeBPS = 2_000 MinSimilarityBPS = 6_000 ) type Confidence string const ( ConfidenceHigh Confidence = "HIGH" ConfidenceMedium Confidence = "MEDIUM" ConfidenceLow Confidence = "LOW" ConfidenceInsufficientData Confidence = "INSUFFICIENT_DATA" ) type SuppressionReason string const ( SuppressionInsufficientObservations SuppressionReason = "INSUFFICIENT_BASELINE_OBSERVATIONS" SuppressionInsufficientBaselineSessions SuppressionReason = "INSUFFICIENT_BASELINE_SESSIONS" SuppressionInsufficientHistory SuppressionReason = "INSUFFICIENT_HISTORY" SuppressionIncompleteEventWindow SuppressionReason = "INCOMPLETE_EVENT_WINDOW" SuppressionInsufficientCohort SuppressionReason = "INSUFFICIENT_COHORT" SuppressionTerminalScope SuppressionReason = "TERMINAL_SCOPE_UNSUPPORTED" ) type DailyPoint struct { Date time.Time `json:"date"` SessionCount int64 `json:"sessionCount"` PaidSessionCount int64 `json:"paidSessionCount"` PaidAmountRial int64 `json:"paidAmountRial"` EventIDs []string `json:"eventIds,omitempty"` } type EventKind string const ( EventOfficial EventKind = "OFFICIAL" EventCommercial EventKind = "COMMERCIAL" ) type Event struct { ID string `json:"id"` TitleFA string `json:"titleFa"` StartDate time.Time `json:"startDate"` EndDate time.Time `json:"endDate"` Family string `json:"family"` Tags []string `json:"tags"` Source string `json:"source"` SourceVersion string `json:"sourceVersion"` Categories []string `json:"categories"` Kind EventKind `json:"kind"` OfficialHoliday bool `json:"officialHoliday"` Universal bool `json:"universal"` } type EventEffect struct { EvidenceID string `json:"evidenceId"` EventID string `json:"eventId"` Eligible bool `json:"eligible"` SuppressionReason SuppressionReason `json:"suppressionReason,omitempty"` ObservationCount int `json:"observationCount"` BaselineSessionCount int64 `json:"baselineSessionCount"` BaselinePaidSessions int64 `json:"baselinePaidSessions"` BaselineAmountRial int64 `json:"baselineAmountRial"` ActualSessionCount int64 `json:"actualSessionCount"` ActualPaidSessions int64 `json:"actualPaidSessions"` ActualAmountRial int64 `json:"actualAmountRial"` SessionUpliftBPS int64 `json:"sessionUpliftBps"` PaidSessionUpliftBPS int64 `json:"paidSessionUpliftBps"` AmountUpliftBPS int64 `json:"amountUpliftBps"` MaterialWin bool `json:"materialWin"` MaterialDecline bool `json:"materialDecline"` } type EventMatch struct { Event Event `json:"event"` ScoreBPS int64 `json:"scoreBps"` MatchBasis string `json:"matchBasis"` } type Range struct { P10 int64 `json:"p10"` P50 int64 `json:"p50"` P90 int64 `json:"p90"` } type ForecastPoint struct { Date time.Time `json:"date"` BaselineSessions int64 `json:"baselineSessions"` BaselineAmountRial int64 `json:"baselineAmountRial"` PaidSessions Range `json:"paidSessions"` PaidAmountRial Range `json:"paidAmountRial"` EventIDs []string `json:"eventIds,omitempty"` } type BacktestResult struct { Origins int `json:"origins"` SessionMAPEBPS int64 `json:"sessionMapeBps"` AmountMAPEBPS int64 `json:"amountMapeBps"` IntervalCoverageBPS int64 `json:"intervalCoverageBps"` } type Forecast struct { StartDate time.Time `json:"startDate"` HorizonDays int `json:"horizonDays"` Confidence Confidence `json:"confidence"` SuppressionReason SuppressionReason `json:"suppressionReason,omitempty"` Points []ForecastPoint `json:"points"` Backtest BacktestResult `json:"backtest"` } type Opportunity struct { EvidenceID string `json:"evidenceId"` EventID string `json:"eventId"` EventTitleFA string `json:"eventTitleFa"` Date time.Time `json:"date"` SimilarityBPS int64 `json:"similarityBps"` ExpectedSessions Range `json:"expectedSessions"` ExpectedAmountRial Range `json:"expectedAmountRial"` HistoricalEvidenceID string `json:"historicalEvidenceId"` } type Risk struct { EvidenceID string `json:"evidenceId"` Date time.Time `json:"date"` EndDate time.Time `json:"endDate"` SessionDeclineBPS int64 `json:"sessionDeclineBps"` AmountDeclineBPS int64 `json:"amountDeclineBps"` ExpectedSessions Range `json:"expectedSessions"` ExpectedAmountRial Range `json:"expectedAmountRial"` } type EvidenceBundle struct { Opportunities []Opportunity `json:"opportunities"` Risks []Risk `json:"risks"` } type CampaignBrief struct { HeadlineFA string `json:"headlineFa"` GuidanceFA string `json:"guidanceFa"` OfferFA string `json:"offerFa"` MessageFA string `json:"messageFa"` PreparationFA string `json:"preparationFa"` LimitationFA string `json:"limitationFa"` EvidenceIDs []string `json:"evidenceIds"` }