[Fable 5][P3] ObjectSaleChart: серия «цена ₽/м²» рисует значения, делённые на 1000, без valueFormatter — тултип читается с ошибкой в 1000 раз #1238

Closed
opened 2026-06-13 04:49:48 +00:00 by bot-backend · 0 comments
Collaborator

Из армейского ревью Claude Fable 5 (2026-06-11)

Confirmed by 2/2 адверсариальных верификатора, severity P3 (correctness), confidence 0.7.

Файл

frontend/src/components/analytics/ObjectSaleChart.tsx:54

Evidence (цитата кода)

name: `${type} · цена ₽/м²`,
...
data: d.price.map((v) => (v ? Math.round(v / 1000) : null)),

Why bug

Tooltip (trigger:"axis") показывает строку «apartments · цена ₽/м²: 146», хотя 146 — это тыс ₽/м². В соседнем MarketPulseChart для той же ситуации добавлен valueFormatter «тыс ₽/м²», здесь его нет — пользователь при hover читает цену, заниженную в 1000 раз; правильная подпись есть только на оси.

Suggested fix

Добавить в серию tooltip: { valueFormatter: (v) => ${v} тыс ₽/м² } и/или переименовать серию в «цена, тыс ₽/м²» (как ось).

Verify notes

  • [real/P3] Трасса: price_avg=146250 → line 59 даёт 146; имя серии (line 54) содержит «₽/м²»; tooltip — общий trigger:"axis" без formatter, у серии нет per-series tooltip, ChartShell ничего не добавляет. Hover показывает «apartments · цена ₽/м²: 146» — единица в подписи врёт в 1000 раз; верная «тыс ₽/м²» только на оси. MarketPulseChart:63 при том же /1000 ставит valueFormatter «тыс ₽/м²». Нарушение ui-conventions («tooltip всегда с единицей»). Display-only → P3.
  • [real/P3] Защиты нет: ChartShell — тонкая обёртка без глобального formatter; price_avg приходит сырым ₽/м² из domrf_kn_sale_graph, /1000 реально меняет масштаб. Tooltip (trigger:"axis") покажет «apartments · цена ₽/м²: 146» — имя серии утверждает неверную единицу. Соседний MarketPulseChart для того же /1000 ставит valueFormatter «тыс ₽/м²»; ui-conventions.md требует unit в tooltip. P3: только hover-подпись, ось справа подписана верно, данные/экспорт не искажены.

Provenance

  • Finders: fe-rest
  • Confidence: 0.7
  • Originally batched at: main@d796027
## Из армейского ревью Claude Fable 5 (2026-06-11) Confirmed by 2/2 адверсариальных верификатора, severity **P3** (correctness), confidence 0.7. ## Файл [`frontend/src/components/analytics/ObjectSaleChart.tsx:54`](frontend/src/components/analytics/ObjectSaleChart.tsx:54) ## Evidence (цитата кода) ``` name: `${type} · цена ₽/м²`, ... data: d.price.map((v) => (v ? Math.round(v / 1000) : null)), ``` ## Why bug Tooltip (trigger:"axis") показывает строку «apartments · цена ₽/м²: 146», хотя 146 — это тыс ₽/м². В соседнем MarketPulseChart для той же ситуации добавлен valueFormatter «тыс ₽/м²», здесь его нет — пользователь при hover читает цену, заниженную в 1000 раз; правильная подпись есть только на оси. ## Suggested fix Добавить в серию tooltip: { valueFormatter: (v) => `${v} тыс ₽/м²` } и/или переименовать серию в «цена, тыс ₽/м²» (как ось). ## Verify notes - [real/P3] Трасса: price_avg=146250 → line 59 даёт 146; имя серии (line 54) содержит «₽/м²»; tooltip — общий trigger:"axis" без formatter, у серии нет per-series tooltip, ChartShell ничего не добавляет. Hover показывает «apartments · цена ₽/м²: 146» — единица в подписи врёт в 1000 раз; верная «тыс ₽/м²» только на оси. MarketPulseChart:63 при том же /1000 ставит valueFormatter «тыс ₽/м²». Нарушение ui-conventions («tooltip всегда с единицей»). Display-only → P3. - [real/P3] Защиты нет: ChartShell — тонкая обёртка без глобального formatter; price_avg приходит сырым ₽/м² из domrf_kn_sale_graph, /1000 реально меняет масштаб. Tooltip (trigger:"axis") покажет «apartments · цена ₽/м²: 146» — имя серии утверждает неверную единицу. Соседний MarketPulseChart для того же /1000 ставит valueFormatter «тыс ₽/м²»; ui-conventions.md требует unit в tooltip. P3: только hover-подпись, ось справа подписана верно, данные/экспорт не искажены. ## Provenance - Finders: `fe-rest` - Confidence: 0.7 - Originally batched at: main@d796027
bot-backend added the
Fable 5 ревью
label 2026-06-13 04:49:48 +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#1238
No description provided.