namespace CRMSalesDAL.DTO.LeadScoringConfig; /// /// SalesMind AI Lead Scoring settings (MLEADSCORINGCONFIG) — a small, effectively /// single-row-per-tenant settings entity (same shape/precedent as Marketing's /// BusinessAspirationGoalDTO). No "only one row" enforcement is added here deliberately — that's /// a UI/usage convention, not a DB constraint, matching that precedent exactly. /// /// The 4 weights must sum to 100 (validated in LeadScoringConfigBLL) — defaults 25/30/25/20 per /// the reference material's 4 scoring dimensions (Demographic Fit / Behavioral Signals / /// Engagement Level / Deal Readiness). Only Demographic Fit and Deal Readiness have a real data /// source today; LeadScoringBLL.RecalculateLeadScoreAsync renormalizes across just those two — /// see that method's doc comment for the exact renormalization rule. /// public class LeadScoringConfigDTO { #region LeadScoringConfig public int LeadScoringConfigId { get; set; } public string LeadScoringConfigCode { get; set; } = string.Empty; public string LeadScoringConfigName { get; set; } = string.Empty; /// Real dimension — see LeadScoringBLL.ComputeDemographicFitScore. public decimal DemographicFitWeightPercent { get; set; } /// DEFERRED dimension — no website-visit/content-download tracking exists in this /// codebase yet. Configurable so the weight is ready once a real signal source lands, but /// LeadScoringBLL contributes 0 for it today (see that method's doc comment). public decimal BehavioralSignalsWeightPercent { get; set; } /// DEFERRED dimension — depends on Interaction Journal, a future SalesMind pass not /// built yet. Same treatment as BehavioralSignalsWeightPercent. public decimal EngagementLevelWeightPercent { get; set; } /// Real dimension — see LeadScoringBLL.ComputeDealReadinessScore. public decimal DealReadinessWeightPercent { get; set; } public string? Remarks { get; set; } #endregion #region Base public int CreatedById { get; set; } public DateTime CreatedOn { get; set; } public string? CreatedByName { get; set; } public int ModifiedById { get; set; } public DateTime ModifiedOn { get; set; } public string? ModifiedByName { get; set; } #endregion #region Standard public short SortOrder { get; set; } public byte Status { get; set; } public short Version { get; set; } public int TenantId { get; set; } #endregion }