Commit graph

  • b60df61f6a Merge pull request 'refactor(tradein/estimator): extract deterministic pricing into pure _price_from_inputs (#1966 foundation)' (#1976) from refactor/tradein-estimator-price-spine into main lekss361 2026-06-27 10:13:33 +00:00
  • 453a1f08da fix(report): newbuild-consistent district median + obj_class dedup (#1953) Light1YT 2026-06-27 15:10:49 +05:00
  • 845f699176 chore(claude-config): secret-read + psycopg2 hooks, tradein.md rule, tradein-mvp globs (#1975) lekss361 2026-06-27 10:03:19 +00:00
  • b73161a133 chore(claude-config): secret-read + psycopg2 hooks, tradein.md rule, tradein-mvp globs bot-backend 2026-06-27 13:02:30 +03:00
  • 2ea49b637f refactor(tradein/estimator): extract deterministic pricing into pure _price_from_inputs (#1966 foundation) bot-backend 2026-06-27 13:00:21 +03:00
  • 24a80ee0cf wip: extract pricing spine (pre-test) bot-backend 2026-06-27 12:51:14 +03:00
  • 3b7e1dc27f Merge pull request 'chore(claude-config): self-merge policy (Mera/Ptica) + config-audit fixes' (#1974) from chore/claude-config-audit into main lekss361 2026-06-27 09:48:29 +00:00
  • f1f49176f5 chore(claude-config): self-merge policy (Mera/Ptica) + config-audit fixes bot-backend 2026-06-27 12:44:47 +03:00
  • ebdbedcabb Merge pull request 'fix(report): EGRN площадь/обновлено + forecast-confidence dedup + ЗОУИТ типизация (#1954 #1958 #1957)' (#1973) from fix/report-quickwins-1953 into main bot-backend 2026-06-27 09:34:44 +00:00
  • bd1ed4861c docs(zouit): уточнить DISTINCT ON-комментарий + убрать stale cad_zouit из FE-типа (#1957) Light1YT 2026-06-27 14:21:01 +05:00
  • 76647bb4cf fix(report): площадь/обновлено EGRN, forecast-confidence dedup, ЗОУИТ типизация (#1953) Light1YT 2026-06-27 14:14:40 +05:00
  • 1123f38149 Merge pull request 'fix(scrapers): cian full_load anti-zombie + avito changeip-resilience & честный статус (#1949 #1950)' (#1952) from fix/scraper-resilience-cian-zombie-avito-changeip into main lekss361 2026-06-27 08:38:10 +00:00
  • e24d3cf4be fix(scrapers): cian full_load anti-zombie — per-fetch wait_for + heartbeat внутри бакета (#1949) bot-backend 2026-06-27 11:32:42 +03:00
  • 757f6486f5 fix(scrapers): avito changeip-resilience (retry короткими попытками) + честный статус когда SERP отработал (#1950) bot-backend 2026-06-27 11:24:54 +03:00
  • d87641ac29 Merge pull request 'fix(freshness): output-floor on cycle-SUM over fresh_days window (#1945, #1947)' (#1948) from feat/freshness-output-floor into main bot-backend 2026-06-27 07:50:04 +00:00
  • c646a71001 fix(freshness): output-floor on cycle-SUM over fresh_days window (#1945, #1947) Light1YT 2026-06-27 12:36:50 +05:00
  • 9c9b50ceca Merge pull request 'feat(freshness): zero-output check + kn_flats source — catch "ran but produced nothing" (#1945)' (#1947) from feat/freshness-zero-output-check into main lekss361 2026-06-27 07:02:51 +00:00
  • bd1adc1f59 feat(freshness): zero-output check + kn_flats source (#1945) Light1YT 2026-06-27 11:52:29 +05:00
  • 1fb33e20dd Merge pull request 'perf(estimate): trigram expr index for same-building anchor Tier A (~94x)' (#1946) from perf/tradein-estimate-audit into main bot-backend 2026-06-27 06:18:01 +00:00
  • 8d5c1a888d perf(estimate): trigram expression index for same-building anchor Tier A (~94x) perf/tradein-estimate-audit Light1YT 2026-06-27 11:16:48 +05:00
  • 7f2aa20be3 Merge pull request 'fix(site_finder): correct best-layouts supply fan-out (~8.5x) + objects-first perf' (#1944) from perf/best-layouts-objects-first into main bot-backend 2026-06-27 05:58:38 +00:00
  • 7533bc333b fix(site_finder): correct best-layouts supply fan-out + objects-first perf perf/best-layouts-objects-first Light1YT 2026-06-27 10:45:19 +05:00
  • d9a4228c6d Merge pull request 'fix(perf): move migration 171 to repo-root data/sql/ so deploy applies it' (#1943) from fix/171-migration-path into main bot-backend 2026-06-27 05:19:39 +00:00
  • 23cc188972 fix(perf): move migration 171 to repo-root data/sql/ so the deploy applies it fix/171-migration-path Light1YT 2026-06-27 10:06:33 +05:00
  • 47fe8e2469 Merge pull request 'perf(analyze): partial index on objective_corpus_room_month (~3.8x on hot velocity baseline)' (#1942) from perf/171-objective-crm-report-month-idx into main bot-backend 2026-06-27 05:02:41 +00:00
  • 116af2ebc1 perf(analyze): partial index on objective_corpus_room_month for EKB velocity baseline perf/171-objective-crm-report-month-idx Light1YT 2026-06-27 09:49:39 +05:00
  • fc61fee15e Merge pull request 'fix(backend): emit app.* INFO logs to stdout on the API process (#1926)' (#1941) from fix/1926-app-log-stdout into main bot-backend 2026-06-27 02:59:08 +00:00
  • eab7e3b9f3 fix(backend): emit app.* INFO logs to stdout on the API process (#1926) fix/1926-app-log-stdout Light1YT 2026-06-27 07:43:49 +05:00
  • 264701a4e4 Merge pull request 'fix(estimator): deterministic comp tie-breaker + n_analogs counts priced analogs' (#1939) from fix/estimator-tiebreaker-nanalogs into main bot-backend 2026-06-27 00:58:15 +00:00
  • bcdc7ccb04 fix(estimator): deterministic comp tie-breaker + n_analogs counts priced analogs fix/estimator-tiebreaker-nanalogs Light1YT 2026-06-27 05:57:04 +05:00
  • 5968d78049 Merge pull request 'fix(tradein-browser): in-page fetch retry + settle tuning for /fetch-json (#1917)' (#1938) from fix/1917-fetch-json-network-retry into main bot-backend 2026-06-27 00:31:20 +00:00
  • 2687f75b92 fix(tradein-browser): in-page fetch retry + configurable settle for /fetch-json (#1917) fix/1917-fetch-json-network-retry Light1YT 2026-06-27 05:30:16 +05:00
  • dfdd978528 Merge pull request 'test(tradein): cover avito/cian + mark_failed total_seen persistence (#1926)' (#1937) from fix/1926-scrape-runs-total-seen into main bot-backend 2026-06-27 00:17:23 +00:00
  • 8bb302aadf test(tradein): cover avito/cian + mark_failed total_seen/new_count persistence (#1926) fix/1926-scrape-runs-total-seen Light1YT 2026-06-27 05:16:14 +05:00
  • a246044583 Merge pull request 'fix(tradein): backfill house_id_fk via source-identity path (#1781)' (#1936) from fix/1781-house-fk-source-identity into main bot-backend 2026-06-27 00:05:14 +00:00
  • 6ce60a0d8c fix(tradein): backfill house_id_fk via source-identity path (#1781) fix/1781-house-fk-source-identity Light1YT 2026-06-27 05:01:02 +05:00
  • 94d3a981c8 Merge pull request 'feat(analyze): per-category OSRM routing — foot vs driving (#39 A3)' (#1935) from feat/39-osrm-per-category into main bot-backend 2026-06-26 23:43:28 +00:00
  • 8a3bae0cda feat(analyze): per-category OSRM routing (foot vs driving) (#39 A3) feat/39-osrm-per-category Light1YT 2026-06-27 04:30:25 +05:00
  • 6c8bf0e496 Merge pull request 'feat(site-finder): OSM инж.сети на карту analyze (#1746)' (#1934) from feat/1746-utility-infra-map into main bot-backend 2026-06-26 22:43:59 +00:00
  • 854fa69a8b feat(site-finder): render OSM utility-infrastructure layer on analyze map (#1746) feat/1746-utility-infra-map Light1YT 2026-06-27 03:40:51 +05:00
  • 63ac12dc23 feat(tradein): recurring house-dedup merge (schedule dormant) (#1772) (#1933) bot-backend 2026-06-26 21:39:30 +00:00
  • 70ca65b62b test(tradein): fix real-DB merge test schema (#1772, #1933 review) Light1YT 2026-06-27 02:38:15 +05:00
  • f48db87d39 feat(site-finder): OSRM road-distance in /analyze behind flag (#39 A2) (#1932) bot-backend 2026-06-26 21:25:50 +00:00
  • fa5e5d83f1 feat(tradein): recurring house-dedup merge (schedule dormant) (#1772) Light1YT 2026-06-27 02:23:22 +05:00
  • 7a1d2a4ed6 fix(site-finder): Overpass retry-backoff + mirror fallback for utility loader (#1746) (#1931) bot-backend 2026-06-26 21:13:06 +00:00
  • 1d367f5d8e feat(site-finder): OSRM road-distance in /analyze behind flag (#39 A2) Light1YT 2026-06-27 02:05:56 +05:00
  • c70154ed61 fix(site-finder): Overpass retry-backoff + mirror fallback for utility loader (#1746) Light1YT 2026-06-27 01:36:13 +05:00
  • 3753079dee feat(site-finder): OSM engineering-networks loader + endpoint (#1746) (#1930) bot-backend 2026-06-26 20:01:00 +00:00
  • 8d1e483271 chore: rename migration 100→170 (next free seq; 100-105 taken, max=169) (#1746) Light1YT 2026-06-27 00:49:02 +05:00
  • 42ed1f8a93 feat(site-finder): OSM engineering-networks loader + endpoint (#1746) Light1YT 2026-06-27 00:42:02 +05:00
  • 4fe20a9cbd feat(devops): self-hosted OSRM routing engine for site-finder (#39) (#1929) bot-backend 2026-06-26 19:18:21 +00:00
  • 26f9605c06 feat(devops): self-hosted OSRM routing engine for site-finder (#39) Light1YT 2026-06-27 00:13:41 +05:00
  • 4846197d54 fix(site-finder): align competitor flats_sold to objective_lots.contract_date (#1926) (#1927) bot-backend 2026-06-26 18:33:51 +00:00
  • 1a07af028a fix(site-finder): harden flats_sold sold-count SQL — fan-out, premise_kind, predicate (#1926) Light1YT 2026-06-26 23:21:55 +05:00
  • 89d05bbfec fix(tradein): persist scrape_runs.total_seen/new_count from sweep counters (#1926) (#1928) bot-backend 2026-06-26 18:09:17 +00:00
  • c336f91182 fix(site-finder): align competitor flats_sold to objective_lots.contract_date (#1926) Light1YT 2026-06-26 23:03:13 +05:00
  • f87b6ada4c fix(tradein): persist scrape_runs.total_seen/new_count columns from sweep counters (#1926) Light1YT 2026-06-26 22:59:27 +05:00
  • 87364eebca fix(test): test_849 expects 3 begin_nested/lot after #1921 upsert-reconcile SAVEPOINT — unblock red main gate (#1925) bot-backend 2026-06-26 17:23:24 +00:00
  • 731f5538a5 fix(test): test_849 expects 3 begin_nested/lot after upsert-reconcile SAVEPOINT (#1921) Light1YT 2026-06-26 22:22:32 +05:00
  • d89210200b perf(tradein): GIST index on (geom::geography) for estimator radius filter (#1189) (#1924) bot-backend 2026-06-26 17:12:49 +00:00
  • cf165bfd66 review: wrap migration 134 in BEGIN/COMMIT (runner not --single-transaction) Light1YT 2026-06-26 22:12:05 +05:00
  • 57456b5d10 perf(tradein): GIST index on (geom::geography) for estimator radius filter (#1189) Light1YT 2026-06-26 22:09:01 +05:00
  • 9890a4189c fix(tests): test_849 savepoint-count 2→3 на лот (#1921 добавил upsert-reconcile SAVEPOINT, sequential) fix/test-849-savepoint-count bot-backend 2026-06-26 19:29:08 +03:00
  • d111573a4b Merge pull request 'fix(trade-in/ui): расшифровка ДКП/IMV/CV + графики на --viz токены + убрать emoji (#1871)' (#1922) from fix/tradein-redesign-pack into main lekss361 2026-06-26 16:19:23 +00:00
  • 74ea6659ea Merge pull request 'fix(scrapers): avito_full_load краш (source_id-reconcile) + cian/yandex ban-ротация' (#1921) from fix/scraper-resilience-upsert-rotation into main lekss361 2026-06-26 16:19:06 +00:00
  • 5d5b2981fc Merge pull request 'fix(estimator): флаг + тесты для ghost-anchor guard и radius-dedup (#1871)' (#1919) from fix/estimator-trust-ghost-dedup into main lekss361 2026-06-26 16:18:58 +00:00
  • 27766acf38 fix(trade-in/ui): расшифровка ДКП/IMV/CV + графики на --viz токены + убрать emoji из вердиктов (#1871) bot-backend 2026-06-26 19:16:55 +03:00
  • c1cdf3969c fix(scrapers): ban/stuck-ротация для cian+yandex (provider-aware _rotate_proxy_ip) bot-backend 2026-06-26 19:10:26 +03:00
  • 197068c515 fix(scrapers): save_listings — UPDATE by (source,source_id) при dedup_hash-дрейфе (avito_full_load краш) bot-backend 2026-06-26 19:10:12 +03:00
  • 2fe34ac785 fix(estimator): ghost-anchor — confidence='low' when radius analogs empty (#1871) (#1920) bot-backend 2026-06-26 16:07:12 +00:00
  • 99736b6e32 fix(estimator): ghost-anchor — confidence='low' when radius analogs empty (#1871) Light1YT 2026-06-26 21:01:34 +05:00
  • 9678aface5 fix(estimator): dedup radius-аналогов — не раздувать n_analogs (#1871) bot-backend 2026-06-26 18:52:11 +03:00
  • 68f7c0e015 fix(estimator): запрет confidence=high при n_analogs=0 (#1871 ghost-anchor) bot-backend 2026-06-26 18:50:19 +03:00
  • e03c810306 feat(tradein-imv): route IMV backfill через BrowserFetcher.fetch_json за dormant-флагом (#915 Stage 3) (#1916) bot-backend 2026-06-26 09:54:28 +00:00
  • e347303465 docs(tradein): document SCRAPER_FETCH_MODE + AVITO_IMV_USE_BROWSER_FETCHER in .env.example (#915) Light1YT 2026-06-26 14:53:57 +05:00
  • 0d010a707c feat(tradein-imv): route IMV backfill через BrowserFetcher.fetch_json за dormant-флагом (#915 Stage 3) Light1YT 2026-06-26 14:42:26 +05:00
  • d479edeb3f feat(tradein-browser): additive POST /fetch-json + BrowserFetcher.fetch_json (#915 Stage 2) (#1915) bot-backend 2026-06-26 09:30:35 +00:00
  • 8eec6a752c feat(tradein-browser): additive POST /fetch-json + BrowserFetcher.fetch_json (#915 Stage 2) Light1YT 2026-06-26 14:25:06 +05:00
  • e0cd378d19 fix(migration-133): dedup via cascade-delete, not child re-point (prod hotfix) bot-backend 2026-06-26 08:16:27 +00:00
  • f1141f3578 fix(migration-133): dedup via cascade-delete, not child re-point (prod hotfix) Light1YT 2026-06-26 13:14:57 +05:00
  • 1d5b081cb4 fix(cian): recover new-build house via cadastral anchor + listings (source,source_id) dedup (#1773) (#1912) bot-backend 2026-06-26 07:45:22 +00:00
  • 3f1925052b feat(scheduler): wire house_imv_backfill as scheduled source (#854) (#1910) bot-backend 2026-06-26 07:45:08 +00:00
  • f091554942 fix(scrapers): named BrowserSession concurrency const, fix Semaphore(3) doc drift (#1347) (#1913) bot-backend 2026-06-26 07:44:29 +00:00
  • 9c52e0b29f feat(etl): housing-class normalization fallback via yandex_realty trigram match (#38) (#1911) bot-backend 2026-06-26 07:44:25 +00:00
  • 5ed88c41a4 fix(avito): post-merge polish — unify fetch_mode guard + empty-render guard (#1811) (#1909) bot-backend 2026-06-26 07:44:22 +00:00
  • 282243fb97 fix(cian): recover new-build house number via cadastral anchor + listings (source,source_id) dedup (#1773) Light1YT 2026-06-26 12:29:25 +05:00
  • 95b2fb34e2 feat(etl): housing-class normalization fallback via yandex_realty trigram match (#38) Light1YT 2026-06-26 12:26:13 +05:00
  • 14798cc07c feat(scheduler): wire house_imv_backfill as scheduled source (#854) Light1YT 2026-06-26 12:25:01 +05:00
  • 9b9cc99c11 fix(avito): post-merge polish — unify fetch_mode guard + empty-render guard (#1811) Light1YT 2026-06-26 12:20:13 +05:00
  • c3542ec519 fix(scrapers): make BrowserSession concurrency a named const, fix Semaphore(3) doc drift (#1347) Light1YT 2026-06-26 12:19:33 +05:00
  • 67d41df880 fix(freshness): repoint nspd source to live nspd_quarter_dumps (data-table mode) bot-backend 2026-06-26 06:51:00 +00:00
  • 5b2b8e1958 fix(freshness): repoint nspd source to live nspd_quarter_dumps (data-table mode) Light1YT 2026-06-26 11:38:46 +05:00
  • 2304e09e37 fix(freshness): calibrate kn staleness thresholds to weekly cadence bot-backend 2026-06-26 06:33:29 +00:00
  • 1ea8d0b721 fix(freshness): calibrate kn staleness thresholds to weekly cadence Light1YT 2026-06-26 11:20:02 +05:00
  • 66da75681f feat(financial/dcf): dormant separate-index inflation capability (default OFF) bot-backend 2026-06-25 12:12:02 +00:00
  • 9e848cee43 feat(financial/dcf): dormant separate-index inflation capability (default OFF) Light1YT 2026-06-25 16:53:32 +05:00
  • b82963d12e feat(financial): ground-floor нежилое (office/commercial) tranche bot-backend 2026-06-25 11:40:01 +00:00
  • 55811ff7cc feat(workers): data-freshness monitor (Celery beat → GlitchTip) bot-backend 2026-06-25 11:29:34 +00:00
  • 6b4b081c44 feat(financial): surface office revenue in PDF + concept UI (offices presentation) Light1YT 2026-06-25 16:27:17 +05:00
  • f59d874bac chore(codegen): regen api-types after /freshness handler refactor Light1YT 2026-06-25 16:17:23 +05:00