gendesign/frontend/src
lekss361 088c1ab2cf
feat(site-finder): VelocityBlock в MarketTab (#34 sub-PR 2/2 FINAL) (#147)
* feat(site-finder): VelocityBlock в MarketTab (#34 sub-PR 2/2 FINAL)

D2 velocity-score frontend: score gauge, period meta, top 5 competitors table.
TS types (Velocity/VelocityCompetitor/VelocityPeriod) добавлены.
Guard "velocity" in data для backward-compat pre-#146.

tsc 0 errors, ESLint 0 warnings.

Closes #34

* fix(site-finder): align VelocityBlock TS types with backend response shape

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

---------

Co-authored-by: lekss361 <claudestars@proton.me>
2026-05-15 01:44:16 +03:00
..
app feat(site-finder): weight profile panel + analyze options (#114 sub-PR 4/4 FINAL) (#139) 2026-05-15 00:50:02 +03:00
components feat(site-finder): VelocityBlock в MarketTab (#34 sub-PR 2/2 FINAL) (#147) 2026-05-15 01:44:16 +03:00
hooks feat(site-finder): weight profile panel + analyze options (#114 sub-PR 4/4 FINAL) (#139) 2026-05-15 00:50:02 +03:00
lib feat(site-finder): weight profile panel + analyze options (#114 sub-PR 4/4 FINAL) (#139) 2026-05-15 00:50:02 +03:00
types feat(site-finder): VelocityBlock в MarketTab (#34 sub-PR 2/2 FINAL) (#147) 2026-05-15 01:44:16 +03:00