|
All checks were successful
CI / changes (push) Successful in 7s
CI / changes (pull_request) Successful in 8s
CI / frontend-tests (push) Successful in 1m5s
CI / frontend-tests (pull_request) Successful in 59s
CI / openapi-codegen-check (push) Successful in 2m10s
CI / openapi-codegen-check (pull_request) Successful in 1m39s
CI / backend-tests (push) Successful in 9m2s
CI / backend-tests (pull_request) Successful in 8m56s
competitors._AVG_PRICE_SQL читает domrf_kn_flats.price_per_m2, но на последнем
snapshot эта колонка пуста (0 строк, скрапер перестал отдавать per-flat цены
~2026-06-03) -> avg_price_per_m2=None почти всем конкурентам, price_similarity
вырождается в нейтраль 0.5. Добавлен additive fallback: где domrf-цены нет,
берём медиану objective_lots.price_per_m2_rub через objective_complex_mapping
(1:1 мост, ~80% покрытие, прод-median 136k руб/м²). domrf-цены приоритетны
(precedence domrf > objective); новое поле price_source ('domrf'/'objective')
для прозрачности инвест-рекомендаций. Веса и mv_layout_velocity не тронуты
(#295 defer). Медиана (не weighted-avg) устойчива к хвостам. api-types.ts
regenerated (v7.13.0 pinned + prettier).
Refs #307
|
||
|---|---|---|
| .. | ||
| __init__.py | ||
| test_admin_cadastre.py | ||
| test_admin_ekburg_permits.py | ||
| test_admin_jobs_settings.py | ||
| test_admin_scrape_freshness.py | ||
| test_analyze_competitors_status.py | ||
| test_analyze_inline_weights.py | ||
| test_analyze_market_price.py | ||
| test_analyze_parcel_meta.py | ||
| test_analyze_recent_permits.py | ||
| test_chat.py | ||
| test_custom_pois.py | ||
| test_insights.py | ||
| test_locations.py | ||
| test_own_projects.py | ||
| test_parcel_best_layouts.py | ||
| test_parcel_by_bbox.py | ||
| test_parcel_competitors.py | ||
| test_parcel_connection_points.py | ||
| test_parcels_forecast.py | ||
| test_run_history_and_response_contract.py | ||