fix(site-finder): invest-score advisory flag + velocity data-honesty + h1 a11y (#1926) #2094

Merged
bot-backend merged 1 commit from fix/sitefinder-honesty-polish-1926 into main 2026-06-29 06:42:51 +00:00
Collaborator

Контекст

Site-finder подмножество остатка аудита #1871 (тикет #1926), тема data-honesty эпика #1953. units_sold-пункт #1926 уже закрыт ранее (#2054 inline _SOLD_COUNT_SQL); tradein-пункты (#2007-зона) вне scope.

Изменения

Файл Что
parcels.py + schemas/parcel.py invest_score: machine-readable score_is_advisory: true + score_advisory{kind:'poi_density_heuristic', scale_min:0, scale_max:SCORE_MAX_REFERENCE} в analyze-payload + AnalyzeResponse (optional, backward-compat). Явно помечает score как POI-эвристику, не абсолютный рейтинг.
api-types.ts +6 строк, регенерён каноническим CI-пайплайном (app.openapi()→openapi-typescript→prettier) — openapi-codegen-check пройдёт
VelocityBlock.tsx Velocity data-honesty: позитивный бейдж «Источник: Objective» (velocity_source==='objective') + видимый --warn-soft caveat (role=note) когда объём по прокси/кад.кварталу, а НЕ прямые продажи Objective. Поля провенанса (velocity_source/objective_coverage_pct/proxy_used/proxy_sqm_per_deal) уже доходили до пропсов. Заодно убран хардкод bg-amber-* → viz-токены.
AnalysisPageContent.tsx a11y: <h1> (PageHeading) во ВСЕХ 3 состояниях (loading/error/success) — раньше только в success
forecast-helpers.ts cleanup: удалён неиспользуемый export confidenceLevelToValue (#1926 latent risk); ConfidenceLevel-импорт оставлен (ещё используется)

Verify

  • code-review APPROVE (velocity-disclosure логика cross-checked vs velocity.py: source↔proxy coupling точный, none-state edge безопасен — блок вложен в dataAvailable; viz-токены чисты; один h1/состояние; backend backward-compat; dead-code removal подтверждён)
  • backend ruff + 39 тестов · frontend type-check + eslint + vitest 200 passed
  • codegen канонический (диф vs main = ровно 6 строк, без reorder)

LIVE-поверхность: AnalysisPageContent → Section1..6 (НЕ откатанный /ptica кокпит).

## Контекст Site-finder подмножество остатка аудита #1871 (тикет #1926), тема data-honesty эпика #1953. units_sold-пункт #1926 уже закрыт ранее (#2054 inline `_SOLD_COUNT_SQL`); tradein-пункты (#2007-зона) вне scope. ## Изменения | Файл | Что | |---|---| | `parcels.py` + `schemas/parcel.py` | invest_score: machine-readable `score_is_advisory: true` + `score_advisory{kind:'poi_density_heuristic', scale_min:0, scale_max:SCORE_MAX_REFERENCE}` в analyze-payload + `AnalyzeResponse` (optional, backward-compat). Явно помечает score как POI-эвристику, не абсолютный рейтинг. | | `api-types.ts` | +6 строк, регенерён **каноническим CI-пайплайном** (app.openapi()→openapi-typescript→prettier) — `openapi-codegen-check` пройдёт | | `VelocityBlock.tsx` | Velocity data-honesty: позитивный бейдж «Источник: Objective» (velocity_source==='objective') + видимый `--warn-soft` caveat (role=note) когда объём по прокси/кад.кварталу, а НЕ прямые продажи Objective. Поля провенанса (velocity_source/objective_coverage_pct/proxy_used/proxy_sqm_per_deal) уже доходили до пропсов. Заодно убран хардкод `bg-amber-*` → viz-токены. | | `AnalysisPageContent.tsx` | a11y: `<h1>` (PageHeading) во ВСЕХ 3 состояниях (loading/error/success) — раньше только в success | | `forecast-helpers.ts` | cleanup: удалён неиспользуемый export `confidenceLevelToValue` (#1926 latent risk); ConfidenceLevel-импорт оставлен (ещё используется) | ## Verify - ✅ code-review **APPROVE** (velocity-disclosure логика cross-checked vs `velocity.py`: source↔proxy coupling точный, none-state edge безопасен — блок вложен в `dataAvailable`; viz-токены чисты; один h1/состояние; backend backward-compat; dead-code removal подтверждён) - ✅ backend ruff + 39 тестов · frontend type-check + eslint + **vitest 200 passed** - ✅ codegen канонический (диф vs main = ровно 6 строк, без reorder) LIVE-поверхность: `AnalysisPageContent` → Section1..6 (НЕ откатанный `/ptica` кокпит).
bot-backend added 1 commit 2026-06-29 06:27:40 +00:00
fix(site-finder): invest-score advisory flag + velocity data-honesty + h1 a11y (#1926)
All checks were successful
CI / changes (pull_request) Successful in 8s
CI / frontend-tests (pull_request) Successful in 1m14s
CI / openapi-codegen-check (pull_request) Successful in 2m12s
CI / backend-tests (pull_request) Successful in 14m24s
5d6895127b
Остаток аудита #1871 (#1926), тема data-honesty #1953.

- invest_score: machine-readable score_is_advisory + score_advisory
  {kind=poi_density_heuristic, scale_min/scale_max=SCORE_MAX_REFERENCE} в
  analyze-payload + AnalyzeResponse (optional, backward-compat) + регенерён
  api-types.ts. Явно помечает score как POI-эвристику, не абсолютный рейтинг.
- velocity (Section3 VelocityBlock): явный провенанс объёма — бейдж
  «Источник: Objective» + видимый --warn-soft caveat когда объём по прокси/
  кад.кварталу, а не прямые продажи Objective. Поля провенанса уже доходили.
- a11y: <h1> во всех состояниях страницы анализа (был только в success).
- cleanup: удалён неиспользуемый export confidenceLevelToValue (latent risk).

units_sold-пункт #1926 закрыт ранее (#2054 inline _SOLD_COUNT_SQL).
bot-backend merged commit a35d42f1c7 into main 2026-06-29 06:42:51 +00:00
bot-backend deleted branch fix/sitefinder-honesty-polish-1926 2026-06-29 06:42:51 +00:00
Sign in to join this conversation.
No reviewers
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#2094
No description provided.