Commit graph

  • 54a5d13c48 feat(tradein/domclick): enrich Layer A SERP parser — description, repair-inference, minhash, seller bot-backend 2026-06-27 16:35:25 +03:00
  • 3cd1605c5c Merge pull request 'fix(site-finder): сети и точки подключения на карте Раздела 3 (#1961)' (#1998) from fix/report-map-points-1961 into main bot-backend 2026-06-27 13:00:14 +00:00
  • ef51bb8b62 Merge pull request 'fix(report): человеческий язык в Разделе 6 — дефицит/затоварка, 6.2/6.3/6.5 (#1963)' (#1988) from fix/report-microcopy-1963 into main bot-backend 2026-06-27 12:59:28 +00:00
  • ec9ed56fad feat(tradein/backtest): hermetic estimator regression gate — frozen fixture + baseline (#1966 PR 3/3) lekss361 2026-06-27 12:55:35 +00:00
  • 1bbc032316 fix(site-finder): show networks & connection points on Раздел 3 map (#1961) fix/report-map-points-1961 Light1YT 2026-06-27 17:52:51 +05:00
  • f7d0bbd30e feat(tradein/backtest): frozen fixture + baseline + hermetic CI regression gate (#1966 PR 3/3) bot-backend 2026-06-27 15:49:58 +03:00
  • e82761964d fix(report): human RU microcopy in Site Finder Section 6 (#1963) fix/report-microcopy-1963 Light1YT 2026-06-27 17:42:27 +05:00
  • 1648da01c3 fix(tradein/backtest): order-based callable replay (platform-robust) + gzip fixture loading (#1966 PR 3/3) bot-backend 2026-06-27 15:39:34 +03:00
  • 16f375782b Merge pull request 'fix(report): вывести ПЗЗ-градрегламент НСПД в Раздел 1 + coerceFloat КСИТ (#1962)' (#1987) from fix/report-nspd-zoning-1962 into main bot-backend 2026-06-27 12:22:51 +00:00
  • 63d685a105 fix(report): уникальный React key для ВРИ-списка (дубль-VRI warning) (#1962) fix/report-nspd-zoning-1962 Light1YT 2026-06-27 17:18:57 +05:00
  • 727f9b1f05 Merge pull request 'fix(tradein/auth): always-available logout button on NoAccessScreen' (#1986) from fix/tradein-logout-on-noaccess into main lekss361 2026-06-27 12:18:34 +00:00
  • 5a73bbeb8e feat(tradein/backtest): --dump-fixture + hermetic replay_fixture + prod-parity (anchor gate, drop MIN_CANDIDATES skip) (#1966 PR 3/3) bot-backend 2026-06-27 15:17:44 +03:00
  • a9dfe44f5c fix(tradein/auth): always-available logout button on NoAccessScreen bot-backend 2026-06-27 15:16:42 +03:00
  • 58e71dab01 fix(report): surface ПЗЗ-градрегламент НСПД в Раздел 1 (#1962) Light1YT 2026-06-27 17:10:20 +05:00
  • c1e0ccb2e8 Merge pull request 'fix(site-finder): фронт light-отчёта — encumbrance/obj_class/ЗОУИТ display + forecast axis & flat-state (#1954 #1955 #1957 #1958)' (#1985) from fix/report-frontend-display-1953 into main bot-backend 2026-06-27 12:00:13 +00:00
  • e2bf285980 chore(design-sync): ship Inter + JetBrains Mono brand fonts via cfg.extraFonts bot-backend 2026-06-27 14:56:50 +03:00
  • 6adba229f0 fix(site-finder): wire encumbrance/obj_class/ЗОУИТ display + forecast axis & flat-state (#1953) fix/report-frontend-display-1953 Light1YT 2026-06-27 16:51:40 +05:00
  • b2d4f980f0 Merge pull request 'chore(design-sync): sync inputs for claude.ai/design trade-in DS' (#1984) from chore/design-sync-tradein into main lekss361 2026-06-27 11:42:14 +00:00
  • 89c31e7449 Merge pull request 'fix(report): newbuild-consistent медиана + obj_class/Comfort dedup + recommend_mix regression (#1955 #1960)' (#1978) from fix/report-data-1953 into main bot-backend 2026-06-27 11:41:36 +00:00
  • e70f5da82b chore(design-sync): sync inputs for claude.ai/design trade-in DS bot-backend 2026-06-27 14:40:50 +03:00
  • d5e51ca809 Merge branch 'main' into fix/report-data-1953 Light1YT 2026-06-27 16:26:39 +05:00
  • 11861e5dc0 Merge pull request 'fix(ci): pin prettier 3.9.0 (codegen-check + pre-commit) + regenerate stale api-types.ts' (#1981) from fix/ci-prettier-codegen-pin into main lekss361 2026-06-27 11:25:37 +00:00
  • 57bf8ffb81 feat(tradein/backtest): full-spine prediction + range-coverage/calibration/segment metrics (#1966 PR 2/3) lekss361 2026-06-27 11:21:57 +00:00
  • ab4bc229b2 fix(tradein/domclick): open-band recursion guard, count schema-guard, 5+ rooms, geo canary + tests bot-backend 2026-06-27 14:13:46 +03:00
  • ce6e693ea7 fix(ci): pin prettier 3.9.0 for codegen check + pre-commit so api-types is byte-stable Light1YT 2026-06-27 16:11:26 +05:00
  • 677ebda2c2 Merge remote-tracking branch 'refs/remotes/forgejo/main' into feat/tradein-backtest-full-spine bot-backend 2026-06-27 14:07:46 +03:00
  • 28e36c18e2 feat(tradein/backtest): full-spine prediction via _price_from_inputs + range-coverage/calibration/segment metrics (#1966) bot-backend 2026-06-27 14:06:28 +03:00
  • efdf11d10f Merge pull request 'fix(tradein/ux): honest source list — drop dead domklik/restate, remove fake per-source median (#1968)' (#1980) from feat/tradein-honesty-sources into main lekss361 2026-06-27 11:03:59 +00:00
  • 050dd73c93 wip(tradein/backtest): full-spine prediction path compiles (#1966) bot-backend 2026-06-27 14:01:54 +03:00
  • 684385263e Merge pull request 'fix(tradein/domclick): рекан скрейпера на BFF JSON API + честный статус (#1846, #1968)' (#1979) from fix/tradein-domclick-bff-rewrite into main lekss361 2026-06-27 10:59:47 +00:00
  • f1b8ae47a2 fix(tradein/ux): honest source list — drop dead domklik/restate, remove fake per-source median, sync hero/footer/card (#1968) bot-backend 2026-06-27 13:58:16 +03:00
  • 4a63b8f7d7 Merge remote-tracking branch 'forgejo/main' into fix/tradein-domclick-bff-rewrite bot-backend 2026-06-27 13:57:24 +03:00
  • 52fc920507 fix(tradein/domclick): rewrite dead scraper to BFF JSON API + honest status (#1846, #1968) bot-backend 2026-06-27 13:57:07 +03:00
  • f3e622acec chore(tradein): renumber domclick schedule migration 132 -> 138 (collision with 132_scrape_schedules_seed_house_imv on main) bot-backend 2026-06-27 13:52:43 +03:00
  • dbef242716 feat(tradein/scrapers): domclick вторичка через bff-search-web JSON API (Layer A) bot-backend 2026-06-27 13:46:51 +03:00
  • a184d38aa6 fix(analytics): recommend_mix success-boost regression from view 172 (#1955) Light1YT 2026-06-27 15:49:40 +05:00
  • 86ddf99bb6 Merge pull request 'feat(tradein/auth): expire praktika trial access + trial-ended screen (contact Artem)' (#1977) from feat/tradein-praktika-trial-ended into main lekss361 2026-06-27 10:35:06 +00:00
  • 703e411a17 feat(tradein/auth): expire praktika trial access + trial-ended screen (contact Artem) bot-backend 2026-06-27 13:30:28 +03:00
  • 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