diff --git a/.vibe42-run.log b/.vibe42-run.log index 4ffddd0..e9321c0 100644 --- a/.vibe42-run.log +++ b/.vibe42-run.log @@ -22,3 +22,7 @@ up to date in 360ms up to date in 362ms Сервер запущен на порту 3000 +--- run Wed Aug 19 06:48:55 AM UTC 2026 :: npm start --silent + +up to date in 437ms +Сервер запущен на порту 3000 diff --git a/.vibe42-run.pid b/.vibe42-run.pid index f48626d..4f29463 100644 --- a/.vibe42-run.pid +++ b/.vibe42-run.pid @@ -1 +1 @@ -1979 +2218 diff --git a/index.html b/index.html index 44c2d91..c880ca7 100644 --- a/index.html +++ b/index.html @@ -395,11 +395,26 @@ function renderStats() { const total = allData.length; - const employees = new Set(allData.map(d => d.name)).size; - const specialist = allData.filter(d => d.level === 'Специалист').length; - const professional = allData.filter(d => d.level === 'Профессионал').length; - const expert = allData.filter(d => d.level === 'Эксперт').length; const vendors = new Set(allData.map(d => d.vendor)).size; + + // Группируем по сотрудникам и находим максимальный уровень + const levelPriority = { 'Специалист': 1, 'Профессионал': 2, 'Эксперт': 3 }; + const employeeMaxLevel = {}; + + allData.forEach(d => { + if (d.name) { + const currentMax = employeeMaxLevel[d.name] || 0; + const newLevel = levelPriority[d.level] || 0; + if (newLevel > currentMax) { + employeeMaxLevel[d.name] = newLevel; + } + } + }); + + const employees = Object.keys(employeeMaxLevel).length; + const specialist = Object.values(employeeMaxLevel).filter(l => l === 1).length; + const professional = Object.values(employeeMaxLevel).filter(l => l === 2).length; + const expert = Object.values(employeeMaxLevel).filter(l => l === 3).length; document.getElementById('stat-total').textContent = total; document.getElementById('stat-employees').textContent = employees;