Commit graph
Select branches
Hide pull requests
audit/1871-p1-2-ghost-anchor-guard
audit/1871-p1-3-isreal-stubs
audit/1871-p1-scenarios-collapse
audit/1871-p2-avito-coord
audit/1871-p2-estimator-dedup-split
audit/1871-p2-invest-moi
audit/1871-p2-velocity-market
audit/1871-p3-uiux
chore/analyst-inbound-queue-tradein-db
chore/bot-harness-tuning
chore/bot-safety-followups
chore/design-sync-tradein
chore/frontend-vitest-wkt-tests
chore/mock-financial-estimate
chore/ptica-iso-preview-spin
chore/remove-n1-scraper
ci/forgejo-pytest-gate
ci/frontend-vitest-job
docs/agent-usage-throttle-qa-terminal
feat/1746-utility-infra-map
feat/39-osrm-per-category
feat/794-sber-time-adjust
feat/801-preview-full-wt
feat/activate-domclick-sweep
feat/analyst-role-audit-962
feat/analyze-market-coords-999
feat/analyze-response-contract-961
feat/avito-detail-backfill
feat/avito-newbuilding-capture
feat/avito-newbuilding-sweep
feat/backtest-oos-almon-seasonal
feat/browser-concurrent-pool
feat/cbr-inflation-macro-946
feat/cian-zhk-resolve-972
feat/claude-envvars-and-stale-cron
feat/competitor-velocity-spatial-fallback-968
feat/concept-house-catalog-1965-stage3a
feat/concept-house-picker-1965-stage3b
feat/concept-live-massing-1965-stage2b
feat/concept-recompute-1965-stage2a
feat/concept-section-1965-stage1
feat/dcf-velocity-schedule
feat/demand-supply-months-of-inventory
feat/district-vocab-reconciliation
feat/emiss-macro-indicators-946
feat/finmodel-cost-cascade
feat/finmodel-dcf
feat/finmodel-financing
feat/finmodel-price-calibration
feat/finmodel-sitefinder-bridge
feat/forecast-celery-task-persist
feat/forecast-chart-section6
feat/forecast-docx-pptx-buttons
feat/forecast-endpoint-horizon-enqueue
feat/forecast-export-docx-959
feat/forecast-export-md-959
feat/forecast-export-pptx-959
feat/forecast-export-telegram-959
feat/forecast-export-ui-959
feat/forecast-future-supply-competitors
feat/forecast-meta-footer
feat/forecast-orchestrator-service
feat/forecast-product-tz-block
feat/forecast-scoring-panel
feat/forecast-section-998
feat/horizon-selector-996
feat/insight-entity-948a
feat/listings-segment-param-1188
feat/location-948b-r
feat/location-entity-948b
feat/market-map-layers-999
feat/newbuilding-enrich-backfill-972
feat/objective-lots-history-writer-307-obj6
feat/plan-vectorization-spike-299
feat/ptica-cockpit-complete-bottom
feat/ptica-default-and-rich-map
feat/ptica-map-glyphs-sitefinder-dark
feat/ptica-real-ksit-frontend
feat/ptica-tabs-6-6-reports-params
feat/riasurt-sverdl-layers-108
feat/rosstat-emiss-macro-946
feat/site-finder-v2-cockpit
feat/site-finder-v2-map-light-polish
feat/tradein-address-precision
feat/tradein-avito-houses-fix
feat/tradein-avito-imv-fix
feat/tradein-backfill-prioritize-listings
feat/tradein-domclick-house-sku-schema
feat/tradein-ekb-geoportal-buildings
feat/tradein-fias-estimate-frontend
feat/tradein-fias-tier-matching
feat/tradein-geocode-deals-from-houses
feat/tradein-geocode-deals-nominatim
feat/tradein-hedonic-ground-floor
feat/tradein-repair-coef-calibration
feat/tradein-same-building-match
feat/velocity-mv-61
feat/wire-978-almon-rate-regime
feat/wire-district-resolver
feat/yandex-camoufox-transport
feat/yandex-detail-backfill
feat/yandex-exhaustive-price-room
feat/yandex-novostroyki-newflat
feat/zone-regulation-backfill
fix/1666-layout-velocity-beat
fix/1667-metro-block
fix/1668-analyze-confidence
fix/171-migration-path
fix/1781-house-fk-source-identity
fix/1917-fetch-json-network-retry
fix/1926-app-log-stdout
fix/1926-scrape-runs-total-seen
fix/2013-avito-cohort-null
fix/admin-leads-interval-cast-1694
fix/admin-scrape-validation
fix/affordability-market-spread
fix/audit-followups-1953
fix/avito-novostroyki-segment
fix/avito-proactive-ip-rotate
fix/avito-sweep-single-run-guard
fix/backfill-kadastr-column
fix/backtest-sig-gate
fix/base-pace-room-bucket-1593
fix/best-layouts-bucket-normalization
fix/best-layouts-per-object-snapshot-1956
fix/cad-zones-multipolygon-1344
fix/ci-dedup-runner-storm-1709
fix/cian-detail-rich-fields
fix/cian-kitchen-area
fix/cian-paginate-tail-1393
fix/confidence-deal-count-window-1637
fix/conflict-resolution-freshness-1539
fix/deficit-segmentation-1959
fix/district-median-dedup-1352
fix/dkp-corridor-doc-p10p90-1695
fix/dkp-corridor-percentile-1520
fix/domrf-badge-regex-narrow-1686
fix/domrf-status-classify-1609
fix/emiss-period-dedup-1606
fix/emiss-pk-granularity-1687
fix/enrich-economics-window-1513
fix/estimator-tiebreaker-nanalogs
fix/excel-deficit-horizon-1590
fix/expire-brusnika-trial-access
fix/finmodel-split-disclosure-threshold
fix/frontend-healthcheck-hostname
fix/gate-verdict-no-blocker-1617
fix/geo-weight-floor-1633
fix/gknspecial-incremental-commit-per-prefix
fix/house-id-fk-realtime-link
fix/inn-regex-context-1640
fix/inn-regex-word-boundary-1682
fix/izyatie-ocr-cad-normalize
fix/job-settings-json-persist-v2
fix/job-settings-panel-json-state-persist
fix/leads-stats-window-1383
fix/listings-partial-indexes-1398
fix/match-economics-1511-1512
fix/migration-162-table-if-exists
fix/noise-loader-savepoint-per-row
fix/normalize-zero-fill-guard-1638
fix/nspd-geo-soft-time-limit-passthrough
fix/nspd-soft-time-limit-v2
fix/objective-lots-dedup-1964
fix/objective-mapping-is-reviewed-gate-307-obj2
fix/objective-sync-config-bare-except
fix/okn-objects-full-registry-load
fix/parcel-ird-overlap-except-expand
fix/parcel-snapshot-mdash-double-escape
fix/parking-economics-by-class
fix/pdf-expires-at-1530
fix/pilot-request-modal-validation
fix/poi-loader-leap-year-date-replace
fix/poi-score-scale-1486
fix/ptica-3d-preview-product-verdict
fix/ptica-button-fontsize
fix/ptica-inter-map-product
fix/ptica-left-rail
fix/ptica-parity-data-mapping
fix/ptica-visual-parity
fix/ptica-vri-row
fix/quartirography-area-bucket-1406
fix/rbac-test-user2-expired
fix/recommend-mix-saturation-latest-snapshot
fix/report-assembler-confounded-keys
fix/report-frontend-display-1953
fix/report-map-points-1961
fix/report-microcopy-1963
fix/report-nspd-zoning-1962
fix/residential-zone-detect-1353
fix/sber-dataset-paths-902
fix/score-label-threshold-1357
fix/score-sat-factor-1509
fix/scrape-cadastre-fail-counter-v2
fix/scrape-cadastre-permanent-fail-counter
fix/sf-feedback-batch
fix/site-finder-entry-crash-1001
fix/smart-suggestions-threshold-1503
fix/sold-pct-market-verdict-1407
fix/supply-layers-overlap-1355
fix/supply-view-devgroup-key-1650
fix/test-849-savepoint-count
fix/tradein-dedup-by-fias
fix/tradein-dedup-fias-pass-no-geoguard
fix/tradein-deploy-scraper-paths-filter
fix/tradein-no-numberless-house-insert
fix/tradein-praktika-logo-form-scroll
fix/tradein-v2-uiux-p1
fix/trend-ratio-vprior-zero-1508
fix/usermenu-analyst-role-label
fix/v2-map-legend-position
fix/v2-remove-resource-legend
fix/weather-wind-d-allnone
fix/week-review-backend-v2
fix/week-review-finish
fix/zoning-resolution-decouple
fix/zouit-engineering-area-gate
main
perf/171-objective-crm-report-month-idx
perf/best-layouts-objects-first
perf/forecast-parallel-horizons-1129
perf/tradein-estimate-audit
revert/site-finder-v2
rollback/sf-old-analysis-design
rollback/site-finder-home-light
test/residential-zone-rawprops-1681
#1000
#1002
#1003
#1004
#1005
#1006
#1007
#1008
#1009
#1010
#1011
#1012
#1013
#1014
#1015
#1016
#1017
#1018
#1019
#1020
#1021
#1022
#1023
#1024
#1025
#1026
#1027
#1028
#1029
#1030
#1031
#1032
#1033
#1034
#1035
#1036
#1037
#1038
#1039
#1040
#1041
#1042
#1043
#1044
#1045
#1046
#1047
#1048
#1049
#1050
#1051
#1052
#1053
#1054
#1055
#1056
#1068
#1069
#1071
#1072
#1073
#1074
#1075
#1076
#1077
#1078
#1079
#1080
#1082
#1083
#1089
#109
#1090
#1092
#1093
#1094
#1096
#1097
#1098
#1099
#110
#1100
#1101
#1103
#1104
#1105
#1106
#1107
#1108
#1109
#111
#1110
#1111
#1112
#1113
#1114
#1115
#1117
#1118
#1120
#1121
#1123
#1124
#1125
#1126
#1127
#1128
#1131
#1132
#1133
#1135
#1137
#1139
#1140
#1141
#1143
#1144
#1145
#1146
#1147
#1148
#1149
#1150
#1152
#1153
#1154
#1155
#1157
#1158
#116
#1160
#1161
#1162
#1163
#1164
#1165
#1166
#1167
#1168
#117
#1170
#1171
#1172
#1173
#1174
#1175
#1176
#1177
#1178
#1179
#118
#1180
#1181
#1183
#1185
#119
#1192
#1193
#1194
#1195
#1197
#1199
#120
#1200
#121
#122
#123
#124
#1243
#1249
#125
#1250
#1251
#1252
#1253
#1254
#1255
#1256
#1257
#1258
#1259
#1260
#1261
#1262
#1263
#1264
#1265
#1266
#1267
#1268
#1269
#1270
#1271
#1272
#1273
#1274
#1275
#1276
#1277
#1278
#1279
#1280
#1281
#1282
#1283
#1284
#1285
#1286
#1287
#1288
#1289
#1290
#1291
#1292
#1293
#1294
#1295
#1296
#1297
#1298
#1299
#1300
#1301
#1302
#1303
#1304
#1305
#1306
#1307
#1308
#1309
#131
#1310
#1311
#1312
#1313
#1314
#1315
#1316
#1317
#1318
#1319
#132
#1320
#1321
#1322
#1323
#1324
#1325
#1326
#1327
#1328
#1329
#133
#1330
#1331
#1332
#1333
#1334
#1335
#135
#136
#137
#138
#139
#141
#142
#143
#145
#146
#147
#148
#149
#151
#152
#153
#154
#1540
#1541
#1542
#1543
#1544
#1545
#1546
#1547
#1548
#1549
#155
#1550
#1552
#1554
#1555
#1556
#1557
#1558
#1559
#1568
#157
#158
#159
#160
#163
#164
#165
#1657
#1658
#1659
#166
#1660
#1661
#1662
#1663
#1664
#1665
#1669
#167
#1670
#1671
#1672
#1673
#1674
#1675
#1676
#1677
#1678
#1679
#1680
#1681
#1682
#1683
#1684
#1685
#1686
#1687
#1688
#1689
#169
#1690
#1691
#1692
#1693
#1694
#1695
#1696
#1697
#1698
#1699
#170
#1700
#1701
#1702
#1703
#1704
#1705
#1706
#1707
#1708
#171
#1710
#1711
#1712
#1713
#1714
#1715
#1716
#1717
#1718
#1719
#172
#1720
#1721
#1722
#1724
#1725
#1726
#1727
#1728
#1729
#173
#1730
#1731
#1732
#1733
#1734
#1735
#174
#1747
#1748
#1749
#175
#1750
#1751
#1752
#1753
#1754
#1755
#1756
#1757
#1758
#1759
#176
#1760
#1761
#1762
#1763
#1764
#1765
#1766
#1767
#1768
#1769
#177
#1770
#1771
#1775
#1776
#1777
#1778
#1779
#178
#1780
#1782
#1783
#1784
#1786
#1787
#1788
#179
#1794
#1797
#1798
#1799
#180
#1800
#1802
#1807
#1808
#1809
#181
#1810
#1813
#1815
#1817
#1818
#1819
#182
#1821
#1822
#1823
#1824
#1825
#1826
#1827
#1828
#1829
#183
#1830
#1831
#1832
#1833
#1834
#1835
#1836
#1837
#1838
#1839
#184
#1840
#1841
#1842
#1844
#1845
#1847
#1848
#1849
#185
#1851
#1852
#1853
#1854
#1855
#1856
#1857
#1858
#1859
#186
#1860
#1861
#1862
#1863
#1864
#1865
#1866
#1867
#1868
#1869
#187
#1870
#1872
#1873
#1874
#1875
#1876
#1877
#1878
#1879
#188
#1880
#1882
#1883
#1884
#1885
#1886
#1887
#1888
#1889
#189
#1890
#1891
#1892
#1893
#1894
#1895
#1896
#1897
#1898
#1899
#190
#1900
#1901
#1902
#1903
#1904
#1905
#1906
#1907
#1908
#1909
#191
#1910
#1911
#1912
#1913
#1914
#1915
#1916
#1919
#192
#1920
#1921
#1922
#1923
#1924
#1925
#1927
#1928
#1929
#193
#1930
#1931
#1932
#1933
#1934
#1935
#1936
#1937
#1938
#1939
#194
#1941
#1942
#1943
#1944
#1946
#1947
#1948
#195
#1952
#196
#1973
#1974
#1975
#1976
#1977
#1978
#1979
#198
#1980
#1981
#1982
#1983
#1984
#1985
#1986
#1987
#1988
#199
#1997
#1998
#1999
#2001
#2004
#2005
#2006
#2014
#2015
#2016
#2017
#2018
#2019
#2020
#2021
#2022
#2023
#2024
#2025
#2026
#2027
#2028
#2029
#2030
#2031
#2032
#2033
#2034
#2035
#2037
#2047
#2048
#2049
#205
#2050
#2051
#2052
#2053
#2054
#2055
#2056
#2057
#2058
#2059
#206
#2060
#2061
#2063
#2064
#2065
#2066
#2067
#2068
#2069
#207
#2070
#2071
#2072
#2073
#2074
#2075
#2076
#2077
#2078
#2079
#208
#2080
#2082
#2083
#2084
#2085
#2086
#2088
#2089
#209
#2090
#2091
#2092
#2093
#2094
#2095
#2096
#2097
#2098
#2099
#210
#2100
#2101
#2102
#2103
#2104
#2105
#2106
#2107
#2108
#2109
#211
#2110
#2112
#2113
#2114
#2115
#2116
#2117
#2118
#212
#2120
#2121
#2122
#2123
#2124
#2125
#213
#2139
#214
#2140
#2141
#2142
#2143
#2144
#2145
#2146
#2147
#2148
#2149
#215
#2150
#2151
#2152
#2153
#2154
#2155
#2156
#2157
#2158
#2159
#216
#2165
#2166
#2167
#2168
#2169
#217
#2170
#2171
#2172
#2173
#2174
#2175
#2176
#218
#2182
#2183
#2184
#2185
#2186
#219
#2190
#2191
#2193
#2194
#2195
#2196
#2197
#2198
#2199
#220
#221
#2210
#2219
#222
#2220
#2221
#2222
#2223
#2224
#2225
#2226
#2227
#2228
#2229
#223
#2230
#2231
#2232
#2237
#2238
#2239
#224
#2240
#2241
#2242
#2243
#2244
#2245
#2246
#2247
#2248
#2249
#225
#2250
#2251
#2252
#2253
#2256
#2257
#2258
#226
#2260
#2261
#2263
#2268
#2270
#2271
#2272
#2273
#2274
#2276
#2278
#2279
#228
#2280
#2281
#2282
#2283
#2284
#2285
#2286
#2287
#2288
#2289
#229
#2290
#2292
#2293
#2296
#2297
#2298
#2299
#230
#2300
#2301
#2302
#2303
#2311
#2312
#2313
#2314
#2315
#2318
#2319
#2321
#2324
#2325
#2326
#2327
#2328
#2329
#2331
#2332
#2333
#2338
#2339
#2340
#2341
#2342
#2343
#2344
#2345
#2346
#2347
#2348
#2353
#2354
#2355
#2356
#2357
#2359
#2360
#2365
#2366
#2368
#2370
#2371
#2372
#2373
#2374
#2375
#2383
#2384
#2387
#2388
#2389
#239
#2390
#2391
#2392
#2393
#2394
#2396
#2398
#2399
#240
#2400
#2401
#2402
#2403
#2404
#2405
#2407
#241
#2410
#2411
#2412
#2413
#2414
#2415
#2417
#2418
#2419
#2420
#2421
#2424
#2426
#2427
#2428
#2429
#2430
#2432
#2433
#2434
#2436
#2437
#2438
#2439
#2441
#2444
#2446
#2447
#2448
#245
#2450
#2451
#2453
#2454
#2455
#2456
#2458
#2459
#246
#2460
#2461
#2463
#2465
#2466
#2467
#2468
#2469
#247
#2470
#2471
#2472
#2473
#2474
#2475
#2476
#2477
#2478
#2479
#248
#2480
#2481
#2482
#2483
#2484
#2485
#2486
#2487
#2488
#2489
#249
#2490
#2491
#2492
#2493
#2494
#2495
#2496
#2497
#2498
#2499
#250
#2500
#2501
#2502
#2503
#2504
#2505
#2506
#2507
#2508
#2509
#2510
#2511
#2512
#2513
#2514
#2515
#2516
#2517
#2518
#2519
#2520
#2521
#2522
#2523
#2524
#2525
#2526
#2527
#2528
#2529
#2530
#2531
#2532
#2533
#2534
#2535
#2536
#2537
#2538
#2539
#2540
#2541
#2542
#2543
#2544
#257
#258
#260
#262
#265
#266
#267
#268
#269
#270
#272
#273
#274
#275
#276
#277
#278
#279
#280
#281
#282
#283
#284
#285
#286
#287
#288
#289
#290
#291
#292
#293
#294
#296
#298
#302
#303
#304
#305
#306
#308
#309
#310
#311
#312
#313
#315
#316
#317
#318
#319
#320
#321
#322
#323
#324
#325
#326
#327
#328
#329
#330
#331
#332
#333
#334
#335
#336
#337
#338
#339
#340
#341
#342
#343
#344
#345
#346
#347
#348
#349
#350
#351
#352
#353
#354
#355
#356
#357
#358
#359
#360
#361
#362
#363
#364
#365
#366
#367
#368
#369
#370
#371
#372
#373
#374
#375
#376
#377
#378
#379
#380
#381
#382
#383
#384
#385
#386
#387
#388
#389
#403
#404
#405
#406
#407
#408
#409
#410
#412
#413
#414
#416
#417
#418
#419
#420
#421
#422
#423
#424
#425
#426
#430
#432
#433
#434
#435
#436
#437
#438
#439
#440
#441
#442
#443
#444
#445
#447
#448
#449
#450
#451
#452
#453
#454
#455
#456
#457
#458
#459
#460
#461
#462
#463
#464
#465
#466
#467
#468
#469
#470
#471
#472
#473
#474
#475
#476
#477
#478
#479
#480
#481
#482
#483
#484
#485
#486
#487
#488
#489
#490
#491
#492
#493
#494
#495
#496
#497
#498
#499
#500
#501
#502
#503
#504
#505
#506
#507
#508
#509
#510
#511
#512
#513
#514
#515
#516
#517
#518
#519
#520
#521
#522
#523
#524
#525
#526
#527
#528
#529
#530
#531
#532
#533
#534
#535
#536
#537
#538
#539
#540
#541
#542
#543
#544
#545
#546
#547
#548
#549
#550
#551
#552
#553
#554
#555
#556
#557
#558
#583
#584
#585
#586
#587
#588
#589
#590
#591
#592
#593
#594
#595
#596
#597
#598
#599
#600
#601
#602
#603
#604
#605
#606
#607
#608
#609
#610
#611
#612
#613
#614
#615
#616
#617
#618
#619
#620
#624
#625
#626
#627
#628
#629
#630
#631
#632
#634
#635
#637
#638
#640
#641
#642
#643
#645
#646
#649
#650
#660
#661
#662
#663
#664
#665
#668
#669
#670
#671
#672
#673
#674
#675
#676
#677
#678
#679
#680
#681
#682
#683
#684
#685
#686
#687
#688
#689
#700
#701
#702
#703
#704
#705
#706
#707
#708
#709
#710
#711
#712
#713
#715
#716
#718
#719
#720
#723
#725
#729
#733
#734
#735
#737
#738
#739
#743
#744
#745
#746
#749
#751
#752
#761
#776
#777
#778
#779
#780
#782
#783
#784
#785
#787
#788
#789
#790
#791
#792
#793
#797
#798
#802
#803
#804
#805
#807
#808
#809
#810
#811
#812
#813
#816
#817
#818
#819
#820
#825
#828
#829
#830
#831
#832
#833
#837
#838
#84
#840
#841
#842
#844
#845
#846
#847
#848
#85
#851
#852
#856
#857
#858
#86
#860
#861
#862
#863
#864
#866
#867
#868
#869
#87
#870
#872
#873
#874
#875
#876
#877
#878
#88
#881
#882
#889
#89
#890
#891
#892
#893
#894
#896
#897
#898
#899
#90
#900
#903
#904
#906
#907
#908
#909
#91
#910
#911
#912
#913
#914
#916
#917
#918
#919
#92
#921
#923
#924
#925
#926
#927
#929
#931
#932
#934
#935
#937
#938
#939
#940
#942
#943
#95
#963
#964
#98
#997
-
b211183940
feat(site-finder): детерминированная атрибуция застройщика в analyze (#1088)
Light1YT
2026-06-13 16:13:45 +05:00 -
3df163f741
fix(snapshot-pdf): Unicode '—' вместо HTML-entity '—' в Jinja or-fallback (#1234)
Light1YT
2026-06-13 15:04:12 +05:00 -
eada9a25ac
fix(scrapers): izyatie OCR — '6б:' → '66:' для кад-номеров МСК-66 (#1228)
Light1YT
2026-06-13 15:03:59 +05:00 -
367ed890f1
fix(objective-sync): log seed failure вместо bare except pass (#1226)
Light1YT
2026-06-13 15:03:34 +05:00 -
d8a2ad7854
fix(auth): отобразить роль analyst в UserMenu, расширить Role union в useMe (#1237)
Light1YT
2026-06-13 15:03:15 +05:00 -
49d26b4696
fix(poi_loader): timedelta(days=730) вместо replace(year=-2) → leap-year 29 февраля safe (#1232)
Light1YT
2026-06-13 15:03:08 +05:00 -
c3c6e2cef1
fix(okn): expand registry coverage + load detail-card name/address (#1159)
Light1YT
2026-06-13 14:30:29 +05:00 -
2e428405d2
fix(site-finder): расширить except в parcel_ird_overlaps до DataError (#1095)
Light1YT
2026-06-13 14:23:32 +05:00 -
d11c8d47e0
fix(workers): per-prefix db.commit() в gknspecial_harvest для durability (#1116)
Light1YT
2026-06-13 14:14:56 +05:00 -
8a30238564
fix(forecasting): propagate confounded flag DemandSupplyForecast → §15 (#1222)
Light1YT
2026-06-13 13:15:18 +05:00 -
fbafb1bf68
fix(landing): mirror Pydantic schema в PilotRequestModal validation (#1240)
Light1YT
2026-06-13 13:12:25 +05:00 -
703d3905b8
fix(site-finder): normalize supply room_bucket vocabulary to velocity side (#1229)
Light1YT
2026-06-13 13:09:42 +05:00 -
780dd5640c
fix(analytics): _district_market_saturation latest-snapshot filter (#1221)
Light1YT
2026-06-13 13:09:22 +05:00 -
d694e735cd
fix(site-finder): per-row SAVEPOINT в noise_loader (#1231)
Light1YT
2026-06-13 12:51:35 +05:00 -
285e8f974a
fix(sf): ekb_ppt_tep post-фильтры + врезка в analyze (#1136)
Light1YT
2026-06-13 14:28:41 +05:00 -
3573690ebc
fix(sf): ekb_ppt_tep post-фильтры + врезка в analyze (#1136)
Light1YT
2026-06-13 14:28:41 +05:00 -
a5ff281bad
fix(admin-jobs): UPSERT в PUT /admin/jobs/settings — не терять изменения (#1223)
Light1YT
2026-06-13 13:12:30 +05:00 -
f5e7fcdad9
fix(workers): cadastre permanent-fail targets_failed + beat cleanup (#1236)
Light1YT
2026-06-13 13:05:03 +05:00 -
28c567a34e
fix(scoring): correct price_feasibility reason — market rate, not subsidized (#1225)
Light1YT
2026-06-13 13:08:32 +05:00 -
1e2fa35c8e
fix(admin): persist JSON extra_config при свёрнутой textarea (#1239)
Light1YT
2026-06-13 13:05:08 +05:00 -
816bb3d3bd
fix(workers): re-raise SoftTimeLimitExceeded в nspd_geo, set paused (#1235)
Light1YT
2026-06-13 13:04:58 +05:00 -
01d00ec183
fix(custom-pois): invalidate canonical parcel-analyze + parcel-poi-score keys (#1241)
Light1YT
2026-06-13 12:47:18 +05:00 -
dc4da28217
fix(admin-jobs): UPSERT в PUT /admin/jobs/settings — не терять изменения (#1223)
Light1YT
2026-06-13 13:12:30 +05:00 -
10df430cac
fix(forecasting): _price_overlap zero-width discontinuity at §25.3 (#1224)
Light1YT
2026-06-13 12:54:14 +05:00 -
67d24e9bf7
fix(analytics): ObjectSaleChart tooltip показывает полный ₽/м², не /1000 (#1238)
Light1YT
2026-06-13 12:47:23 +05:00 -
514d627ce6
fix(scoring): correct price_feasibility reason — market rate, not subsidized (#1225)
Light1YT
2026-06-13 13:08:32 +05:00 -
ac446236e7
fix(beat): rewrite 4 cron entries in MSK to match conf.timezone (#1233)
fix/report-assembler-confounded-keys
fix/parcel-ird-overlap-except-expand
fix/okn-objects-full-registry-load
fix/gknspecial-incremental-commit-per-prefix
fix/best-layouts-bucket-normalization
Light1YT
2026-06-13 12:44:23 +05:00 -
e71224ef54
fix(scrapers): commit outer tx в domrf_catalog scrape_catalog_batch (#1227)
Light1YT
2026-06-13 12:44:18 +05:00 -
f21ffd927b
fix(admin): persist JSON extra_config при свёрнутой textarea (#1239)
Light1YT
2026-06-13 13:05:08 +05:00 -
fc3f8b890a
fix(workers): cadastre permanent-fail targets_failed + beat cleanup (#1236)
Light1YT
2026-06-13 13:05:03 +05:00 -
582eb4e8b0
fix(workers): re-raise SoftTimeLimitExceeded в nspd_geo, set paused (#1235)
Light1YT
2026-06-13 13:04:58 +05:00 -
582f384a5f
fix(forecasting): _price_overlap zero-width discontinuity at §25.3 (#1224)
Light1YT
2026-06-13 12:54:14 +05:00 -
931273628a
fix(site-analysis): per-call AbortController, не shared cancelledRef (#1242)
Light1YT
2026-06-13 12:43:47 +05:00 -
c97072314e
fix(analytics): ObjectSaleChart tooltip показывает полный ₽/м², не /1000 (#1238)
Light1YT
2026-06-13 12:47:23 +05:00 -
a1a0aaead6
fix(custom-pois): invalidate canonical parcel-analyze + parcel-poi-score keys (#1241)
Light1YT
2026-06-13 12:47:18 +05:00 -
bcb57bafd3
fix(beat): rewrite 4 cron entries in MSK to match conf.timezone (#1233)
Light1YT
2026-06-13 12:44:23 +05:00 -
141873d061
fix(scrapers): commit outer tx в domrf_catalog scrape_catalog_batch (#1227)
Light1YT
2026-06-13 12:44:18 +05:00 -
9fbc28fa33
fix(site-analysis): per-call AbortController, не shared cancelledRef (#1242)
Light1YT
2026-06-13 12:43:47 +05:00 -
0c62d0b0c3
fix(site-finder): склеить разорванный regex в _PLANNING_NO_MATCH_SQL (#1230)
fix/scrape-cadastre-fail-counter-v2
fix/recommend-mix-saturation-latest-snapshot
fix/pilot-request-modal-validation
fix/nspd-soft-time-limit-v2
fix/nspd-geo-soft-time-limit-passthrough
fix/job-settings-json-persist-v2
Light1YT
2026-06-13 12:43:28 +05:00 -
06c4bb9fd6
fix(workers): count lots_pf failure correctly, no silent 'done' (#1220)
fix/usermenu-analyst-role-label
fix/scrape-cadastre-permanent-fail-counter
fix/poi-loader-leap-year-date-replace
fix/parcel-snapshot-mdash-double-escape
fix/objective-sync-config-bare-except
fix/noise-loader-savepoint-per-row
fix/job-settings-panel-json-state-persist
fix/izyatie-ocr-cad-normalize
Light1YT
2026-06-13 11:23:50 +05:00 -
c48f45c48f
fix(forecasting): resolve admin district to micros в _query_artificial_demand (#1205)
Light1YT
2026-06-13 11:15:17 +05:00 -
0fffc535cd
fix(analytics): rolling 6mo/6mo окна в _district_velocity_trend (#1203)
Light1YT
2026-06-13 11:09:26 +05:00 -
2b4f8364a6
fix(workers): count lots_pf failure correctly, no silent 'done' (#1220)
Light1YT
2026-06-13 11:23:50 +05:00 -
ddbd924b02
fix(competitors): _AVG_PRICE_SQL — фильтр latest snapshot (#1210)
Light1YT
2026-06-13 11:06:59 +05:00 -
b85147a3a0
fix(db): dedupe domrf_kn_documents + UNIQUE NULLS NOT DISTINCT (#1206)
Light1YT
2026-06-13 11:05:17 +05:00 -
a08cc317c3
fix(forecasting): resolve admin district to micros в _query_artificial_demand (#1205)
Light1YT
2026-06-13 11:15:17 +05:00 -
5826812816
fix(domrf_kn): детерминированный sha256-fallback для flat_id (#1208)
Light1YT
2026-06-13 11:01:41 +05:00 -
9ac924a9ee
fix(analytics): rolling 6mo/6mo окна в _district_velocity_trend (#1203)
Light1YT
2026-06-13 11:09:26 +05:00 -
c29f4aef57
fix(llm): cap серверного Retry-After через _MAX_BACKOFF_S=30s (#1209)
Light1YT
2026-06-13 10:59:07 +05:00 -
c1257b2671
fix(competitors): _AVG_PRICE_SQL — фильтр latest snapshot (#1210)
Light1YT
2026-06-13 11:06:59 +05:00 -
8caa41dcb1
fix(db): dedupe domrf_kn_documents + UNIQUE NULLS NOT DISTINCT (#1206)
Light1YT
2026-06-13 11:05:17 +05:00 -
4c2f19ace0
fix(market-metrics): resolve admin→micros for _price_sensitivity (#1211)
Light1YT
2026-06-13 10:52:14 +05:00 -
a49ee2ccfc
fix(domrf_kn): детерминированный sha256-fallback для flat_id (#1208)
Light1YT
2026-06-13 11:01:41 +05:00 -
0a8785d548
fix(site-finder): MiniMap не клипает layer-controls — рыночные слои доступны (#1218)
Light1YT
2026-06-13 10:56:43 +05:00 -
dd773d6bde
fix(llm): cap серверного Retry-After через _MAX_BACKOFF_S=30s (#1209)
Light1YT
2026-06-13 10:59:07 +05:00 -
bc2d393b05
fix(market_metrics): disambiguate ROLLUP grand-total via GROUPING() (#1214)
Light1YT
2026-06-13 10:43:46 +05:00 -
ab45cacfbf
fix(site-finder): MiniMap не клипает layer-controls — рыночные слои доступны (#1218)
Light1YT
2026-06-13 10:56:43 +05:00 -
8f3e461959
fix(competitors): _ACTIVE_STATUSES = русские значения как у домрф (#1213)
Light1YT
2026-06-13 10:40:49 +05:00 -
d587b9e199
fix(supply_layers): L3 future-supply берёт ПОСЛЕДНИЙ снапшот → потом фильтр (#1212)
Light1YT
2026-06-13 10:38:31 +05:00 -
811800f2c6
fix(market-metrics): resolve admin→micros for _price_sensitivity (#1211)
Light1YT
2026-06-13 10:52:14 +05:00 -
c75e6a4cfa
fix(scrape_kn): Redis-lock owner-token + resume retry on lock_held (#1216)
Light1YT
2026-06-13 10:36:08 +05:00 -
c295979c01
fix(market_metrics): disambiguate ROLLUP grand-total via GROUPING() (#1214)
Light1YT
2026-06-13 10:43:46 +05:00 -
eee5e4bac5
fix(competitors): _ACTIVE_STATUSES = русские значения как у домрф (#1213)
Light1YT
2026-06-13 10:40:49 +05:00 -
39094ba644
fix(supply_layers): L3 future-supply берёт ПОСЛЕДНИЙ снапшот → потом фильтр (#1212)
Light1YT
2026-06-13 10:38:31 +05:00 -
b00e338667
fix(nspd_geo): split zombie thresholds running=6m / paused=30m (#1215)
Light1YT
2026-06-13 10:29:04 +05:00 -
03e5d07907
fix(site-finder): adapt backend egrn_block → frontend ParcelEgrn (#1217)
Light1YT
2026-06-13 10:23:49 +05:00 -
492574fe17
fix(scrape_kn): Redis-lock owner-token + resume retry on lock_held (#1216)
Light1YT
2026-06-13 10:36:08 +05:00 -
787f8a25b9
fix(nspd_geo): split zombie thresholds running=6m / paused=30m (#1215)
Light1YT
2026-06-13 10:29:04 +05:00 -
323e399593
fix(audit): run_in_threadpool для write_audit_row в async middleware (#1202)
Light1YT
2026-06-13 10:15:04 +05:00 -
2a68c2e202
fix(parcels): guard NULL geom + None lat/lon в isochrones/poi-score (#1201)
Light1YT
2026-06-13 10:13:01 +05:00 -
e2258c39d5
fix(site-finder): adapt backend egrn_block → frontend ParcelEgrn (#1217)
Light1YT
2026-06-13 10:23:49 +05:00 -
65c9d145b9
fix(audit): run_in_threadpool для write_audit_row в async middleware (#1202)
Light1YT
2026-06-13 10:15:04 +05:00 -
4648e1aee7
fix(schemas): expose per-bucket elasticity + velocity_source в RecommendBucket (#1204)
Light1YT
2026-06-13 10:05:58 +05:00 -
9a2cf32787
fix(api): handle 204 No Content в apiFetch (#1219)
Light1YT
2026-06-13 10:04:11 +05:00 -
b6fa4a2773
fix(parcels): guard NULL geom + None lat/lon в isochrones/poi-score (#1201)
Light1YT
2026-06-13 10:13:01 +05:00 -
441f761a89
fix(schemas): expose per-bucket elasticity + velocity_source в RecommendBucket (#1204)
Light1YT
2026-06-13 10:05:58 +05:00 -
8f84776969
fix(api): handle 204 No Content в apiFetch (#1219)
Light1YT
2026-06-13 10:04:11 +05:00 -
f12c03588d
fix(llm): close §19 redaction regex gaps for bare phone / CAPS name / bare SNILS (#1207)
Light1YT
2026-06-13 09:56:58 +05:00 -
c8000d1089
test(parcels): integration EXPLAIN-gate для analyze hot-path SQL (#1198)
Light1YT
2026-06-13 09:43:49 +05:00 -
31c5974c72
fix(forecasting): нормализовать dict-district в build_site_finder_report (#1130 follow-up)
Light1YT
2026-06-13 09:24:55 +05:00 -
2b23a4b24b
fix(parcels): rename CTE overlaps → overlap_rows (#1196 regression of #1195)
Light1YT
2026-06-13 08:59:45 +05:00 -
49b85ab1d6
perf(site-finder): air-quality TTL-кэш + neighbors_summary 2→1 SQL (#1130 Phase B)
Light1YT
2026-06-12 22:42:32 +05:00 -
97ff0c9e81
perf(site-finder): TTL-кэш Open-Meteo в analyze hot-path (#1130 Phase A)
Light1YT
2026-06-12 19:58:07 +05:00 -
d64a57cfcd
Merge pull request 'fix(tradein): guard listing_segment во всех оценочных читателях listings — novostroyki вне comps (#1186)' (#1192) from fix/tradein-segment-guards into main
lekss361
2026-06-12 09:06:28 +00:00 -
6d4dbd3e9d
Merge pull request 'feat(market): GRANT listings + offer_price_history → gendesign_reader (#1191)' (#1193) from feat/market-grant-listings-reader into main
lekss361
2026-06-12 09:06:18 +00:00 -
9ffadb9ea6
feat(market): GRANT listings → gendesign_reader — unit-level доступ SF (#1191)
bot-backend
2026-06-12 12:04:41 +03:00 -
a9a489bba5
refactor(tradein): убрать dead listing_segment param из _fetch_anchor_comps + негативные guard-asserts (review fixup, #1186)
bot-backend
2026-06-12 12:01:00 +03:00 -
b70ae46885
fix(tradein): guard listing_segment во всех читателях listings — novostroyki вне comps (#1186)
bot-backend
2026-06-12 11:52:09 +03:00 -
9b06377df8
Merge pull request 'feat(sf): cross-load ETL tradein→gendesign newbuilding_listings — вариант A (#976)' (#1185) from feat/sf-newbuilding-crossload into main
lekss361
2026-06-12 08:29:54 +00:00 -
04da30b57a
fix(sf): psql stdin-bootstrap пароля gendesign_reader + COALESCE-protect внешних id (review fixup, #976)
bot-backend
2026-06-12 11:26:40 +03:00 -
1a4778d006
feat(sf): cross-load ETL tradein→gendesign newbuilding_listings — вариант A (#976)
bot-backend
2026-06-12 11:18:47 +03:00 -
7a06839a0d
Merge pull request 'feat(tradein): отдельный scraper-контейнер — scheduler вне API-процесса' (#1183) from feat/tradein-scraper-container into main
lekss361
2026-06-12 08:01:23 +00:00 -
07b06617fd
test(tradein): убрать мёртвый monkeypatch в test_scheduler_main (review fixup)
bot-backend
2026-06-12 10:56:27 +03:00 -
72a4c122c4
feat(tradein): отдельный scraper-контейнер — scheduler вне API-процесса (#1182)
bot-backend
2026-06-12 10:50:50 +03:00 -
d7960276b1
chore(deploy): wire OWN_DEVELOPER_IDS into prod env for §25.3 own-portfolio (#1169)
Light1YT
2026-06-09 18:14:12 +05:00 -
c9720a6212
feat(forecasting): activate §25.3 cannibalization unit-mix axis (4/4), gated (#1169)
Light1YT
2026-06-09 16:09:29 +05:00 -
645b3c14a3
fix(chat): clean квартирография rendering in chat_system prompt (v2, #957)
Light1YT
2026-06-09 15:07:14 +05:00 -
98ecdecb5b
chore(deploy): wire OPENAI_API_KEY + LLM_ENABLED into prod env for LLM chat
Light1YT
2026-06-09 13:51:41 +05:00 -
df9d54b532
feat(site-finder): add opportunity-ЗУ + red-line map layers (§12.1-13, #958)
Light1YT
2026-06-09 12:15:44 +05:00 -
521d75a8e9
feat(site-finder): add opportunity-ЗУ + red-line map layers (§12.1-13, #958)
Light1YT
2026-06-09 12:15:44 +05:00