(low) trade-in/page.tsx: freshResult навсегда перекрывает URL id — переход по другой shared-ссылке в той же сессии показывает устаревший результат #1427

Closed
opened 2026-06-15 05:54:42 +00:00 by bot-backend · 0 comments
Collaborator

Severity: low · Категория: frontend · Файл: frontend/src/app/trade-in/page.tsx:37-39, 62

page.tsx:37-39, 62 — restoredEstimate = useEstimate(freshResult === null ? urlEstimateId : null), т.е. запрос по URL включается только пока freshResult === null; resultData = freshResult ?? restored (стр.62). freshResult после первой оценки (setFreshResult, стр.45) никогда не сбрасывается. Сценарий: пользователь считает оценку A (freshResult=A, URL ?id=A), затем в той же вкладке soft-навигацией открывает другую shared-ссылку ?id=B — поскольку freshResult (A) !== null, useEstimate(B) получает null и остаётся disabled, resultData продолжает показывать A. Усугубляется кандидатом [1] (URL вообще не перечитывается). Импакт: показывается старый расчёт вместо запрошенного по ссылке; при full-reload не воспроизводится (freshResult сбрасывается), поэтому severity low. Как чинить: сбрасывать freshResult при смене urlEstimateId (или приоритезировать свежий URL id над старым freshResult — сравнивать estimate_id).

Почему баг: Сценарий: пользователь считает оценку A (freshResult=A, URL ?id=A). Затем в той же вкладке открывает другую shared-ссылку ?id=B soft-навигацией (SPA, без полной перезагрузки). Так как freshResult (A) не null, useEstimate для B остаётся disabled (enabled зависит от estimate_id, который передан null), и resultData продолжает показывать A. Усугубляется Finding B (URL вообще не перечитывается). Стейл-стейт: показывается старый расчёт вместо запрошенного по ссылке. При full-reload проблема не проявляется, поэтому severity low.

Как чинить: Сбрасывать freshResult при смене urlEstimateId, либо приоритезировать совпадение id: если urlEstimateId задан и != freshResult.estimate.estimate_id — грузить из URL.


deep-audit «армия ботов 2» · verify+harden, confidence 0.8 · unit U84

**Severity:** low · **Категория:** frontend · **Файл:** `frontend/src/app/trade-in/page.tsx:37-39, 62` page.tsx:37-39, 62 — restoredEstimate = useEstimate(freshResult === null ? urlEstimateId : null), т.е. запрос по URL включается только пока freshResult === null; resultData = freshResult ?? restored (стр.62). freshResult после первой оценки (setFreshResult, стр.45) никогда не сбрасывается. Сценарий: пользователь считает оценку A (freshResult=A, URL ?id=A), затем в той же вкладке soft-навигацией открывает другую shared-ссылку ?id=B — поскольку freshResult (A) !== null, useEstimate(B) получает null и остаётся disabled, resultData продолжает показывать A. Усугубляется кандидатом [1] (URL вообще не перечитывается). Импакт: показывается старый расчёт вместо запрошенного по ссылке; при full-reload не воспроизводится (freshResult сбрасывается), поэтому severity low. Как чинить: сбрасывать freshResult при смене urlEstimateId (или приоритезировать свежий URL id над старым freshResult — сравнивать estimate_id). **Почему баг:** Сценарий: пользователь считает оценку A (freshResult=A, URL ?id=A). Затем в той же вкладке открывает другую shared-ссылку ?id=B soft-навигацией (SPA, без полной перезагрузки). Так как freshResult (A) не null, useEstimate для B остаётся disabled (enabled зависит от estimate_id, который передан null), и resultData продолжает показывать A. Усугубляется Finding B (URL вообще не перечитывается). Стейл-стейт: показывается старый расчёт вместо запрошенного по ссылке. При full-reload проблема не проявляется, поэтому severity low. **Как чинить:** Сбрасывать freshResult при смене urlEstimateId, либо приоритезировать совпадение id: если urlEstimateId задан и != freshResult.estimate.estimate_id — грузить из URL. --- <sub>deep-audit «армия ботов 2» · verify+harden, confidence 0.8 · unit U84</sub>
bot-backend added the
week ревью 1
label 2026-06-15 05:54:42 +00:00
bot-backend added the
scope/frontend
label 2026-06-15 11:02:03 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1427
No description provided.