Commit graph

  • 57676d5299 feat(sf-b1): GET /parcels/by-bbox — map entry endpoint + parcel_user_status table lekss361 2026-05-18 00:17:40 +03:00
  • 53598cc874 merge: resolve main.py conflict (keep landing + pilot + users routers) lekss361 2026-05-18 00:15:59 +03:00
  • ef3e0404a6 feat(22d): domrf_catalog_object scraper — fill ~25 NULL kn_objects cols from SSR __NEXT_DATA__ lekss361 2026-05-18 00:15:57 +03:00
  • dbeed80b26 Merge pull request 'feat(sf-b3): POST /pilot/request — lead gen + pilot_requests table (Telegram TODO)' (#330) from feat/sf-b3-pilot-leads into main lekss361 2026-05-17 21:14:28 +00:00
  • b013fd886c feat(sf-b6): GET /parcels/{cad}/poi-score — weighted top-7 (#333) lekss361 2026-05-17 21:11:25 +00:00
  • 493238447a feat(sf-b5): extend /parcels/{cad}/analyze with 15 fields (EGRN/encumbrance/red_lines/risks/district prices) (#332) lekss361 2026-05-17 21:11:18 +00:00
  • 4040cba4c0 feat(sf-b7): GET /parcels/{cad}/snapshot.pdf — 1-page WeasyPrint export (#334) lekss361 2026-05-17 21:11:03 +00:00
  • ab65f75041 merge: resolve main.py conflict (keep both landing + users routers) lekss361 2026-05-18 00:09:54 +03:00
  • bf55cc9e56 merge: resolve main.py conflict (keep both pilot + users routers) lekss361 2026-05-18 00:08:48 +03:00
  • 86c6070ff0 feat(sf-b7): GET /parcels/{cad}/snapshot.pdf — 1-page PDF export lekss361 2026-05-18 00:06:58 +03:00
  • f82d8bc870 feat(sf-b6): POI weighted top-7 endpoint GET /parcels/{cad}/poi-score lekss361 2026-05-18 00:05:11 +03:00
  • 8673290009 feat(sf-b2): GET /users/me/recent-parcels — stub endpoint (auth TODO) (#329) lekss361 2026-05-17 21:04:16 +00:00
  • c67c8138af feat(sf-b5): extend /analyze with EGRN + encumbrance + red_lines + risks lekss361 2026-05-18 00:02:54 +03:00
  • 6d66c8b27f feat(sf-b4): GET /landing/stats — 5 KPI + paradox for landing page hero lekss361 2026-05-18 00:02:02 +03:00
  • 99e55c0bc2 feat(sf-b3): POST /pilot/request + pilot_requests table lekss361 2026-05-18 00:01:35 +03:00
  • e19d4862c2 feat(sf-b2): GET /users/me/recent-parcels (stub, real impl post-auth) lekss361 2026-05-18 00:01:22 +03:00
  • e872b1ebe4 fix(sf): exclude NULL competitors from aggregate calculations (velocity, market_avg, top_sellers) (#328) lekss361 2026-05-17 20:46:07 +00:00
  • 630a5bbd77 fix(sf): exclude NULL competitors from aggregate calculations (velocity, market_avg, top_sellers) lekss361 2026-05-17 23:41:09 +03:00
  • 0c4d7f1ffb feat(obj-2): mapping backfill via pre-materialized temp tables (migration 117) (#327) lekss361 2026-05-17 20:34:42 +00:00
  • 5f50a7ec96 feat(obj-2): mapping backfill via pre-materialized temp tables (117) lekss361 2026-05-17 23:28:52 +03:00
  • 2bd80c5719 fix(obj-2): trim migration 116 to GIST index only — INSERT CTE timed out in deploy (#326) lekss361 2026-05-17 20:21:58 +00:00
  • f9b8468bfc fix(obj-2): trim migration 116 to GIST trgm index only — INSERT CTE timed out in deploy lekss361 2026-05-17 23:17:59 +03:00
  • 028c6a1356 Merge pull request 'fix(scrape-kn): real documents endpoints (5x) + skip obj_checks + sem 3→8' (#325) from fix/domrf-real-doc-endpoints-skip-checks-sem6 into main lekss361 2026-05-17 20:08:50 +00:00
  • 7a8d59beb4 feat(obj-3): SF backend migrate to objective_lots ground truth (price 0.3% -> 81%) (#324) lekss361 2026-05-17 20:08:17 +00:00
  • 2aa33e0eb8 fix(stealth): bump Semaphore 6->8 for higher concurrency in gather lekss361 2026-05-17 23:04:51 +03:00
  • 50c7668046 feat(obj-3): migrate Site Finder competitors to objective_lots ground truth lekss361 2026-05-17 23:02:18 +03:00
  • 0f289c05b1 fix(scrape-kn): real documents endpoints (5x) + skip obj_checks 404 + sem 3->6 lekss361 2026-05-17 22:59:44 +03:00
  • 79c9a8a034 feat(obj-2): multi-feature mapping backfill (name+dev+district) — 142 → 200+ (#323) lekss361 2026-05-17 19:53:50 +00:00
  • 970c42a471 feat(obj-2): multi-feature mapping backfill (name+dev+district), threshold 0.75 lekss361 2026-05-17 22:48:25 +03:00
  • f2983c86d7 feat(scrape-kn): parallel Phase B/C + wire obj_checks + documents + is_ekb auto-derive (#322) lekss361 2026-05-17 19:40:16 +00:00
  • 1db19b3b8a feat(scrape-kn): parallel Phase B/C + wire obj_checks + documents + is_ekb auto-derive lekss361 2026-05-17 22:34:58 +03:00
  • c80d79e2d4 fix(objective parser): use_float=True in ijson + default=str in json.dumps (#321) lekss361 2026-05-17 19:11:25 +00:00
  • ecbdcf35fb fix(objective parser): use_float=True in ijson + default=str in json.dumps lekss361 2026-05-17 22:07:40 +03:00
  • d1b721a3be fix(deploy): trigger workflow on all data/sql/** changes, not only .sql (#320) lekss361 2026-05-17 18:51:28 +00:00
  • 1d4ef98707 fix(deploy): trigger workflow on all data/sql/** changes, not only .sql lekss361 2026-05-17 21:47:58 +03:00
  • bb9a003080 fix(objective parser): wrap bytes-iter in file-like reader for ijson (#318) lekss361 2026-05-17 17:52:55 +00:00
  • c8ac1fa732 fix(objective parser): restore bulk executemany in stream _flush lekss361 2026-05-17 20:48:27 +03:00
  • 3978aa5905 feat(trade-in): TI-2 PDF export 4-page + frontend enable button (#319) lekss361 2026-05-17 17:16:48 +00:00
  • 7ea4f262cd feat(trade-in): TI-2 PDF export + frontend enable button lekss361 2026-05-17 20:07:08 +03:00
  • 8d0e67d03b fix(objective parser): wrap bytes-iter in file-like reader for ijson lekss361 2026-05-17 19:58:59 +03:00
  • 90eb5af883 feat(trade-in): TI-3 frontend /trade-in page + 5 components + hooks (#317) lekss361 2026-05-17 16:58:53 +00:00
  • 7fa93f825c feat(trade-in): TI-3 frontend /trade-in page + 5 components + hooks lekss361 2026-05-17 19:54:11 +03:00
  • 29dbbee2ac feat(trade-in): TI-1 mock /trade-in/estimate endpoint + Pydantic + SQL migration (#316) lekss361 2026-05-17 16:45:06 +00:00
  • 389e141ec9 fix(scrape-objective): stream-parse lots_pf via ijson to avoid OOM (#315) lekss361 2026-05-17 16:37:30 +00:00
  • f4fd0184eb feat(trade-in): TI-1 mock /trade-in/estimate endpoint + schema + migration lekss361 2026-05-17 19:36:10 +03:00
  • 4875ef15c3 fix(scrape-objective): stream-parse lots_pf via ijson to avoid OOM lekss361 2026-05-17 19:33:43 +03:00
  • fce48a8924 fix(scrape-objective): drop redundant self arg in sync_all_groups loop (#313) lekss361 2026-05-17 16:13:41 +00:00
  • dbc9a880cf fix(scrape-objective): drop redundant self arg in sync_all_groups loop lekss361 2026-05-17 19:11:27 +03:00
  • fd2b09b806 fix(22k): quartirography — use f.flat_type not f.type (column doesn't exist) (#312) lekss361 2026-05-17 16:09:00 +00:00
  • a93bef4147 feat(deploy): inject OBJECTIVE_API_KEY into backend/.env.runtime (#311) lekss361 2026-05-17 16:05:13 +00:00
  • d2f21f90a7 fix(22k): quartirography uses f.flat_type, not f.type (column doesn't exist) lekss361 2026-05-17 19:05:01 +03:00
  • 8bcb60213e feat(deploy): inject OBJECTIVE_API_KEY into backend/.env.runtime lekss361 2026-05-17 19:02:07 +03:00
  • f8c382f885 feat(22k): object page — full exposure 9 blocks (sales/quartirography/metro/photos/docs/specs/checks) (#310) lekss361 2026-05-17 15:56:39 +00:00
  • cac06b2ff9 feat(22k): object page full exposure — 9 blocks (sales/quartirography/metro/photos/docs/specs/checks) lekss361 2026-05-17 18:50:41 +03:00
  • 4bed58b43c feat(22d): domrf_catalog.py scraper for per-flat price/status from SSR HTML (#309) lekss361 2026-05-17 15:40:01 +00:00
  • b37e011aaa feat(22c): domrf_kn_flat_plans new table + parser stub (#308) lekss361 2026-05-17 15:39:34 +00:00
  • 7e73505b50 fix(22c): rename migration 100 → 114 (collision avoid with merged 100_fix_mv_*) lekss361 2026-05-17 18:35:35 +03:00
  • 1ebefcdb98 feat(22d): domrf_catalog.py — per-flat price/status from SSR HTML catalog page lekss361 2026-05-17 18:34:10 +03:00
  • 215441e4d8 feat(22c): domrf_kn_flat_plans new table + parser stub lekss361 2026-05-17 18:34:06 +03:00
  • 6612c1cd2b feat(22begh): schema extension — flats+6 / objects+30 / developers+4 / metro_top3 (#306) lekss361 2026-05-17 15:26:59 +00:00
  • 171a029997 feat(22i): domrf_kn_documents new table + parser (#305) lekss361 2026-05-17 15:21:31 +00:00
  • 2105d2e050 fix(22begh): rename migration 112 → 113 (collision with PR #305 sf-22i) lekss361 2026-05-17 18:21:05 +03:00
  • c67de26cd0 feat(22begh): schema extension — flats+6 / objects+30 / developers+4 / metro_top3 lekss361 2026-05-17 18:19:32 +03:00
  • 3183abe41b fix(22j): DEDUP domrf_kn_infrastructure + ON CONFLICT (issue #297) (#304) lekss361 2026-05-17 15:15:03 +00:00
  • 5bcaa67a6d feat(22i): domrf_kn_documents new table + parser lekss361 2026-05-17 18:13:52 +03:00
  • 7863a99394 fix(22j): DEDUP domrf_kn_infrastructure + ON CONFLICT (issue #297) lekss361 2026-05-17 18:12:14 +03:00
  • 16e3d5c86d feat(22f): domrf_obj_checks table — 6 "Проверено на наш.дом.рф" checks (#303) lekss361 2026-05-17 15:07:24 +00:00
  • 9c3d33ca47 feat(22f): add domrf_obj_checks table for 6 "Проверено на наш.дом.рф" checks lekss361 2026-05-17 18:03:46 +03:00
  • 0b12a55eb6 fix(bug-22a): map missing kn-API fields (flat_number/living_area/wall_type/energy_eff) + backfill (#302) lekss361 2026-05-17 14:59:02 +00:00
  • 54cff64109 fix(bug-22a): fill ON CONFLICT gaps for flat_number/living_area/wall_type/energy_eff in kn scraper lekss361 2026-05-17 17:54:18 +03:00
  • bfe16ae71b fix(sf-16): derive price_per_m2 from price_rub in _norm_flat + backfill SQL (#298) lekss361 2026-05-17 14:32:23 +00:00
  • d3ce5a2f96 fix(sf-16): derive price_per_m2 from price_rub in _norm_flat + backfill SQL lekss361 2026-05-17 17:27:12 +03:00
  • e054395464 Merge pull request 'fix(sf-15): extract obj_class from aiDescription (DOM.РФ list API never returns objClass)' (#293) from fix/sf-15-obj-class-scraping into main lekss361 2026-05-17 14:18:49 +00:00
  • a86cce79af refactor(sf-19): BestLayouts inline hex → Tailwind tokens (#296) lekss361 2026-05-17 14:17:05 +00:00
  • 4b967343f8 fix(sf-13): MarketTab above-the-fold headline + 3 KPI cards (#294) lekss361 2026-05-17 14:10:06 +00:00
  • 33f44b59cb feat(sf-18): is_sales_started flag для domrf_kn_objects (#292) lekss361 2026-05-17 14:09:21 +00:00
  • f0edc8cfcd refactor(sf-19): BestLayouts inline hex → Tailwind / CSS tokens lekss361 2026-05-17 17:04:47 +03:00
  • 440bba99cc fix(sf-15): rename migration 105 → 106 (collision with PR #292 sf-18) lekss361 2026-05-17 17:03:16 +03:00
  • 9f5f887393 Merge pull request 'fix(sf-21): mv_layout_velocity weighted AVG (P0 data corruption)' (#290) from fix/sf-21-mv-weighted-avg into main lekss361 2026-05-17 14:02:46 +00:00
  • 9f7224de33 Merge pull request 'fix(sf-21b): _INLINE_VELOCITY_SQL weighted AVG (P0 follow-up)' (#291) from fix/sf-21b-inline-velocity-weighted into main lekss361 2026-05-17 14:02:43 +00:00
  • 34b4a3ba4e fix(sf-13): MarketTab above-the-fold headline-bar + 3 KPI cards lekss361 2026-05-17 17:02:21 +03:00
  • 3daf2a1fb1 fix(sf-15): extract obj_class from aiDescription (DOM.RF list API never returns objClass field) lekss361 2026-05-17 17:02:07 +03:00
  • fff3edab08 feat(sf-18): add v_domrf_objects_with_sales view with is_sales_started flag lekss361 2026-05-17 16:59:17 +03:00
  • 2104ed879b fix(sf-21b): weighted AVG in _INLINE_VELOCITY_SQL (best_layouts.py) lekss361 2026-05-17 16:56:22 +03:00
  • f0589bcdff Merge pull request 'fix(sf-17): rosreestr velocity fallback via cad_quarter (~100% EKB coverage)' (#289) from fix/sf-17-rosreestr-velocity-fallback into main lekss361 2026-05-17 13:55:20 +00:00
  • 913cdcfcef fix(sf-21): mv_layout_velocity weighted AVG — P0 data corruption lekss361 2026-05-17 16:53:36 +03:00
  • e1a8ad9395 fix(sf-17): rosreestr velocity fallback via cad_quarter (~100% EKB coverage) lekss361 2026-05-17 16:50:19 +03:00
  • 9eed55cd30 Merge pull request 'fix(sf-20): adaptive district threshold 30→15 with data_confidence flag' (#288) from fix/sf-20-district-threshold-adaptive into main lekss361 2026-05-17 13:39:52 +00:00
  • fcfc492ab5 Merge pull request 'feat: fuzzy matcher v2 — Objective mapping coverage 8.5%→20%' (#286) from feat/fuzzy-matcher-v2-coverage into main lekss361 2026-05-17 13:39:28 +00:00
  • edb0a3e728 Merge pull request 'fix(sf-12): MarketTrend — adaptive n<30/n<100 confidence warnings' (#287) from fix/sf-12-trend-confidence-warning into main lekss361 2026-05-17 13:39:03 +00:00
  • 989d4e5b7d fix(sf-20): adaptive district threshold 30→15 with data_confidence flag lekss361 2026-05-17 16:34:52 +03:00
  • 1e1737e829 fix(sf-12): MarketTrend — adaptive n<30/n<100 confidence warnings lekss361 2026-05-17 16:33:22 +03:00
  • 2694e3180b feat(etl): fuzzy matcher v2 — pruned threshold 0.85→0.80 for objective mapping coverage lekss361 2026-05-17 16:28:20 +03:00
  • eb865a08bc Merge pull request 'fix(sf-11): Top layouts — sales period column + drill-in expand' (#285) from fix/sf-11-sales-period-drill-in into main lekss361 2026-05-17 13:19:24 +00:00
  • 1959283a41 fix(sf-11): review-pass — DOM.РФ latin URL + Fragment key + a11y keyboard lekss361 2026-05-17 16:16:24 +03:00
  • d3a51c3657 fix(sf-11): Top layouts — sales period column + drill-in expand lekss361 2026-05-17 16:07:30 +03:00
  • e1300b1955 Merge pull request 'fix(sf-10): velocity LEFT JOIN + velocity_data_available flag' (#284) from fix/sf-10-velocity-left-join-v2 into main lekss361 2026-05-17 13:00:19 +00:00
  • b7ce4a589c fix(sf-10): velocity LEFT JOIN + velocity_data_available flag lekss361 2026-05-17 15:51:43 +03:00
  • 5ffee75c9f Merge pull request 'chore: refresh preview pages + add tradein landing' (#283) from chore/preview-pages-refresh into main lekss361 2026-05-17 12:38:16 +00:00
  • 6d9eddc8e9 chore: refresh preview pages + add tradein landing lekss361 2026-05-17 15:37:28 +03:00