using System;
using System.Collections.Generic;

namespace EventsAppQuest.Core
{
    /// <summary>
    /// Avaliação de qualidade/diagnóstico final da sessão Quest: scores e rótulos para
    /// qualidade da apresentação, clareza comercial, interação e prontidão de decisão.
    /// Preenchido pelo QuestSessionQualityAssessmentController a partir de engagement, outcome, export, handoff e timeline.
    /// </summary>
    [Serializable]
    public class QuestSessionQualityAssessment
    {
        /// <summary>Identificador da sessão.</summary>
        public string SessionId { get; set; }

        /// <summary>Score geral de qualidade da apresentação (0–100).</summary>
        public int PresentationQualityScore { get; set; }

        /// <summary>Score de clareza comercial (0–100).</summary>
        public int CommercialClarityScore { get; set; }

        /// <summary>Score de qualidade de interação (0–100).</summary>
        public int InteractionQualityScore { get; set; }

        /// <summary>Score de prontidão para decisão (0–100).</summary>
        public int DecisionReadinessScore { get; set; }

        /// <summary>Score de contribuição do engajamento (0–100).</summary>
        public int EngagementContributionScore { get; set; }

        /// <summary>Pontos fortes identificados.</summary>
        public List<string> Strengths { get; set; } = new List<string>();

        /// <summary>Pontos fracos identificados.</summary>
        public List<string> Weaknesses { get; set; } = new List<string>();

        /// <summary>Sugestões de melhoria.</summary>
        public List<string> ImprovementSuggestions { get; set; } = new List<string>();

        /// <summary>Rótulo final de qualidade (ex.: Low, Medium, High, StrongCommercialInterest).</summary>
        public string QualityLabel { get; set; }

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