fix(best-layouts): avg_area_m2 = NULL вместо 0 при пустом окне сделок (#2867) #3018
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
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#3018
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/2867-avg-area-nullable"
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?
Summary
deals_per_bucket.avg_area_m2: убранCOALESCE(SUM/NULLIF(...),0)— при нуле сделок за окно было «0.0 м²» как измеренное значение, и этот же 0 тянул вниз взвешенную среднюю по room_bucket (mix). Выравнено с соседнейavg_price_per_m2_rub, которая уже NULL (#2464-B).TopLayoutRow.avg_area_m2: float | None; сборка строк и mix-взвешивание пропускают None (свой знаменательrb_area_total_deals); PDF-ТЗ рисует «—»; фронтnull → «—»;api-types.tsрегенерирован (ровно 1 строка).'н/д') уже был починен ранее — остался только контракт avg_area_m2.Test plan
tests/test_2867_avg_area_nullable.py: 5/5 красных на origin/main по значению (COALESCE в SQL, float-схема, 0 в сборке, 0 в mix, 0.0 в PDF) → 5/5 зелёных с правкой. Гейт по SQL смотрит только код (строки-комментарии--вырезаны — иначе спорил бы с собственным объяснением правки).-k "best_layouts or layout_tz or 2867"— 102 passed, 1 skipped.tsc --noEmit— 0 ошибок; prettier/ruff чистые./analyzeучастка с пустым окном по какому-то бакету →avg_area_m2: nullв ответе, «—» в таблице.Closes #2867
prune -afубиваетcompose pullдеплоя ПТИЦЫ (разные группы concurrency, один докер-демон) #2950