diff --git a/app/resources/js/components/deals/DealDetailHero.vue b/app/resources/js/components/deals/DealDetailHero.vue
index 63fc2e22..4ec29407 100644
--- a/app/resources/js/components/deals/DealDetailHero.vue
+++ b/app/resources/js/components/deals/DealDetailHero.vue
@@ -43,7 +43,7 @@ function formatRelative(minutes: number): string {
·
mdi-clock-outline
- {{ formatRelative(28) }}
+ {{ formatRelative(deal.receivedMinutesAgo) }}
diff --git a/app/tests/Frontend/DealDetailHero.spec.ts b/app/tests/Frontend/DealDetailHero.spec.ts
index 583e0c8e..8c5cba03 100644
--- a/app/tests/Frontend/DealDetailHero.spec.ts
+++ b/app/tests/Frontend/DealDetailHero.spec.ts
@@ -36,6 +36,25 @@ describe('DealDetailHero — inline status picker (18.05.2026)', () => {
expect(w.find('[data-testid="status-chip-trigger"]').exists()).toBe(true);
});
+ // V1 (UX-аудит 25.06): время было захардкожено formatRelative(28) — шапка всегда
+ // показывала «28 мин назад». Теперь берём реальное deal.receivedMinutesAgo.
+ it('показывает реальное время сделки, не захардкоженные 28 мин', () => {
+ const w = mount(DealDetailHero, {
+ props: { deal: makeDeal({ receivedMinutesAgo: 3 }), status: statuses[0] },
+ global: { plugins: [vuetify] },
+ });
+ expect(w.text()).toContain('3 мин назад');
+ expect(w.text()).not.toContain('28 мин назад');
+ });
+
+ it('реальное время в часах при больших значениях', () => {
+ const w = mount(DealDetailHero, {
+ props: { deal: makeDeal({ receivedMinutesAgo: 125 }), status: statuses[0] },
+ global: { plugins: [vuetify] },
+ });
+ expect(w.text()).toContain('2 ч назад');
+ });
+
it('клик по chip открывает меню (data-testid="status-option-{slug}" появляются)', async () => {
const w = mount(DealDetailHero, {
props: { deal: makeDeal(), status: statuses[0], allStatuses: statuses },