|
All checks were successful
CI / changes (push) Successful in 6s
CI / changes (pull_request) Successful in 6s
CI / frontend-tests (push) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / backend-tests (push) Successful in 6m30s
CI / backend-tests (pull_request) Successful in 6m27s
domrf_kn_flats версионируется (UNIQUE(id, snapshot_date), м.50), scraper UPSERT per snapshot — то же что для domrf_kn_objects (которое в L3 supply после #1212 берём только latest). _AVG_PRICE_SQL фильтра snapshot_date НЕ имел → AVG усреднял ИСТОРИЮ цен (stale на растущем рынке) → UI-поле Competitor.avg_price_per_m2 + вход _price_similarity получали устаревшую цену. COUNT '%прод%' множил sold ×N снапшотов → raw_sold/flat_count кратно завышен → попадал в гард-нейтраль 0.5 или искажал stage_at_horizon как ×N-завышенный sold_pct. Patch: WHERE f.snapshot_date = (SELECT MAX(snapshot_date) FROM domrf_kn_flats). Зеркало паттерна best_layouts._SUPPLY_BATCH_SQL и _COMPETITORS_SQL DISTINCT ON (уже было latest). 51/51 competitors-тестов зелёные. Closes #1210 |
||
|---|---|---|
| .. | ||
| alembic | ||
| app | ||
| db/init | ||
| output | ||
| scripts | ||
| tests | ||
| .dockerignore | ||
| .env.example | ||
| .env.runtime.example | ||
| alembic.ini | ||
| debug.log | ||
| Dockerfile | ||
| pyproject.toml | ||
| uv.lock | ||