gendesign/backend/app
lekss361 b5a218160d fix(site-finder): address PR #87 auto-review minor feedback
Backend (parcels.py):
- Centrality factor: weight=1.0 вместо weight=center_bonus (semantic — decay
  для bonus не применяется, contribution = bonus IS the value). Защищает
  future PDF-export/UI который мог бы показать weight отдельно от contribution.
- group_totals type: dict[str, dict[str, float | int]] — count это int,
  contribution и contribution_pct это float. Уточняет hint для future mypy.
- Top-3 sort convention — добавлен inline-комментарий: positives "[:3] от
  descending" (most-positive first); negatives "[-3:][::-1]" (most-negative
  first). Оба "dominant first".

Frontend (ScoreBreakdownPanel.tsx):
- Stacked bar legend orphan fix: positive groups идут в legend под баром (как
  до того); negative groups показываются отдельной строкой ниже "Снижают балл —
  Шум/трамвай: −0.46". Никаких swatch'ей без bar-сегмента.

Per auto-review on 1d1c169.
2026-05-12 07:39:27 +03:00
..
api fix(site-finder): address PR #87 auto-review minor feedback 2026-05-12 07:39:27 +03:00
core feat(site-finder): /parcels/{cad}/isochrones via OpenRouteService 2026-05-11 21:44:22 +03:00
models feat(jobs): centralized job_settings API + DB-driven beat schedule 2026-05-11 15:38:13 +03:00
schemas feat(analytics): recommend_mix v3.1-v3.4 - noise + 2D competitors + 24m cap + success-driven 2026-05-11 22:19:41 +03:00
services fix(pzz-sync): follow_redirects=True (PKK6 returns 301) 2026-05-11 22:50:46 +03:00
workers feat(site-finder): ПЗЗ territorial zones from Rosreestr PKK6 + zoning in analyze 2026-05-11 21:51:51 +03:00
__init__.py init 2026-04-25 13:45:19 +03:00
main.py feat(jobs): centralized job_settings API + DB-driven beat schedule 2026-05-11 15:38:13 +03:00