fix(sf-07): median_12m alias + UI 12mo hint #280
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#280
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/sf-07-median-12m-alias"
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
SF FixList #7 (Wave 2) —
district.median_price_per_m2отдавал 24-мес median изekb_districts. Теперь LEFT JOIN наmv_quarter_price_per_m2по кадастровому кварталу +COALESCE(mq.median_12m, d.median_price_per_m2)→ 12-мес value где доступно, fallback на legacy для кварталов без покрытия в MV.Изменения
backend/app/api/v1/parcels.py~line 1190:LEFT JOIN mv_quarter_price_per_m2 mq ON mq.quarter_cad_number = REGEXP_REPLACE(:cad_num, ':[^:]+$', '')COALESCE(mq.median_12m, d.median_price_per_m2) AS median_price_per_m2frontend/src/components/site-finder/OverviewTab.tsx~line 78:<span className="text-xs text-slate-500 ml-1">(12 мес)</span>рядом со значениемfixes/Fix_SF_Median_12m_Alias_May17.mdTest plan
GET /api/v1/parcels/66:41:0702048:27/analyze→district.median_price_per_m2≈ 146 809 (изmv_quarter_price_per_m2.median_12mдля квартала66:41:0702048)ekb_districts.median_price_per_m2(не NULL)Related: epic #271 item #7 · Wave 2 first
Merged via deep-code-reviewer — verdict APPROVE.
Проверено:
mv_quarter_price_per_m2существует, unique index наquarter_cad_number(PK) → JOIN Index Scan, cost ~0.29..8.31REGEXP_REPLACE(:cad_num, ':[^:]+$', '')— корректно strip'ает:27из66:41:0702048:27→66:41:0702048COALESCE(mq.median_12m, d.median_price_per_m2)— корректный fallback на legacy 24-месfixes/Fix_SF_Median_12m_Alias_May17.mdприсутствуетnumber | null), backward compat OKSmoke после deploy:
GET /api/v1/parcels/66:41:0702048:27/analyze→district.median_price_per_m2≈ 146 809 (из MV)Potential follow-up (MINOR, не блокирующий):
ekb_districts. Желательно вернуть backend-флагis_12mo: boolи conditional rendering на фронте, чтобы не вводить пользователя в заблуждение для кварталов без покрытия MV.psycopg v3: bind:cad_num— Python str, REGEXP_REPLACE принимает text, CAST не требуется.