From c6cabc1990cb5e81d19b206c1d828249e351dad8 Mon Sep 17 00:00:00 2001 From: lekss361 Date: Fri, 15 May 2026 01:37:11 +0300 Subject: [PATCH] fix(site-finder): align VelocityBlock TS types with backend response shape MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per #147 bot review — cross-stack contract mismatch: Backend velocity.py (PR #146 merged) returns: obj_id, name, dev_name, obj_class, district_name, distance_m, total_sqm_period Frontend types had: obj_id, name, class, distance_m, total_sqm Result: c.class undefined → never showed class chip; c.total_sqm undefined → Math.round(NaN) = NaN, 'не число' в table column для всех 5 строк. ## Fix - VelocityCompetitor.class → obj_class - VelocityCompetitor.total_sqm → total_sqm_period - Added optional dev_name, district_name fields - Updated VelocityBlock.tsx — все 3 references (guard, chip render, table cell) Refs: #34, #147 --- frontend/src/components/site-finder/VelocityBlock.tsx | 6 +++--- frontend/src/types/site-finder.ts | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/frontend/src/components/site-finder/VelocityBlock.tsx b/frontend/src/components/site-finder/VelocityBlock.tsx index 268f8587..d38f628b 100644 --- a/frontend/src/components/site-finder/VelocityBlock.tsx +++ b/frontend/src/components/site-finder/VelocityBlock.tsx @@ -177,7 +177,7 @@ export function VelocityBlock({ velocity }: VelocityBlockProps) { > {c.name ?? `obj#${c.obj_id}`} - {c.class && ( + {c.obj_class && ( - {c.class} + {c.obj_class} )} @@ -205,7 +205,7 @@ export function VelocityBlock({ velocity }: VelocityBlockProps) { fontWeight: 500, }} > - {Math.round(c.total_sqm).toLocaleString("ru")} + {Math.round(c.total_sqm_period).toLocaleString("ru")} ))} diff --git a/frontend/src/types/site-finder.ts b/frontend/src/types/site-finder.ts index 7245c602..b43c5aeb 100644 --- a/frontend/src/types/site-finder.ts +++ b/frontend/src/types/site-finder.ts @@ -208,9 +208,11 @@ export interface Pipeline24mo { export interface VelocityCompetitor { obj_id: number; name: string | null; - class: string | null; + obj_class: string | null; distance_m: number; - total_sqm: number; + total_sqm_period: number; + dev_name?: string | null; + district_name?: string | null; } export interface VelocityPeriod {