feat(concept): picker «выбери дом» + каталог-эндпоинт — Stage 3b, финал #1965 #2030
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#2030
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/concept-house-picker-1965-stage3b"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
#1965 Stage 3b (эпик #1953) — финал фичи: UI выбора типов домов вместо авто max-FAR-застройки. code-reviewer ✅ APPROVE. Аддитивно.
Что
GET /api/v1/concepts/house-types(concepts.py) — каталог как single source of truth (без хардкода на фронте); схемыHouseTypeCatalog/HouseTypeCatalogItem(1:1 с catalog.py). Тест пинит: ключи каталога ==available_section_types()(защита от 422-дрейфа picker↔валидатор).HouseProgramPicker.tsx(new): тумблер «Авто (max-FAR)» (дефолт → building_program опущен → greedy без изменений) / «Выбрать дома» (строки каталога: count 1-50 / floors 1-40, дефолт-этажность из каталога, helper-текст footprint/класс). Смонтирован в Section7 + /concept.useHouseTypesTanStack): в pick-режиме с непустым списком →[{section_type,floors,count}]в create_concept; иначеundefined→ greedy byte-identical (no-regression проверено с обеих сторон).placed_count<requested_count→ нейтральная нота «Разместилось N из M секций» (только program-режим, null-safe).Качество
:name::type; backendpytest -k concept/house_type16 passed; tsc/next lint/prettier 3.9.0 clean.Закрывает #1965 целиком (Stage 1 консолидация + Stage 2 живой 3D-пересчёт + Stage 3 каталог/выбор домов). Closes #1965.