/** * WKFYR Growth Lever Recommendations */ (function () { 'use strict'; var App = window.BenchmarkApp; /** * Calculate growth lever recommendations from scoring metrics. * @param {Object} scoring — result from calculateScoring() * @returns {Object} lever scores with priorities and ranks */ App.calculateRecommendations = function (scoring) { var levers = { ppc: 0, listing: 0, seo: 0, account: 0 }; var metricNames = ['revenue', 'budget', 'asins', 'growth']; // Sum WKFYR contributions across all metrics for (var i = 0; i < metricNames.length; i++) { var metric = metricNames[i]; var tierLetter = scoring.metrics[metric].tierLetter; var contributions = App.WKFYR_MATRIX[metric][tierLetter]; levers.ppc += contributions.ppc; levers.listing += contributions.listing; levers.seo += contributions.seo; levers.account += contributions.account; } // Round to avoid float artifacts var leverNames = ['ppc', 'listing', 'seo', 'account']; for (var j = 0; j < leverNames.length; j++) { levers[leverNames[j]] = Math.round(levers[leverNames[j]] * 100) / 100; } // Sort by score descending to assign ranks var sorted = leverNames.slice().sort(function (a, b) { return levers[b] - levers[a]; }); // Build result var result = {}; for (var k = 0; k < sorted.length; k++) { var name = sorted[k]; var score = levers[name]; var priority; if (score >= 0.50) priority = 'HIGH'; else if (score >= 0.30) priority = 'MEDIUM'; else priority = 'LOW'; result[name] = { score: score, priority: priority, rank: k + 1 }; } return result; }; })();