fix(sql): dedup deals-to-district assignment in ekb districts median refresh (#1352) #1678

Merged
lekss361 merged 1 commit from fix/district-median-dedup-1352 into main 2026-06-17 17:45:33 +00:00
Owner

Проблема (#1352)

67_refresh_ekb_districts_median.sql использовал ST_Intersects-join без dedup → сделка на границе района считалась в нескольких районах, искажая медианы.

Решение

Новая миграция 160_refresh_ekb_districts_median_dedup.sql (67 уже применена на прод, нельзя править in-place). CREATE OR REPLACE функции: ST_IntersectsST_Within(ST_Centroid(cq.geom), d.geom) + DISTINCT ON (cq.cad_number) → каждый квартал ровно в одном районе. Сигнатура (window_months, min_deals) не изменена — все вызовы работают без правок.

Verify (prod, окно 24 мес)

Метод пар квартал-район дублей deal-rows
ST_Intersects 2482 85 2945
ST_Within(centroid) 2396 0 2638

307 ложных назначений устранено. Зависимых view/FK нет (pg_depend пуст).

Closes #1352

## Проблема (#1352) `67_refresh_ekb_districts_median.sql` использовал `ST_Intersects`-join без dedup → сделка на границе района считалась в нескольких районах, искажая медианы. ## Решение Новая миграция `160_refresh_ekb_districts_median_dedup.sql` (67 уже применена на прод, нельзя править in-place). `CREATE OR REPLACE` функции: `ST_Intersects` → `ST_Within(ST_Centroid(cq.geom), d.geom)` + `DISTINCT ON (cq.cad_number)` → каждый квартал ровно в одном районе. Сигнатура `(window_months, min_deals)` не изменена — все вызовы работают без правок. ## Verify (prod, окно 24 мес) | Метод | пар квартал-район | дублей | deal-rows | |---|---|---|---| | ST_Intersects | 2482 | **85** | 2945 | | ST_Within(centroid) | 2396 | **0** | 2638 | 307 ложных назначений устранено. Зависимых view/FK нет (`pg_depend` пуст). Closes #1352
lekss361 added 1 commit 2026-06-17 17:31:21 +00:00
fix(sql): dedup deals-to-district assignment in ekb districts median refresh (#1352)
Some checks failed
CI / changes (push) Successful in 9s
CI / changes (pull_request) Successful in 6s
CI / frontend-tests (push) Has been skipped
CI / openapi-codegen-check (push) Successful in 1m56s
CI / backend-tests (push) Failing after 9m1s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 1m44s
CI / backend-tests (pull_request) Failing after 9m12s
04d1a64e25
Replace ST_Intersects(district.geom, quarter.geom) with ST_Within(ST_Centroid(quarter.geom), district.geom)
so each cadastral quarter is assigned to exactly one district. Eliminates 85 double-counted quarter-district
pairs and 307 spurious deal-district rows that were skewing PERCENTILE_CONT medians. Function signature
unchanged; no backend code changes required.
lekss361 merged commit ba83c36bf4 into main 2026-06-17 17:45:33 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
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#1678
No description provided.