Commit graph

  • 3d4511ef00 Merge pull request 'fix(sf-09): MAX_BUCKET_SHARE 35% cap + frontend warning banner' (#282) from fix/sf-09-max-bucket-share into main lekss361 2026-05-17 12:33:13 +00:00
  • 689327909c fix(sf-09): capacity-aware redistribute (round 2) — bounded + correct invariant lekss361 2026-05-17 15:30:50 +03:00
  • bcd7dc8f75 fix(sf-09): iterative cap algorithm + cap_skipped flag + unit tests lekss361 2026-05-17 15:21:51 +03:00
  • 0d11f426b2 fix(sf-09): MAX_BUCKET_SHARE 35% cap + frontend warning banner lekss361 2026-05-17 14:49:56 +03:00
  • d6a9824473 Merge pull request 'fix(sf-08): room_bucket euro-1/euro-2 classification' (#281) from fix/sf-08-room-bucket-euro into main lekss361 2026-05-17 11:42:42 +00:00
  • b9259cd8ed fix(sf-08): add euro-1/euro-2 room_bucket for small-format rooms=2 flats lekss361 2026-05-17 14:38:48 +03:00
  • df2b47d27c Merge pull request 'fix(sf-07): median_12m alias + UI 12mo hint' (#280) from fix/sf-07-median-12m-alias into main lekss361 2026-05-17 11:31:18 +00:00
  • 4d39ae5b5d fix(sf-07): use median_12m from mv_quarter_price_per_m2 for district price lekss361 2026-05-17 14:28:32 +03:00
  • 28ca7bf6a8 Merge pull request 'chore: add landing.html static page' (#279) from chore/landing-html into main lekss361 2026-05-17 11:03:16 +00:00
  • a3066733c2 chore: add landing.html static page lekss361 2026-05-17 13:59:23 +03:00
  • 102ef88d56 Merge pull request 'fix(sf-03): CompetitorTable Status column + filter tabs' (#278) from fix/sf-03-competitor-table-status into main lekss361 2026-05-17 10:50:27 +00:00
  • 8d95bf0c5a Merge pull request 'fix(sf-04b): bulk seed mappings для всех ЖК (audit extension PR #273)' (#277) from fix/sf-04b-bulk-mapping-audit into main lekss361 2026-05-17 10:43:09 +00:00
  • 98323027aa fix(sf-03): CompetitorTable Status column + filter tabs lekss361 2026-05-17 13:41:15 +03:00
  • da1c619a9c fix(sf-04b): bulk seed mappings для всех ЖК с активностью в Objective lekss361 2026-05-17 13:36:34 +03:00
  • 7a27cb857f Merge pull request 'fix(sf-02): добавить site_status/ready_dt в /analyze competitors + sort строящиеся first' (#276) from fix/sf-02-competitors-status-analyze into main lekss361 2026-05-17 10:35:46 +00:00
  • 1799e1fb30 fix(sf-02): добавить site_status/ready_dt в /analyze competitors + sort строящиеся first lekss361 2026-05-17 13:29:59 +03:00
  • 15e75c20dc Merge pull request 'fix(sf-01): time_window honest velocity — inline SQL с реальным фильтром report_month' (#275) from fix/sf-01-velocity-time-window into main lekss361 2026-05-17 09:24:57 +00:00
  • c701636515 Merge forgejo/main into fix/sf-01-velocity-time-window lekss361 2026-05-17 12:15:40 +03:00
  • 5a4408e0ab fix(sf-01): time_window honest velocity — inline SQL с реальным фильтром report_month lekss361 2026-05-17 12:12:19 +03:00
  • ac1da79946 Merge pull request 'fix(sf-05): clamp sold_pct_of_supply на 100% + is_oversold flag' (#274) from fix/sf-05-sold-pct-normalize into main lekss361 2026-05-17 09:04:21 +00:00
  • 9372af4494 Merge pull request 'fix(sf-04): seed PRINZIP project mappings в objective_complex_mapping (Малевич + Ньютон парк)' (#273) from fix/sf-04-malevich-mapping into main lekss361 2026-05-17 09:04:18 +00:00
  • 247c252b04 fix(sf-05): clamp sold_pct_of_supply at 100% + add is_oversold flag lekss361 2026-05-17 11:57:29 +03:00
  • 9127cf2060 Merge pull request 'fix(sf-06): MarketTab reorder — Competitors → BestLayouts → Velocity первыми' (#272) from fix/sf-06-market-tab-reorder into main lekss361 2026-05-17 08:57:18 +00:00
  • 31b13c18b1 fix(sf-04): seed PRINZIP project mappings в objective_complex_mapping lekss361 2026-05-17 11:57:06 +03:00
  • 81bf798c27 fix(sf-06): MarketTab reorder — Competitors → BestLayouts → Velocity первыми lekss361 2026-05-17 11:52:45 +03:00
  • a4247e1d96 Merge pull request 'chore(preview): remove basic auth от /preview/*' (#270) from chore/preview-remove-auth into main lekss361 2026-05-17 08:39:28 +00:00
  • 7a2ba4d35a chore(preview): remove basic auth от /preview/* — публичный доступ lekss361 2026-05-17 11:37:41 +03:00
  • 744faa1f80 Merge pull request 'fix(deploy): force-recreate caddy для подхвата новых compose mounts' (#269) from fix/deploy-caddy-force-recreate into main lekss361 2026-05-17 08:33:15 +00:00
  • 11e78d738e fix(deploy): force-recreate caddy чтобы новые compose mounts применились lekss361 2026-05-17 11:30:45 +03:00
  • fa76e6ac9f Merge pull request 'feat(preview): static HTML mockups на /preview/* (basic auth)' (#268) from feat/preview-mockups-static into main lekss361 2026-05-17 08:19:24 +00:00
  • f1bc821c2b feat(preview): add static mockups behind basic auth at /preview/* lekss361 2026-05-17 11:15:13 +03:00
  • ee0bad445d Merge pull request 'fix(#231): re-enable nspd-harvest-stale-quarters beat schedule (Sub-PR D)' (#267) from fix/231-nspd-beat-reenable into main lekss361 2026-05-17 07:50:34 +00:00
  • f160c5efaf Merge pull request 'feat(#263 sub-A): cad_* overlay schemas + cadastre territorial_zones (ПЗЗ)' (#265) from feat/263-sub-a-cad-nspd-overlay-schemas-and-pzz into main lekss361 2026-05-17 07:50:08 +00:00
  • 8e377059a4 fix(#265 review): CRS 3857→4326 + stable zone_id hash + rename 102 + tx comment lekss361 2026-05-17 10:45:52 +03:00
  • 9bac676b98 Merge pull request 'fix(#264): apiFetch — global X-Session-Id header (custom POI scoring в UI)' (#266) from fix/264-session-id-global-apifetch into main lekss361 2026-05-17 07:42:00 +00:00
  • d4da1b26c6 fix(#231): re-enable nspd-harvest-stale-quarters beat schedule (Sub-PR D) lekss361 2026-05-17 10:37:07 +03:00
  • 2d58c3a203 fix(#264): apiFetch — global X-Session-Id header (custom POI scoring в UI) lekss361 2026-05-17 10:31:54 +03:00
  • f08db43145 feat(#263 sub-A): cad_* overlay schemas + cadastre territorial_zones (ПЗЗ) lekss361 2026-05-17 10:28:22 +03:00
  • 26ee3b015c Merge pull request 'fix(#261): custom_pois — regression tests для db.commit() в create/update/delete (P0 persistence)' (#262) from fix/261-custom-pois-missing-commit into main lekss361 2026-05-17 07:26:54 +00:00
  • 8ebcd15ed6 Merge pull request 'fix(#231): switch search_by_quarter area layers to grid-walk (Sub-PR B)' (#260) from fix/231-nspd-search-by-quarter-grid into main lekss361 2026-05-17 07:26:08 +00:00
  • 570c987e78 fix(#231): repair test_rate_limit_semaphore regression + docstring sync lekss361 2026-05-17 10:22:16 +03:00
  • c94545f0eb fix(#261): add db.commit() regression tests для custom_pois service lekss361 2026-05-17 10:16:36 +03:00
  • 8191a85102 fix(#231): address re-review blockers — per-instance semaphore + time_limit + test mocks lekss361 2026-05-17 10:13:34 +03:00
  • e3eb8c873f Merge pull request 'feat(#254,#114): custom POI UI (Leaflet click-to-add) + score breakdown stacked-bar' (#258) from feat/254-custom-pois-ui into main lekss361 2026-05-17 06:47:08 +00:00
  • fdced94626 fix(#231): switch search_by_quarter area layers to grid-walk dispatch (Sub-PR B) lekss361 2026-05-17 09:46:42 +03:00
  • 8cc94472f7 Merge pull request 'feat(#254): user_custom_pois — backend schema + CRUD + scoring integration' (#257) from feat/254-custom-pois-backend into main lekss361 2026-05-17 06:42:29 +00:00
  • 9dd72ece0c Merge pull request 'fix(#234): NSPD harvest ETA badge + SETNX dedupe (Sub-PR C)' (#250) from fix/234-nspd-harvest-eta-badge into main lekss361 2026-05-17 06:35:40 +00:00
  • 6ecd7a9269 feat(#254,#114): custom POI UI + score breakdown stacked-bar viz lekss361 2026-05-17 09:35:35 +03:00
  • 485f489bd2 feat(#254): user_custom_pois — backend schema + CRUD + scoring integration lekss361 2026-05-17 09:34:33 +03:00
  • 81cf274e80 fix(#234): address re-review nits — Settings singleton + docstring sync lekss361 2026-05-17 09:31:43 +03:00
  • b99ac76463 Merge remote-tracking branch 'forgejo/main' into fix/234-nspd-harvest-eta-badge lekss361 2026-05-17 09:19:12 +03:00
  • 990c109756 fix(#234): NSPD harvest ETA badge + SETNX dedupe (Sub-PR C) lekss361 2026-05-17 09:13:06 +03:00
  • 10b79da2e9 fix(#243): cad_zouit fallback срабатывает когда nspd dump полностью отсутствует (#248) lekss361 2026-05-17 06:03:19 +00:00
  • 95e97da713 Merge pull request 'fix(#242): ekburg_permits SSL — verify=False для CA Минцифры РФ (clean re-roll PR #245)' (#249) from fix/242-ekburg-permits-ssl-clean into main lekss361 2026-05-17 06:01:22 +00:00
  • 4a48d49474 fix(#242): ekburg_permits SSL — verify=False для CA Минцифры РФ lekss361 2026-05-17 08:46:06 +03:00
  • 4519daf149 feat(#126): Sub-PR A — NSPDClient.get_features_in_bbox_grid + engineering classifier (#247) lekss361 2026-05-17 05:54:30 +00:00
  • 992477c8f8 fix(#244): harvest_quarter — CAST CASE WHEN params (psycopg3 AmbiguousParameter) (#246) lekss361 2026-05-17 05:53:08 +00:00
  • 04896afa99 fix(#243): cad_zouit fallback срабатывает когда nspd dump полностью отсутствует lekss361 2026-05-17 08:49:31 +03:00
  • 7338693500 feat(#126): Sub-PR A — NSPDClient.get_features_in_bbox_grid + engineering classifier lekss361 2026-05-17 08:48:23 +03:00
  • aec45a55cb fix(#244): harvest_quarter — CAST CASE WHEN params (psycopg3 AmbiguousParameter) lekss361 2026-05-17 08:45:13 +03:00
  • 3000fed7e9 fix(#242): ekburg_permits SSL — verify=False для CA Минцифры РФ lekss361 2026-05-17 08:46:06 +03:00
  • 2a47084ee5 feat(#126): Sub-PR A — NSPDClient.get_features_in_bbox_grid + engineering classifier lekss361 2026-05-17 08:44:01 +03:00
  • 6f565c19fa Merge pull request 'fix(#233): add pzz_sync to beat schedule (monthly)' (#241) from fix/issue233-pzz-sync-beat into main lekss361 2026-05-17 05:32:52 +00:00
  • 232dbc9285 fix(#233): add pzz_sync to beat schedule (monthly) lekss361 2026-05-17 08:29:40 +03:00
  • 7d0bc4bb6b Merge pull request 'feat(#29,#232): wire cad_parcels.permitted_use в analyze + cad_zouit fallback (G2+G3)' (#240) from feat/g2-g3-analyze-parcel-meta-zouit-fallback into main lekss361 2026-05-17 05:26:02 +00:00
  • b8a15cac09 Merge pull request 'feat(#104): admin endpoint POST /admin/scrape/ekburg-permits для manual trigger' (#239) from feat/104-ekburg-permits-admin-endpoint into main lekss361 2026-05-17 05:21:16 +00:00
  • f70be684da feat(#29,#232): wire cad_parcels.permitted_use in analyze + cad_zouit fallback (G2+G3) lekss361 2026-05-17 08:17:22 +03:00
  • 0135f3c7c4 feat(#104): add POST /admin/scrape/ekburg-permits for manual trigger lekss361 2026-05-17 08:13:32 +03:00
  • 56bf28758c Merge pull request 'feat(#115): Leaflet layer toggle для connection points (Макс KILLER)' (#230) from feat/connection-points-leaflet-layer into main lekss361 2026-05-16 20:00:55 +00:00
  • e7a5ba8f81 Merge pull request 'fix(#112): competitors avg_price_per_m2 всегда None — убран WHERE status='sold'' (#228) from fix/issue112-sold-filter-avg-price into main lekss361 2026-05-16 19:52:44 +00:00
  • a7671513c9 feat(#115): Leaflet layer toggle для connection points (Макс KILLER) lekss361 2026-05-16 22:51:12 +03:00
  • a6e4ff0407 feat(#114): seed 3 default weight presets + include_system API param lekss361 2026-05-16 22:49:56 +03:00
  • 31581cedd2 fix(#112): remove broken status='sold' filter from competitors avg_price query lekss361 2026-05-16 22:46:10 +03:00
  • e4852b0ec9 Merge pull request 'fix(beat): use /tmp/celerybeat-schedule (workdir /app not writable by app user)' (#226) from fix/beat-celerybeat-schedule-permission into main lekss361 2026-05-16 19:06:27 +00:00
  • 718a70f6e9 fix(beat): use /tmp/celerybeat-schedule (workdir /app not writable by app user) lekss361 2026-05-16 22:03:45 +03:00
  • b5379fb135 Merge pull request 'fix(infra): wire GlitchTip DSNs (build-arg + env_file) + reject sentry.io promote' (#225) from fix/glitchtip-wire-prod-dsns into main lekss361 2026-05-16 18:51:41 +00:00
  • e64fbd670b fix(infra): wire GlitchTip DSNs (build-arg + env_file) + reject sentry.io promote lekss361 2026-05-16 21:48:28 +03:00
  • ea7a8f4aeb Merge pull request 'fix(sql): escape apostrophe in migration 99 COMMENT (deploy hotfix)' (#224) from fix/migration-99-apostrophe into main lekss361 2026-05-16 18:24:18 +00:00
  • f704785428 fix(sql): escape apostrophe in migration 99 COMMENT (deploy hotfix) lekss361 2026-05-16 21:02:00 +03:00
  • 4860cc790a Merge pull request 'feat(nspd): denorm nspd_parcels + nspd_buildings (#94 PR3 of 4)' (#222) from feat/94-pr3-denorm-entities into main lekss361 2026-05-16 17:56:59 +00:00
  • 813b8bd589 Merge pull request 'fix(infra): GlitchTip EMAIL_URL dummy:// → consolemail:// (crashes Django on start)' (#223) from fix/glitchtip-email-url-consolemail into main lekss361 2026-05-16 17:56:53 +00:00
  • 1ec0a720fb fix(infra): GlitchTip EMAIL_URL dummy:// → consolemail:// (django-environ schema) lekss361 2026-05-16 19:30:06 +03:00
  • db1ff5b1fc feat(nspd): denorm nspd_parcels + nspd_buildings tables (#94 PR3 of 4) lekss361 2026-05-16 20:20:03 +03:00
  • 5a7d405c77 Merge pull request 'feat(nspd): TIER 4 opportunity + red lines (#94 PR2 of 4)' (#220) from feat/94-pr2-opportunity-redlines into main lekss361 2026-05-16 17:09:52 +00:00
  • 572d235d70 Merge pull request 'fix(infra): restore git.gendsgn.ru block in Caddyfile' (#221) from fix/caddyfile-add-git-block into main lekss361 2026-05-16 17:02:05 +00:00
  • 82931897dd fix(infra): restore git.gendsgn.ru block in Caddyfile lekss361 2026-05-16 19:51:54 +03:00
  • fdb54834e5 fix(nspd): rename migration 89→98, fix red lines ST_Area→ST_Length (#220) lekss361 2026-05-16 19:33:14 +03:00
  • ed3c128528 feat(nspd): TIER 4 opportunity layers + red lines (#94 PR2 of 4) lekss361 2026-05-16 19:06:22 +03:00
  • 99372a211f Merge pull request 'fix(recommend): cad_buildings.floors is INTEGER not TEXT (HOTFIX)' (#218) from fix/recommend-mix-floors-integer into main lekss361 2026-05-16 16:00:23 +00:00
  • 021b0589b2 fix(infra): bootstrap_glitchtip — \gexec instead of DO block (psql var trap) (#219) lekss361 2026-05-16 15:54:29 +00:00
  • fbb76812f4 fix(recommend): cad_buildings.floors is INTEGER, not TEXT lekss361 2026-05-16 18:29:35 +03:00
  • a1091cdd5a fix(infra): bootstrap_glitchtip — \gexec instead of DO block (psql var trap) lekss361 2026-05-16 18:28:42 +03:00
  • 277499684b feat(frontend): @sentry/nextjs init для GlitchTip (#204 frontend) (#208) lekss361 2026-05-16 15:09:38 +00:00
  • b61f025673 feat(backend): sentry-sdk init для FastAPI + Celery (#204 backend) (#207) lekss361 2026-05-16 15:09:16 +00:00
  • d3aa96336b feat(infra): GlitchTip self-hosted error tracking (#204 devops) (#205) lekss361 2026-05-16 15:08:50 +00:00
  • 653e74f6b7 feat(frontend): @sentry/nextjs init for GlitchTip self-hosted (#204) lekss361 2026-05-16 18:04:13 +03:00
  • 8a04af5da3 fix(backend): GlitchTip release fallback + apiKey scrub (#204 review fixes) lekss361 2026-05-16 18:04:01 +03:00
  • e0055d299c Merge pull request 'feat(nspd): TIER 3 risk zones (#94 PR1 of 4)' (#217) from feat/94-pr1-risk-zones into main lekss361 2026-05-16 15:03:18 +00:00
  • ffaa36336a fix(infra): GlitchTip profiles + SQL safety + mem_limit (#204 review fixes) lekss361 2026-05-16 18:01:50 +03:00
  • 1595157ebf feat(nspd): enable TIER 3 risk zones harvest + extract in analyze (#94 PR1) lekss361 2026-05-16 16:11:59 +03:00