/** * ABC Tier Scoring Engine */ (function () { 'use strict'; var App = window.BenchmarkApp; /** * Find sub-tier index for a given value against an industry threshold array. * The first threshold the value meets or exceeds → that index. */ function findSubTierIndex(value, thresholdArray) { for (var i = 0; i < thresholdArray.length; i++) { if (value >= thresholdArray[i]) return i; } return thresholdArray.length - 1; } function indexToScore(index) { if (index <= 2) return 3; // A+, A, A- if (index <= 5) return 2; // B+, B, B- return 1; // C+, C, C- } function indexToTierLetter(index) { if (index <= 2) return 'A'; if (index <= 5) return 'B'; return 'C'; } /** * Calculate ABC tier scoring for parsed params. * @param {Object} params — parsed params from params.js * @returns {Object} scoring result */ App.calculateScoring = function (params) { var industry = params.industry; var thresholds = App.THRESHOLDS[industry]; var labels = thresholds.labels; // Convert slugs to numeric values var values = { revenue: App.REVENUE_MAP[params.revenue], budget: App.BUDGET_MAP[params.budget], asins: params.asins, growth: App.GROWTH_MAP[params.growth] }; // Score each metric var metrics = {}; var metricNames = ['revenue', 'budget', 'asins', 'growth']; for (var i = 0; i < metricNames.length; i++) { var name = metricNames[i]; var idx = findSubTierIndex(values[name], thresholds[name]); metrics[name] = { value: values[name], subTierIndex: idx, subTier: labels[idx], tierLetter: indexToTierLetter(idx), score: indexToScore(idx) }; } // Weighted score var weightedScore = metrics.revenue.score * 0.40 + metrics.budget.score * 0.35 + metrics.asins.score * 0.15 + metrics.growth.score * 0.10; // Final tier var tier; if (weightedScore >= 2.5) tier = 'A'; else if (weightedScore >= 1.7) tier = 'B'; else tier = 'C'; // Sub-tier from revenue for "YOU" marker position var subTier = metrics.revenue.subTier; return { tier: tier, subTier: subTier, subTierIndex: metrics.revenue.subTierIndex, weightedScore: Math.round(weightedScore * 100) / 100, metrics: metrics }; }; })();