gendesign/frontend/src/app
Light1YT 589b3bfdc3
All checks were successful
CI / frontend-tests (pull_request) Successful in 1m0s
CI / openapi-codegen-check (pull_request) Successful in 1m55s
CI / backend-tests (pull_request) Successful in 9m59s
CI / changes (pull_request) Successful in 6s
fix(site-finder): honest POI-score label + drop duplicate MOI column (audit #1871 P2)
Два disclosure-фикса + 3 consistency follow-up (по code-review).

invest_score = взвешенная POI-сумма (distance-decay + center-bonus, max-ref
40), НЕ калиброванный инвест-рейтинг (scorer.py — пустой стаб). Был мислейбл
«Инвест-балл». Формулу/SCORE_MAX_REFERENCE не трогаем — только честная подпись.
- backend parcels.py: score_explanation → «POI-скор (0–40, оценочный)...
  Не инвест-рейтинг...»
- KpiCard: новый optional caption prop (backward-compat).
- Section1ParcelInfo: KPI «Инвест-балл» → «POI-скор · 0–40» + caption «оценочный».
- legacy site-finder: scoreLabel → «POI-скор · {label} · оценочный».
- CompareTable: «Инвест-балл» → «POI-скор · 0–40» (тот же score, был мислейбл).
- landing app/page.tsx: «Score 0–100» → «POI-скор 0–40» (реальная шкала).
- Section1 scoreColor: пороги 0–100 → 0–40 калиброванные (_score_label:
  <5 плохо · 5–15 средне · 15–25 хорошо · ≥25 отлично) — раньше хороший
  ~30/40 участок рисовался red рядом с честным «0–40» лейблом.

MOI (months_of_inventory) математически КОРРЕКТЕН — по определению не зависит
от горизонта проекции (MOI = сток / месячный темп). Не баг. Но дублировался
колонкой на 4 горизонта в ForecastHorizonsBlock (116.6/116.6/117.6/117.6 —
выглядело сломанным). Убрал колонку; MOI остаётся 1 раз в Section6 key_numbers.
deficit_index (варьируется) сохранён. Подчищены unused balanced/DEFICIT_BALANCE_EPS.

138 frontend vitest passed, ruff/tsc/lint clean.

Refs #1871
2026-06-23 12:29:02 +05:00
..
%5F%5Fpreview fix(week-review): дожим ревью — #1569, #1590, #1642 + feat #801 MSW-preview 2026-06-17 11:24:34 +05:00
_legacy feat(sf-fe-a12): Landing redesign + PilotCTA с real B3/B4 data (v2 rebased) (#367) 2026-05-18 05:16:57 +00:00
admin fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
analytics fix(analytics): drop false market verdict from per-object Sold % KpiCard (#1407) 2026-06-17 20:22:29 +03:00
concept fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
data-sources fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
docs/b2b-channels fix(docs): block javascript: URLs in renderMarkdown href (XSS guard) (#131) 2026-05-14 23:39:47 +03:00
legacy/site-finder fix(site-finder): honest POI-score label + drop duplicate MOI column (audit #1871 P2) 2026-06-23 12:29:02 +05:00
site-finder fix(ptica): honest isReal flags — placeholder stubs no longer marked real (audit #1871 P1.3) 2026-06-23 11:20:48 +05:00
trade-in fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
error.tsx fix(site-finder): handle 202 on-demand geometry in analyze + error boundaries (#1001) 2026-06-05 16:12:21 +05:00
globals.css fix(ptica): load Inter, surface map legend, drop flag, honest product chart, home link 2026-06-21 01:41:13 +05:00
layout.tsx fix(ptica): load Inter, surface map legend, drop flag, honest product chart, home link 2026-06-21 01:41:13 +05:00
page.tsx fix(site-finder): honest POI-score label + drop duplicate MOI column (audit #1871 P2) 2026-06-23 12:29:02 +05:00
providers.tsx add interactive analytics dashboard for Sverdlovsk market and PRINZIP 2026-04-27 16:55:30 +03:00