UX X4: Multi-cad сравнение (2-5 участков side-by-side) #50

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

Эшелон: 🟣 Explainability / UX

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

Девелопер обычно выбирает между 3-5 вариантами. Сейчас каждый анализ — отдельный clicks-cycle, нет sticky-сравнения. Multi-cad comparison killer-feature для встреч.

Что сделать

Frontend

  1. Новая страница /site-finder/compare
  2. Input: 2-5 cad-номеров (вводимых либо drag из shortlist)
  3. Layout: table-like, rows = факторы, cols = участки:
    | Фактор              | Участок A | Участок B | Участок C |
    | Gate verdict        | ✅ ok     | ⚠ warn   | ❌ blocked|
    | Score (comfort)     | 18.3      | 12.1      | -         |
    | Velocity score      | 8.5       | 5.2       | -         |
    | Median price/m²     | 145K      | 110K      | -         |
    | Pipeline 24mo       | 1200 fl   | 2800 fl   | -         |
    | Confidence          | high      | medium    | -         |
    
  4. Highlight wins (зелёная подсветка лучшего по каждой строке)
  5. Save shortlist в localStorage (per session)

Backend

  1. Endpoint POST /api/v1/parcels/batch/analyze принимающий cad_nums: list[str]
  2. Reuse single-analyze logic, parallel execution через asyncio.gather (max 5 одновременно)

Acceptance

  • 3 cad сравниваются в одной таблице
  • Highlight winner per row
  • localStorage persistence в случае reload
  • Batch endpoint <5s для 5 cad

Owner

frontend-engineer (compare UI) + backend-engineer (batch endpoint)

Effort

1.5 дня

Dependencies

— (можно делать параллельно)

Risks / open

  • При batch у каждого может разный coverage — нужно «—» для отсутствующих метрик
**Эшелон:** 🟣 Explainability / UX ## Контекст / проблема Девелопер обычно выбирает между 3-5 вариантами. Сейчас каждый анализ — отдельный clicks-cycle, нет sticky-сравнения. Multi-cad comparison killer-feature для встреч. ## Что сделать ### Frontend 1. Новая страница `/site-finder/compare` 2. Input: 2-5 cad-номеров (вводимых либо drag из shortlist) 3. Layout: table-like, rows = факторы, cols = участки: ``` | Фактор | Участок A | Участок B | Участок C | | Gate verdict | ✅ ok | ⚠ warn | ❌ blocked| | Score (comfort) | 18.3 | 12.1 | - | | Velocity score | 8.5 | 5.2 | - | | Median price/m² | 145K | 110K | - | | Pipeline 24mo | 1200 fl | 2800 fl | - | | Confidence | high | medium | - | ``` 4. Highlight wins (зелёная подсветка лучшего по каждой строке) 5. Save shortlist в localStorage (per session) ### Backend 1. Endpoint `POST /api/v1/parcels/batch/analyze` принимающий `cad_nums: list[str]` 2. Reuse single-analyze logic, parallel execution через `asyncio.gather` (max 5 одновременно) ## Acceptance - [ ] 3 cad сравниваются в одной таблице - [ ] Highlight winner per row - [ ] localStorage persistence в случае reload - [ ] Batch endpoint <5s для 5 cad ## Owner `frontend-engineer` (compare UI) + `backend-engineer` (batch endpoint) ## Effort 1.5 дня ## Dependencies — (можно делать параллельно) ## Risks / open - При batch у каждого может разный coverage — нужно «—» для отсутствующих метрик
Owner

Status update — НЕ реализовано. Страница /site-finder/compare отсутствует. Endpoint POST /api/v1/parcels/batch/analyze тоже не добавлен.

Issue остаётся в backlog priority/normal. ~1.5 дня после стабилизации single-cad analyze.

Status update — НЕ реализовано. Страница `/site-finder/compare` отсутствует. Endpoint `POST /api/v1/parcels/batch/analyze` тоже не добавлен. Issue остаётся в backlog priority/normal. ~1.5 дня после стабилизации single-cad analyze.
Sign in to join this conversation.
No project
No assignees
2 participants
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#50
No description provided.