namespace PowderCoating.Core.Entities;

/// <summary>
/// Stores the raw AI prediction data captured at analysis time.
/// Both QuoteItem and JobItem carry a nullable FK to this table so the
/// same prediction record is shared when a quote converts to a job —
/// no duplication, clean lineage for reporting.
/// </summary>
public class AiItemPrediction : BaseEntity
{
    // Raw AI predictions — captured once, never mutated
    public decimal PredictedSurfaceAreaSqFt { get; set; }
    public int PredictedMinutes { get; set; }
    public string PredictedComplexity { get; set; } = "Moderate";   // Simple|Moderate|Complex|Extreme
    public decimal PredictedUnitPrice { get; set; }                 // EstimatedUnitPrice shown to user in wizard
    public string Confidence { get; set; } = "Medium";              // Low|Medium|High
    public string? Reasoning { get; set; }                          // AI explanation text
    public string? AiTags { get; set; }                             // Comma-separated tags from fixed taxonomy
    public int ConversationRounds { get; set; } = 1;                // How many follow-up rounds were needed

    // Set when the item is saved: was the AI surface area or price overridden by the user?
    public bool UserOverrodeEstimate { get; set; }
}
