gendesign/.claude/rules
Light1YT 1f30e3d234 fix(mv): weighted AVG в mv_layout_velocity (#295)
naive AVG() over objective_corpus_room_month rows gives equal weight to
zero-deal months, diluting per-project averages by 2-10x. Projects with
sparse deal history (e.g. 5 active months out of 24) were shown avg_area
≈27m² instead of the correct ≈81m² for 3-room flats.

Replace both aggregates with SUM(val*cnt)/NULLIF(SUM(cnt),0) so only
months with actual deals contribute weight. NULLIF prevents division-by-zero
and returns NULL for all-zero projects instead of a misleading 0.

Prod check (Vitamin-квартал на Титова, last 24 mo): studio 26m²/176k,
1-rm 37m²/174k, 2-rm 56m²/135k, 3-rm 81m²/136k — matches expected ranges.
2026-05-28 18:23:55 +05:00
..
backend.md chore(claude-rules): promote 3 deferred feedback rules from memory (#496) 2026-05-24 09:01:27 +00:00
deploy.md chore(claude-rules): promote 3 deferred feedback rules from memory (#496) 2026-05-24 09:01:27 +00:00
frontend.md chore(claude-rules): promote 3 deferred feedback rules from memory (#496) 2026-05-24 09:01:27 +00:00
git-pr.md chore(rules): add decision date to self-extending guard (review #506 fixup) 2026-05-24 14:10:53 +03:00
sql.md fix(mv): weighted AVG в mv_layout_velocity (#295) 2026-05-28 18:23:55 +05:00
ui-conventions.md chore(claude-config): align with 2026 best practices (#495) 2026-05-24 08:48:42 +00:00
ui-microcopy.md chore(claude-config): align with 2026 best practices (#495) 2026-05-24 08:48:42 +00:00
ui-tokens.md chore(claude-config): align with 2026 best practices (#495) 2026-05-24 08:48:42 +00:00