using System;
using System.Collections.Generic;

namespace EventsAppQuest.Core
{
    /// <summary>
    /// Relatório final/handoff comercial da sessão Quest: consolida decisão, CTA, próximos passos e estatísticas
    /// para uso por vendedor/consultor ou sistema futuro de acompanhamento.
    /// </summary>
    [Serializable]
    public class QuestSessionHandoffReport
    {
        /// <summary>Identificador da sessão (ex.: herdado do QuestCommercialOutcome ou QuestSessionExportPayload).</summary>
        public string SessionId { get; set; }

        /// <summary>Identificador do projeto associado.</summary>
        public string ProjectId { get; set; }

        /// <summary>Id da proposta recomendada.</summary>
        public string RecommendedProposalId { get; set; }

        /// <summary>Id da proposta escolhida/seleccionada.</summary>
        public string SelectedProposalId { get; set; }

        /// <summary>Estado final da decisão comercial.</summary>
        public QuestCommercialDecisionState FinalDecisionState { get; set; }

        /// <summary>CTA confirmado (ex.: "PrimaryCTA", "SecondaryCTA").</summary>
        public string ConfirmedCTA { get; set; }

        /// <summary>Próxima ação sugerida (para continuidade comercial).</summary>
        public string SuggestedNextAction { get; set; }

        /// <summary>Prioridade de follow-up (0 = não definida; maior = mais urgente).</summary>
        public int FollowUpPriority { get; set; }

        /// <summary>Resumo curto do resultado comercial.</summary>
        public string OutcomeSummary { get; set; }

        /// <summary>Resumo do fechamento (headline + conclusão).</summary>
        public string ClosingSummary { get; set; }

        /// <summary>Hotspots principais visitados durante a sessão (nomes curtos).</summary>
        public List<string> KeyHotspotsVisited { get; set; } = new List<string>();

        /// <summary>Comparações relevantes vistas durante a sessão (rótulos simples).</summary>
        public List<string> KeyComparisonsViewed { get; set; } = new List<string>();

        /// <summary>Rótulo final de confiança (ex.: "Confiança 80%").</summary>
        public string FinalConfidenceLabel { get; set; }

        /// <summary>Notas livres para handoff comercial (campo preparado para futura edição na camada web).</summary>
        public string HandoffNotes { get; set; }

        /// <summary>Data/hora de geração do relatório (UTC).</summary>
        public DateTime GeneratedAt { get; set; }
    }
}

