UX X2: Confidence score (data freshness + coverage) #48

Closed
opened 2026-05-11 20:18:00 +00:00 by lekss361 · 0 comments
lekss361 commented 2026-05-11 20:18:00 +00:00 (Migrated from github.com)

Эшелон: 🟣 Explainability / UX

Контекст / проблема

Сейчас score выдаётся одинаково уверенно для участков с богатыми данными и для участков с дефицитом. Это неправда — если в radius 3км нет аналогов sale_graph, velocity = wild guess. Нужен confidence-индикатор.

Что сделать

Backend

  1. Скаляр confidence: float (0..1) в analyze response — composite из:
    • POI freshness: % POI с last_osm_edit_date > NOW() - 2 years
    • ПЗЗ coverage: есть ли zone_code для участка (после G1)
    • ВРИ coverage: не NULL ли permitted_use (после G2)
    • Velocity coverage: count аналогов в 3км (после D2), threshold 3
    • Price ground truth: есть ли mv_quarter_price_per_m2 для quarter (после D1), threshold deals_count >= 5
  2. Per-section confidence: разные scores для gate, demand, accessibility (так как coverage разный)
  3. confidence_label: high (>0.75) / medium (0.4-0.75) / low (<0.4)
  4. confidence_caveats: list of strings, e.g. «Нет аналогов sale_graph в 3км — velocity score ненадёжен»

Frontend

  1. Confidence badge возле score (color-coded — green/yellow/red)
  2. Caveats — bullet list под score breakdown
  3. Tooltips на metrics с низкой confidence

Acceptance

  • Центр ЕКБ → confidence high (плотные данные)
  • Окраина без аналогов → confidence low + caveats объясняют почему
  • Caveats прячутся если confidence high

Owner

backend-engineer + frontend-engineer

Effort

1 день

Dependencies

  • Косвенно от G1, G2, D1, D2 (нужны эти данные чтобы оценить coverage)
  • Можно делать stub-версию параллельно
**Эшелон:** 🟣 Explainability / UX ## Контекст / проблема Сейчас score выдаётся **одинаково уверенно** для участков с богатыми данными и для участков с дефицитом. Это неправда — если в radius 3км нет аналогов sale_graph, velocity = wild guess. Нужен confidence-индикатор. ## Что сделать ### Backend 1. Скаляр `confidence: float` (0..1) в analyze response — composite из: - **POI freshness:** % POI с `last_osm_edit_date > NOW() - 2 years` - **ПЗЗ coverage:** есть ли zone_code для участка (после G1) - **ВРИ coverage:** не NULL ли permitted_use (после G2) - **Velocity coverage:** count аналогов в 3км (после D2), threshold 3 - **Price ground truth:** есть ли `mv_quarter_price_per_m2` для quarter (после D1), threshold deals_count >= 5 2. Per-section confidence: разные scores для gate, demand, accessibility (так как coverage разный) 3. `confidence_label`: high (>0.75) / medium (0.4-0.75) / low (<0.4) 4. `confidence_caveats`: list of strings, e.g. «Нет аналогов sale_graph в 3км — velocity score ненадёжен» ### Frontend 1. Confidence badge возле score (color-coded — green/yellow/red) 2. Caveats — bullet list под score breakdown 3. Tooltips на metrics с низкой confidence ## Acceptance - [ ] Центр ЕКБ → confidence high (плотные данные) - [ ] Окраина без аналогов → confidence low + caveats объясняют почему - [ ] Caveats прячутся если confidence high ## Owner `backend-engineer` + `frontend-engineer` ## Effort 1 день ## Dependencies - Косвенно от G1, G2, D1, D2 (нужны эти данные чтобы оценить coverage) - Можно делать stub-версию параллельно
Sign in to join this conversation.
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#48
No description provided.