From 49ee85aae2d4de3b61f57ce010fc5b8ef086185a Mon Sep 17 00:00:00 2001 From: bot-backend Date: Fri, 31 Jul 2026 18:42:40 +0300 Subject: [PATCH] =?UTF-8?q?fix(tradein/ui):=20=D0=BD=D0=B5=20=D0=BD=D0=B0?= =?UTF-8?q?=D0=B7=D1=8B=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BD=D0=B5=D0=BF=D0=BE?= =?UTF-8?q?=D0=B4=D1=82=D0=B2=D0=B5=D1=80=D0=B6=D0=B4=D1=91=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=B3=D0=BE=D1=80=D0=BE=D0=B4=20=D0=B2=20=D0=BF?= =?UTF-8?q?=D0=BB=D0=B0=D1=88=D0=BA=D0=B5=20=D0=BD=D0=B5=D0=BE=D0=BF=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D0=B5=D0=BB=D1=91=D0=BD=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B8=20(#2576)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Deep-review R3: плашка city_ambiguous всегда подставляла {city} — внутреннее состояние с дефолтом "Екатеринбург" (initCityLabel), а не то, что реально определил бэкенд (в ответе только булев target_city_ambiguous, угаданного города там нет). Ровно в целевом сценарии фикса — нетронутая форма, «Ленина 1», cityConfirmed=false — текст утверждал «если это не Екатеринбург» независимо от реального результата (там мог быть Нижний Тагил) — та же нечестность, которую предыдущий коммит убирал из запроса, только в тексте. Текст плашки теперь ветвится по cityConfirmed: - cityConfirmed=true (город реально был подтверждён и отправлен) — прежний текст с конкретным {city} уместен, не меняю. - cityConfirmed=false (это и есть путь, где cityAmbiguous обычно и срабатывает после предыдущего коммита) — нейтральная формулировка без упоминания конкретного города: «Если это неверно, выберите город выше и повторите оценку.» tsc --noEmit / next lint / next build — чисто (те же 2 pre-existing warning в несвязанных файлах). --- .../components/trade-in/v2/ParamsPanel.tsx | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/tradein-mvp/frontend/src/components/trade-in/v2/ParamsPanel.tsx b/tradein-mvp/frontend/src/components/trade-in/v2/ParamsPanel.tsx index 0555150b..17740970 100644 --- a/tradein-mvp/frontend/src/components/trade-in/v2/ParamsPanel.tsx +++ b/tradein-mvp/frontend/src/components/trade-in/v2/ParamsPanel.tsx @@ -1653,12 +1653,29 @@ export default function ParamsPanel({ )} {/* #2576 — честная, не блокирующая подсказка: последняя оценка вернулась с target_city_ambiguous, город определил геокодер - сам. role="status" (не alert) — это информация, не ошибка. */} + сам. role="status" (не alert) — это информация, не ошибка. + Deep-review R3: текст различает cityConfirmed — если бэкенд + не получил city_hint (`cityConfirmed === false`), `city` в + этот момент внутренний best-guess ("Екатеринбург"), а НЕ то, + что реально нашёл геокодер (в ответе вообще нет угаданного + города, только сам булев признак) — называть конкретный город + в этом случае было бы той же нечестностью, которую фикс + убирал из запроса, только в тексте плашки. */} {cityAmbiguous && !fieldErrors.address && (
- Город определён автоматически — результат может относиться к - другому населённому пункту области. Если это не {city}, - выберите верный город выше и повторите оценку. + {cityConfirmed ? ( + <> + Город определён автоматически — результат может + относиться к другому населённому пункту области. Если это + не {city}, выберите верный город выше и повторите оценку. + + ) : ( + <> + Город определён автоматически — результат может + относиться к другому населённому пункту области. Если это + неверно, выберите город выше и повторите оценку. + + )}
)}