gendesign/backend
Light1YT af5e730438
All checks were successful
CI / frontend-tests (pull_request) Has been skipped
CI / changes (push) Successful in 7s
CI / frontend-tests (push) Has been skipped
CI / changes (pull_request) Successful in 7s
CI / openapi-codegen-check (push) Successful in 1m57s
CI / openapi-codegen-check (pull_request) Successful in 1m50s
CI / backend-tests (push) Successful in 8m53s
CI / backend-tests (pull_request) Successful in 8m51s
perf(site-finder): pushdown obj_pricing CTE to nearby competitors in analyze (#70, #307)
obj_pricing (OBJ-3 #1332) агрегировал objective_lots (2.1ГБ) по всем ~286
маппингам через GROUP BY domrf_obj_id, но LEFT JOIN потреблял только ~43
ближних (3км) obj_id — далёкие медианы считались и выбрасывались.

Добавлен nearby_obj CTE (3км-множество считается раз), obj_pricing scoped
через WHERE cm.domrf_obj_id IN (SELECT obj_id FROM nearby_obj), финальный
SELECT идёт FROM nearby_obj → scope == потребляемое множество. Планировщик
теперь bitmap index scan вместо full parallel seq scan.

Прод EXPLAIN (центр ЕКБ): ~700мс→~290мс, objective_lots buffer reads
212658→20561 (~10x). Байт-идентично: per-obj_id агрегаты независимы,
0 расхождений на 43 ближних группах. Цена/fallback не тронуты (scope-only).
Регрешн-гард против отката к full-table агрегации.

Refs #70
2026-06-14 21:48:47 +05:00
..
alembic ops: alembic baseline, pre-commit, TIGER cleanup, pg_dump scripts 2026-04-26 13:08:51 +03:00
app perf(site-finder): pushdown obj_pricing CTE to nearby competitors in analyze (#70, #307) 2026-06-14 21:48:47 +05:00
db/init ops: alembic baseline, pre-commit, TIGER cleanup, pg_dump scripts 2026-04-26 13:08:51 +03:00
output feat(geo): NSPD bulk-fetcher без Playwright + resume-friendly UI 2026-05-11 08:53:28 +03:00
scripts fix(backtest): add binomial significance gate to §9.6 verdict 2026-06-04 16:42:45 +05:00
tests perf(site-finder): pushdown obj_pricing CTE to nearby competitors in analyze (#70, #307) 2026-06-14 21:48:47 +05:00
.dockerignore fix(scraper): диагностируем «кнопка не работает» — Redis lock + task_received log 2026-04-28 23:17:42 +03:00
.env.example refactor(security): убрать X-Admin-Token (Caddy basic_auth достаточен) (#437) 2026-05-23 10:41:22 +00:00
.env.runtime.example sprint1: nspd scraper industrialization, per-bucket elasticity, cadastre cross-check, sentry releases 2026-04-30 21:51:19 +03:00
alembic.ini ops: alembic baseline, pre-commit, TIGER cleanup, pg_dump scripts 2026-04-26 13:08:51 +03:00
debug.log feat(geo): NSPD bulk-fetcher без Playwright + resume-friendly UI 2026-05-11 08:53:28 +03:00
Dockerfile feat(sf): OCR-пайплайн изъятия ЕКБ (Tesseract rus) → land_reservation (#1062) 2026-06-07 18:07:06 +03:00
pyproject.toml ci(infra): coverage-gate (#68) + OpenAPI codegen-assert (#69) + uptime monitoring (#75) 2026-06-13 23:28:06 +05:00
uv.lock ci(infra): coverage-gate (#68) + OpenAPI codegen-assert (#69) + uptime monitoring (#75) 2026-06-13 23:28:06 +05:00