Commit graph

  • 76b1f8673f test(infra): integration phantom column gate (#197) (#216) lekss361 2026-05-16 13:07:13 +00:00
  • 133379235c test(infra): integration phantom column gate (#197) lekss361 2026-05-16 15:59:06 +03:00
  • ce2c48fff5 feat(site-finder): debounce weight re-analyze (#201 Phase 2) (#215) lekss361 2026-05-16 12:54:51 +00:00
  • 1e198efc92 feat(site-finder): debounce weight re-analyze to 300ms (#201 Phase 2) lekss361 2026-05-16 15:48:01 +03:00
  • dbf31cc911 feat(etl): objective_complex_mapping backfill via pg_trgm (#203) (#214) lekss361 2026-05-16 12:47:09 +00:00
  • 4c68645e4f feat(etl): objective_complex_mapping backfill via pg_trgm fuzzy match (#203) lekss361 2026-05-16 15:41:08 +03:00
  • 46203ab365 feat(permits): Celery beat monthly + analyze recent_permits (#105 Phase 4+5) (#213) lekss361 2026-05-16 12:23:52 +00:00
  • 3abaf047a9 fix(parcels): remove non-existent units_count column from permits query (#105 PR #213 fixup) lekss361 2026-05-16 15:14:46 +03:00
  • 7eb686bd7d feat(permits): Celery beat monthly + analyze recent_permits (#105 Phase 4+5) lekss361 2026-05-16 15:03:01 +03:00
  • e450546178 feat(site-finder): NSPD frontend integration в LandTab (#202) (#212) lekss361 2026-05-16 11:55:31 +00:00
  • e5de841f2a feat(site-finder): NSPD frontend integration в LandTab (#202) lekss361 2026-05-16 14:49:31 +03:00
  • adc45f5724 feat(permits): ЕКБ РНС/РВЭ xlsx parser + schema + ETL (#105 PR A) (#211) lekss361 2026-05-16 11:41:21 +00:00
  • 59d7300c9c feat(permits): ЕКБ РНС/РВЭ xlsx parser + schema + ETL (#105 PR A) lekss361 2026-05-16 14:34:20 +03:00
  • 27a0957bb5 feat(analyze): add market_price из mv_quarter_price_per_m2 (#33 PR B) (#210) lekss361 2026-05-16 11:28:16 +00:00
  • 614c951998 feat(analyze): add market_price из mv_quarter_price_per_m2 (#33 PR B) lekss361 2026-05-16 14:18:35 +03:00
  • efa66a9f68 feat(analytics): mv_quarter_price_per_m2 MV + refresh helper (#33 D1 PR A) (#209) lekss361 2026-05-16 11:12:01 +00:00
  • e1a2a779e4 feat(analytics): mv_quarter_price_per_m2 MV + refresh helper (#33 D1 PR A) lekss361 2026-05-16 14:06:57 +03:00
  • 092976f656 feat(site-finder): inline POI weights pass-through в /analyze (#201 Phase 1) (#206) lekss361 2026-05-16 11:00:41 +00:00
  • cada96e874 fix(parcels): NaN/Inf bypass in inline weights validation, dedupe _POI_WEIGHTS (#201 #206 fixup) lekss361 2026-05-16 13:53:46 +03:00
  • 2f79f7c40a feat(backend): sentry-sdk init для FastAPI + Celery через GlitchTip (#204 backend) lekss361 2026-05-16 13:39:17 +03:00
  • 038e39e2ec feat(site-finder): inline POI weights pass-through в /analyze (#201 Phase 1) lekss361 2026-05-16 13:39:14 +03:00
  • a79ee833f7 feat(infra): add GlitchTip self-hosted error tracking (#204) lekss361 2026-05-16 13:38:04 +03:00
  • 256909d28b feat(layouts): PDF ТЗ endpoint + BestLayoutsBlock UI (#113 PR D) (#199) lekss361 2026-05-16 09:53:05 +00:00
  • 434341e98f fix(layouts): address review-bot minor items (#113 PR D) lekss361 2026-05-16 12:50:10 +03:00
  • 5878596bc5 feat(layouts): PDF ТЗ endpoint + BestLayoutsBlock UI (#113 PR D) lekss361 2026-05-16 12:36:24 +03:00
  • 553aad86c3 feat(layouts): PDF ТЗ endpoint + BestLayoutsBlock UI (#113 PR D) lekss361 2026-05-16 12:36:24 +03:00
  • ad16fc0e42 feat(parcels): best-layouts endpoint + service (#113 PR C) (#196) lekss361 2026-05-16 09:10:06 +00:00
  • 8488012f05 fix(best-layouts): address review-bot minor items (#113 PR C) lekss361 2026-05-16 12:01:09 +03:00
  • a88917f0cf fix(best-layouts): replace non-existent geom_3857 with on-the-fly geography (#113 PR C) lekss361 2026-05-16 11:52:08 +03:00
  • fdc64569d2 feat(parcels): best-layouts endpoint + service (#113 PR C) lekss361 2026-05-16 11:42:20 +03:00
  • 6aa22ef8ba feat(analytics): mv_layout_velocity MV + refresh helper (#113 PR B) (#194) lekss361 2026-05-16 08:26:59 +00:00
  • 5455d57bed chore(ci): run CI on push to feature branches (#195) lekss361 2026-05-16 08:26:04 +00:00
  • d1e2de026e fix(ci): add concurrency group to cancel stale runs on same branch lekss361 2026-05-16 11:18:44 +03:00
  • 46c2a84ea4 fix(analytics): address review-bot PR B fixes (#113) lekss361 2026-05-16 11:17:37 +03:00
  • bf7f12f736 chore(ci): run CI on push to feature branches lekss361 2026-05-16 11:02:23 +03:00
  • 144970aadd feat(analytics): mv_layout_velocity MV + refresh helper (#113 PR B) lekss361 2026-05-16 11:00:02 +03:00
  • e673811a20 feat(parcels): layout signature schemas + extractor (#113 PR A) (#193) lekss361 2026-05-16 07:52:34 +00:00
  • 0e2d976f9a feat(parcels): layout signature schemas + extractor (#113 PR A) lekss361 2026-05-16 10:49:10 +03:00
  • 4deb1b0284 feat(parcels): connection-points endpoint (Forgejo #115 Phase 1 backend) (#190) lekss361 2026-05-16 05:58:27 +00:00
  • 0cf0ab3358 fix(site-finder): narrow except clauses, fix quarter fallback WKT, add LIMIT to zouit query lekss361 2026-05-16 08:55:53 +03:00
  • fad815c728 ci: re-trigger Forgejo Actions after merge of main lekss361 2026-05-16 08:38:26 +03:00
  • 3ee2a99958 Merge main (post-PR191 competitors + PR192 forgejo workflow) into feat/115-connection-points-backend lekss361 2026-05-16 08:26:42 +03:00
  • e97f96afa7 fix(ci): switch deploy to .forgejo/workflows + shell GHCR login (#192) lekss361 2026-05-16 05:25:00 +00:00
  • a2a287728a fix(ci): switch deploy to .forgejo/workflows + shell GHCR login lekss361 2026-05-16 01:28:26 +03:00
  • e561df1b55 feat(parcels): competitors endpoint (Forgejo #112 Phase 1 backend) (#191) lekss361 2026-05-15 22:21:05 +00:00
  • e737fe5ddd Merge remote-tracking branch 'forgejo/main' into feat/115-connection-points-backend lekss361 2026-05-16 01:18:00 +03:00
  • f3d85f4d7a feat(parcels): POST /{cad_num}/competitors — active competitors in radius (Forgejo #112) lekss361 2026-05-16 01:16:12 +03:00
  • 3c8bea38d0 feat(parcels): GET /{cad_num}/connection-points — engineering points (Forgejo #115) lekss361 2026-05-16 01:03:42 +03:00
  • 50547dcbb3 test(deploy): validate Forgejo Actions end-to-end flow (#189) lekss361 2026-05-15 21:55:04 +00:00
  • 5960368062 fix(tests): prefix unused _upserted vars per RUF059 lekss361 2026-05-16 00:50:30 +03:00
  • 6c008f8226 test(deploy): trigger Forgejo Actions deploy flow lekss361 2026-05-16 00:43:49 +03:00
  • ae0fce3528
    refactor(claude): split 700-line CLAUDE.md into path-scoped .claude/rules/ (#188) lekss361 2026-05-15 23:06:33 +03:00
  • 4d492ebc50
    perf(cadastre): freshness skip + grid-walk heartbeat + log noise reduction (#187) lekss361 2026-05-15 23:02:37 +03:00
  • f02f273936 refactor(claude): split 700-line CLAUDE.md into path-scoped .claude/rules/ lekss361 2026-05-15 22:59:11 +03:00
  • f526a43ef9 fix(cadastre): address bot blockers — pivot Fix H to raw_targets + tests lekss361 2026-05-15 22:23:02 +03:00
  • 726b15ad55 fix(cadastre): parse NSPD DD.MM.YYYY dates (Fix K — job 18 root cause) lekss361 2026-05-15 22:15:43 +03:00
  • ae04dcb4b9 perf(cadastre): freshness skip + grid-walk heartbeat + reduce WMS log noise lekss361 2026-05-15 22:12:00 +03:00
  • d104222643
    fix(cadastre,nspd_sync): SQL syntax bugs surfaced by ekb_full v2 (#186) lekss361 2026-05-15 19:18:43 +03:00
  • d445240e6f fix(cadastre,nspd_sync): SQL syntax bugs surfaced by ekb_full v2 lekss361 2026-05-15 19:12:47 +03:00
  • 5f8df655cc
    fix(cadastre): cad_parcels.geom Polygon -> MultiPolygon (migration 93) (#185) lekss361 2026-05-15 18:52:38 +03:00
  • c76b794841 fix(cadastre): cad_parcels.geom Polygon -> MultiPolygon (migration 93) lekss361 2026-05-15 18:47:38 +03:00
  • e3359c4f03
    fix(cadastre): filter Point/LineString geometry in upsert_parcel/zouit (#184) lekss361 2026-05-15 18:37:29 +03:00
  • adc1eb1366 fix(cadastre): filter Point/LineString geometry in upsert_parcel/zouit lekss361 2026-05-15 18:32:50 +03:00
  • e695bca1e4
    fix(cadastre): remove shared phase_state early-exit (race condition) (#183) lekss361 2026-05-15 17:41:27 +03:00
  • 69bb7375b0 fix(cadastre): remove shared phase_state early-exit (race condition) lekss361 2026-05-15 17:33:00 +03:00
  • 057f8891dc
    fix(cadastre): count snapshot+per-cat requests in cadastre_jobs.requests_count (#182) lekss361 2026-05-15 17:17:01 +03:00
  • 905ef443fc
    fix(cadastre): auto-heal cad_quarters_geom from CAT_QUARTER_STATS feature (#181) lekss361 2026-05-15 17:16:39 +03:00
  • fa724f60ac fix(cadastre): count snapshot+per-cat requests in cadastre_jobs.requests_count lekss361 2026-05-15 17:10:03 +03:00
  • 4ca1706d25 fix(cadastre): auto-heal cad_quarters_geom from CAT_QUARTER_STATS feature lekss361 2026-05-15 17:08:01 +03:00
  • d5b57ccbf1
    feat(cadastre): per-category NSPD snapshot — Phase 1.5 (ZOUIT/ENK) (#180) lekss361 2026-05-15 16:53:49 +03:00
  • df5034fe29 feat(cadastre): per-category NSPD snapshot — Phase 1.5 (ZOUIT/ENK) lekss361 2026-05-15 16:48:59 +03:00
  • 3beb75d68a
    fix(cadastre): skip grid-walk for broken quarter geometries (#168) (#179) lekss361 2026-05-15 16:25:06 +03:00
  • e18e146463 test(cadastre): add quarter_bbox_3857 boundary tests (PR #179 bot blocker) lekss361 2026-05-15 16:22:36 +03:00
  • 6d9b30625b fix(cadastre): skip grid-walk for broken quarter geometries (#168) lekss361 2026-05-15 16:15:04 +03:00
  • 6dfff5e046
    fix(cadastre): CAST :geom AS text — psycopg AmbiguousParameter (#168) (#178) lekss361 2026-05-15 16:02:03 +03:00
  • 6a585db0b6 fix(cadastre): CAST :geom AS text — psycopg AmbiguousParameter (#168) lekss361 2026-05-15 15:57:27 +03:00
  • 99e2210919
    fix(cadastre): NSPD response parse — properties.category + top-level meta (#168) (#177) lekss361 2026-05-15 15:40:01 +03:00
  • 4f4868412d fix(cadastre): test fixtures use real NSPD shape — properties.category + top-level meta (#168) lekss361 2026-05-15 15:33:25 +03:00
  • b199c3f225 fix(cadastre): NSPD response parse — properties.category + top-level meta (#168) lekss361 2026-05-15 15:23:52 +03:00
  • 608490fbba
    fix(parcels): _parse_floors handle int (post-migration #169) (#176) lekss361 2026-05-15 15:08:16 +03:00
  • d83fb9cfa8 fix(test): exclude prod_smoke tests by default (#168) lekss361 2026-05-15 15:04:10 +03:00
  • 4ace87af14 fix(cadastre): exact-match headers to nspd_lite to bypass NSPD WAF (#168) lekss361 2026-05-15 14:59:41 +03:00
  • 7c4d6678b1 test(smoke): production smoke tests for post-deploy regressions (#168) lekss361 2026-05-15 14:52:16 +03:00
  • 9197a539e9 fix(parcels): _parse_floors handle int (post-migration #169 schema change) lekss361 2026-05-15 14:50:22 +03:00
  • 8dee9546ae
    fix(cadastre): NSPDBulkClient verify=False for NSPD SSL chain (#168 hotfix) (#175) lekss361 2026-05-15 14:50:21 +03:00
  • 5785fc3ad7 fix(cadastre): NSPDBulkClient verify=False for NSPD SSL chain (#168 hotfix) lekss361 2026-05-15 14:47:28 +03:00
  • 37e4f854c5
    fix(db): retire ALL legacy cad_buildings index names before rename (#168 hotfix2) (#174) lekss361 2026-05-15 14:09:40 +03:00
  • ac18ef32f9 fix(db): retire ALL legacy cad_buildings index names before rename (#168 hotfix2) lekss361 2026-05-15 14:05:23 +03:00
  • 7b2d1782e9
    fix(db): retire legacy cad_buildings_pkey before rename — fix migration 92 (#168 hotfix) (#173) lekss361 2026-05-15 13:59:53 +03:00
  • e2d1ce3679 fix(db): retire legacy cad_buildings_pkey before rename — fix migration 92 (#168 hotfix) lekss361 2026-05-15 13:51:24 +03:00
  • ced237804d
    feat(admin): cadastre bulk harvest UI at /admin/scrape/cadastre (#168 PR4/5) (#172) lekss361 2026-05-15 13:46:07 +03:00
  • 029dcb4cb1 feat(admin): cadastre bulk harvest UI at /admin/scrape/cadastre (#168 PR4/5) lekss361 2026-05-15 13:38:39 +03:00
  • 5da66bbc93
    feat(cadastre): bulk_harvest worker + grid-walker + admin API (#168 PR3/5) (#171) lekss361 2026-05-15 13:31:32 +03:00
  • 7e95c9776f fixup(cadastre): use importlib.util.find_spec instead of import (#168 PR3) lekss361 2026-05-15 13:24:24 +03:00
  • 32eeda5db1 fixup(cadastre): tile_size unified param + register slow marker (#168 PR3) lekss361 2026-05-15 13:17:48 +03:00
  • 60f075cf9f fixup(cadastre): drop importorskip (PR2 merged) — imports now top-level (#168 PR3) lekss361 2026-05-15 13:10:11 +03:00
  • 59f222eaf3
    feat(db): bulk cadastre schema — 7 tables + cadastre_jobs (#168 PR1/5) (#169) lekss361 2026-05-15 13:05:25 +03:00
  • 13025c81ee feat(cadastre): bulk_harvest_quarter Celery task + grid-walker + saga state (#168 PR3/5) lekss361 2026-05-15 13:03:23 +03:00
  • b4bc70489b fixup(db): address PR #169 bot review — 2 blockers + 3 lessers lekss361 2026-05-15 12:59:42 +03:00
  • b7889d113b
    feat(cadastre): NSPDBulkClient + schemas for bulk ingest (#168 PR2/5) (#170) lekss361 2026-05-15 12:50:41 +03:00