From 5a93751ccc264d2926f942b7daeaec28ef9205ab Mon Sep 17 00:00:00 2001 From: Maxim Dolgolyov Date: Sun, 31 May 2026 11:31:08 +0300 Subject: [PATCH] =?UTF-8?q?fix(dashboard):=20=D1=81=D0=B8=D0=BD=D1=85?= =?UTF-8?q?=D1=80=D0=BE=D0=BD=20XP=20=D0=BF=D0=B8=D1=82=D0=BE=D0=BC=D1=86?= =?UTF-8?q?=D0=B0=201-=D0=B2-1=20=D1=81=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB?= =?UTF-8?q?=D0=B5=D0=BC=20/pet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Полный XP и абсолютный порог уровня (d.xp / d.xpForNextLevel), уровень пользователя d.level — как в pet.html, а не относительный расчёт по petLevel. Co-Authored-By: Claude Opus 4.8 --- frontend/dashboard.html | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/frontend/dashboard.html b/frontend/dashboard.html index ea3ec54..de3af93 100644 --- a/frontend/dashboard.html +++ b/frontend/dashboard.html @@ -3276,16 +3276,14 @@ art.innerHTML = PetSprite.render(d.petLevel || 1, d.mood || 'neutral', d.accessories || [], d.petColor || 'purple', d.streakCurrent || 0); } document.getElementById('hc-pet-name').textContent = d.petName || 'Квантик'; - document.getElementById('hc-pet-lvl').textContent = d.petLevel || 1; + document.getElementById('hc-pet-lvl').textContent = d.level || 1; - // XP до следующего уровня питомца + // XP — как в модуле /pet: полный XP / абсолютный порог следующего уровня const cur = d.xpForCurrLevel || 0; const next = d.xpForNextLevel; // null = макс - const have = Math.max(0, (d.xp || 0) - cur); - const need = next != null ? Math.max(1, next - cur) : have; - const pct = next != null ? Math.min(100, Math.round(have / need * 100)) : 100; - document.getElementById('hc-pet-xp').textContent = have; - document.getElementById('hc-pet-xpmax').textContent = next != null ? need : '—'; + const pct = next ? Math.min(100, ((d.xp - cur) / (next - cur)) * 100) : 100; + document.getElementById('hc-pet-xp').textContent = (d.xp || 0).toLocaleString(); + document.getElementById('hc-pet-xpmax').textContent = next ? next.toLocaleString() : 'MAX'; document.getElementById('hc-pet-prog').style.width = pct + '%'; // Стрик / цель дня / настроение