|
All checks were successful
Deploy / build-worker (push) Successful in 3m1s
CI / changes (push) Successful in 6s
CI / frontend-tests (push) Has been skipped
CI / changes (pull_request) Successful in 5s
CI / frontend-tests (pull_request) Has been skipped
CI / backend-tests (push) Successful in 6m32s
CI / backend-tests (pull_request) Successful in 6m24s
Deploy / changes (push) Successful in 7s
Deploy / build-frontend (push) Has been skipped
Deploy / build-backend (push) Successful in 2m1s
Deploy / deploy (push) Successful in 1m25s
Feed candidate_unit_mix into _build_cannibalization (mirrors how #1169 fed candidate_release_month from the launch window), completing §25.3 to all 4 axes: class + price + timing + unit-mix, plus geo weight. - candidate mix from recommend_mix "buckets[].share_pct" (same rule-based квартирография as §22 product_tz), extracted + normalized to {bucket: share}. - _canonical_room_bucket folds recommend_mix RU labels ("1-к 30-45", "80+ м²") and manual own_planned_project Latin keys ("1k") into one room-count space — without it the L1 similarity would silently be 0 (disjoint keys). - recommend_mix is HEAVY, so it's GATED: derived only when the own-portfolio has >=1 project with a non-empty unit_mix; get_own_portfolio fetched once in compute_special_indices and threaded into _build_cannibalization (no double fetch). With OWN_DEVELOPER_IDS unset (portfolio empty) → zero added cost on the hot §22 report path. - Graceful (recommend_mix None/empty/raises → axis excluded, None-not-0), deterministic. Unit-mix only fires for manual-future own-projects with a mix (domrf-current carry unit_mix=None) — expected narrowness, documented. 205 tests; ruff + mypy clean. Scope: special_indices.py + test only; no deps. Refs #1169 |
||
|---|---|---|
| .. | ||
| api | ||
| fixtures | ||
| integration | ||
| scrapers | ||
| scripts | ||
| services | ||
| smoke | ||
| sql | ||
| workers | ||
| __init__.py | ||
| conftest.py | ||
| test_admin_weight_profiles.py | ||
| test_audit_middleware.py | ||
| test_concepts_stub.py | ||
| test_ekb_geoportal_client.py | ||
| test_gate_verdict.py | ||
| test_health.py | ||
| test_layout_signature.py | ||
| test_layout_tz_pdf.py | ||
| test_nspd_client.py | ||
| test_nspd_sync.py | ||
| test_ping.py | ||
| test_poi_score.py | ||
| test_quarter_dump_lookup.py | ||
| test_rbac.py | ||
| test_sentry_init.py | ||
| test_velocity.py | ||
| test_weight_profiles.py | ||