From bddd2a8d7d98749fb712be4f9124c729616f40f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Thu, 25 Jun 2026 12:28:38 +0300 Subject: [PATCH] =?UTF-8?q?fix/dashboard:=20=D0=BD=D0=B5=D0=B9=D1=82=D1=80?= =?UTF-8?q?=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D0=B5=20=D0=BF=D1=80=D0=B8=D0=B2?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=82=D0=B2=D0=B8=D0=B5=20=D0=B1=D0=B5=D0=B7?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BB=D0=BB=D0=B5=D0=B3=D0=B0=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=B3=D0=B4=D0=B0=20=D0=B8=D0=BC=D1=8F=20=D0=BD=D0=B5=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D0=BD=D0=BE=20U2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Без имени дашборд звал коллега — звучит как к чужому. Теперь Доброе утро! без обращения; имя клиент задаёт в Настройки Профиль. U6 автопополнение уже имел тултип-пояснение. Тест DashboardPageHead 6/6. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../js/components/dashboard/DashboardPageHead.vue | 8 ++++++-- app/tests/Frontend/DashboardPageHead.spec.ts | 8 +++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/resources/js/components/dashboard/DashboardPageHead.vue b/app/resources/js/components/dashboard/DashboardPageHead.vue index 2a3d621e..5133cb60 100644 --- a/app/resources/js/components/dashboard/DashboardPageHead.vue +++ b/app/resources/js/components/dashboard/DashboardPageHead.vue @@ -29,7 +29,10 @@ const props = withDefaults( const auth = useAuthStore(); /** Имя залогиненного пользователя (было захардкожено «Иван»). */ -const firstName = computed(() => auth.user?.first_name?.trim() || 'коллега'); +const firstName = computed(() => auth.user?.first_name?.trim() || ''); +// U2 (UX-аудит 25.06): без имени НЕ зовём «коллега» (звучит как к чужому) — +// приветствуем нейтрально «Доброе утро!». Имя клиент задаёт в Настройки→Профиль. +const hasName = computed(() => firstName.value !== ''); /** Приветствие по времени суток (МСК машины пользователя). */ const greeting = computed(() => { @@ -55,7 +58,8 @@ const avgCostLabel = computed(() => {

- {{ greeting }}, {{ firstName }} + {{ greeting }}

сегодня {{ leadsToday }} · вчера {{ leadsYesterday }} diff --git a/app/tests/Frontend/DashboardPageHead.spec.ts b/app/tests/Frontend/DashboardPageHead.spec.ts index 421c66b5..fd7f01f6 100644 --- a/app/tests/Frontend/DashboardPageHead.spec.ts +++ b/app/tests/Frontend/DashboardPageHead.spec.ts @@ -34,10 +34,12 @@ describe('DashboardPageHead.vue', () => { expect(greet).not.toContain('Иван'); }); - it('при отсутствии user приветствие рендерится без падения', () => { + it('без имени приветствие нейтральное, без «коллега» (U2)', () => { const wrapper = mountHead(null); - expect(wrapper.find('.page-greet').exists()).toBe(true); - expect(wrapper.find('.page-greet').text().length).toBeGreaterThan(0); + const greet = wrapper.find('.page-greet').text(); + expect(greet.length).toBeGreaterThan(0); + expect(greet).not.toContain('коллега'); + expect(greet).toContain('!'); // «Доброе утро!» — без обращения к чужому }); // F5: meta-строка раньше была захардкоженной «рыбой» (+3 / 11 / 38 / 2 248 ₽).