using System;
using System.Collections.Generic;

namespace EventsAppQuest.Domain.Models
{
    /// <summary>
    /// Resumo da recomendação executiva da melhor proposta para o cliente no contexto atual.
    /// </summary>
    [Serializable]
    public class ProposalRecommendationSummary
    {
        /// <summary>Id da proposta recomendada.</summary>
        public string RecommendedProposalId { get; set; }

        /// <summary>Score de confiança da recomendação (0–100; maior = mais confiante).</summary>
        public int RecommendationConfidenceScore { get; set; }

        /// <summary>Resumo executivo (uma ou duas frases para decisão).</summary>
        public string ExecutiveSummary { get; set; }

        /// <summary>Motivos pelos quais esta proposta vence (lista curta).</summary>
        public List<string> WhyItWins { get; set; } = new List<string>();

        /// <summary>Tradeoffs ou pontos de atenção (ex.: "Orçamento no limite do alvo").</summary>
        public List<string> Tradeoffs { get; set; } = new List<string>();

        /// <summary>Posicionamento de orçamento (ex.: "Dentro do alvo", "Acima do alvo — justificado pelo pacote").</summary>
        public string BudgetPositioning { get; set; }

        /// <summary>Posicionamento de experiência/jornada (ex.: "Evolução visual estruturada", "Jornada fluida").</summary>
        public string ExperiencePositioning { get; set; }

        /// <summary>Posicionamento operacional (ex.: "Montagem e cobertura adequadas", "Atenção a reconfigurações").</summary>
        public string OperationalPositioning { get; set; }

        /// <summary>Ângulo de venda sugerido para apresentação ao cliente (ex.: "Destacar valor da experiência completa").</summary>
        public string SuggestedSalesAngle { get; set; }

        /// <summary>Id da segunda melhor opção (alternativa).</summary>
        public string SecondaryOptionId { get; set; }

        /// <summary>Motivo pelo qual a segunda opção é relevante (ex.: "Melhor se o orçamento for prioridade absoluta").</summary>
        public string SecondaryOptionReason { get; set; }
    }
}
