namespace TMSBLL.KpiPosting { // Reserved MKPI.KPIID block, confirmed live-unused on GB5DEMO before this migration // (MIN(KPIID) across every existing MKPI row was -1799999887 -- every id below picked // strictly more negative than that, per this repo's live-ID-verification discipline). public static class TmsKpiIds { public const int ComplianceCoveragePct = -1799999900; public const int NominationApprovalTatDays = -1799999901; public const int CostPerTrainedEmployee = -1799999902; public const int VenueUtilizationPct = -1799999903; public const int PassRatePct = -1799999904; public const int FirstAttemptPassRatePct = -1799999905; public const int SkillUpgradeApprovalRatePct = -1799999906; public const int CertRenewalCompliancePct = -1799999907; public const int ExpiringCertificates30D = -1799999908; public const int FeedbackResponseRatePct = -1799999909; public const int LearningGainPct = -1799999910; public static readonly IReadOnlyList All = new[] { ComplianceCoveragePct, NominationApprovalTatDays, CostPerTrainedEmployee, VenueUtilizationPct, PassRatePct, FirstAttemptPassRatePct, SkillUpgradeApprovalRatePct, CertRenewalCompliancePct, ExpiringCertificates30D, FeedbackResponseRatePct, LearningGainPct }; // TKPIVALUE.MEMBEROUID has no FK constraint (confirmed live) and -1 is already a real, // in-use value in existing rows meaning "whole org, no OU breakdown" -- these 11 KPIs are // tenant-wide, not sliced by organizational unit, so every posting uses this sentinel. public const int WholeOrgOuId = -1; } }