(low) Section1ParcelInfo headlineSubtitle: захардкоженный «Score +12 vs район» в fallback-подзаголовке #1467

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

Severity: low · Категория: report · Файл: frontend/src/components/site-finder/analysis/Section1ParcelInfo.tsx:217-219

Section1ParcelInfo.tsx:217-219. headlineSubtitle при falsy data.score_explanation подставляет литерал Score +12 vs район · ${data.poi_count} POI в радиусе 1 км. Число +12 — фиксированная выдумка, не связанная с реальной дельтой к району; при отсутствии score_explanation (старый деплой / частичный мок / backend без этого поля) пользователю в HeadlineBar секции 1 покажут конкретную ложную цифру «+12 vs район». Поле score_explanation объявлено optional (site-finder-api.ts:354), значит ветка типобезопасно достижима. Импакт: латентная ложь в клиентском вердикте, но в текущем проде score_explanation, по описанию, приходит безусловно, поэтому ветка обычно недостижима → severity low. Как чинить: убрать захардкоженное «+12» — формировать подзаголовок только из реально присутствующих полей (например, ${data.poi_count} POI в радиусе 1 км без выдуманной дельты), либо не показывать дельту, если её нет в данных.

Почему баг: Если backend не пришлёт score_explanation (старый деплой/мок), пользователю в вердикте секции 1 покажут конкретную цифру «+12 vs район», которой нет в данных — это ложное число в клиентском вердикте. На текущем backend score_explanation формируется безусловно (parcels.py:2702 — статическая строка всегда в ответе), поэтому ветка обычно недостижима в проде → severity low, но это латентная ложь в отчёте.

Как чинить: Не выводить выдуманную дельту: в fallback оставить только реальные данные (например ${data.poi_count} POI в радиусе 1 км) без «Score +12 vs район».


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

**Severity:** low · **Категория:** report · **Файл:** `frontend/src/components/site-finder/analysis/Section1ParcelInfo.tsx:217-219` Section1ParcelInfo.tsx:217-219. headlineSubtitle при falsy data.score_explanation подставляет литерал `Score +12 vs район · ${data.poi_count} POI в радиусе 1 км`. Число +12 — фиксированная выдумка, не связанная с реальной дельтой к району; при отсутствии score_explanation (старый деплой / частичный мок / backend без этого поля) пользователю в HeadlineBar секции 1 покажут конкретную ложную цифру «+12 vs район». Поле score_explanation объявлено optional (site-finder-api.ts:354), значит ветка типобезопасно достижима. Импакт: латентная ложь в клиентском вердикте, но в текущем проде score_explanation, по описанию, приходит безусловно, поэтому ветка обычно недостижима → severity low. Как чинить: убрать захардкоженное «+12» — формировать подзаголовок только из реально присутствующих полей (например, `${data.poi_count} POI в радиусе 1 км` без выдуманной дельты), либо не показывать дельту, если её нет в данных. **Почему баг:** Если backend не пришлёт score_explanation (старый деплой/мок), пользователю в вердикте секции 1 покажут конкретную цифру «+12 vs район», которой нет в данных — это ложное число в клиентском вердикте. На текущем backend score_explanation формируется безусловно (parcels.py:2702 — статическая строка всегда в ответе), поэтому ветка обычно недостижима в проде → severity low, но это латентная ложь в отчёте. **Как чинить:** Не выводить выдуманную дельту: в fallback оставить только реальные данные (например `${data.poi_count} POI в радиусе 1 км`) без «Score +12 vs район». --- <sub>deep-audit «армия ботов 2» · verify+harden, confidence 0.8 · unit U99</sub>
bot-backend added the
week ревью 1
label 2026-06-15 05:56:48 +00:00
bot-backend added the
scope/backend
label 2026-06-15 11:02:09 +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#1467
No description provided.