fix(tradein/scraper): per-city SERP location for oblast city-sweep (#12)
#5159 -Commit
0817178efa
pushed by
lekss361
feat(tradein/ui): admin links to audit + analytics in UserMenu
#5155 -Commit
76070cea83
pushed by
lekss361
fix(tradein/audit): exclude /api/v1/admin/* from api_request events
#5148 -Commit
5025732d12
pushed by
lekss361
feat(tradein/admin): audit + activity dashboards (Feature 2/3 UI)
#5145 -Commit
d0e29ce914
pushed by
lekss361
feat(tradein/admin): audit + analytics read API over user_events
#5141 -Commit
780af144c3
pushed by
lekss361
feat(tradein/audit): request-audit middleware + estimate_request logging → user_events
#5132 -Commit
82928be326
pushed by
lekss361
fix(tradein/estimator): analogs cards match n_analogs, no cross-source dups
#5130 -Commit
51c79f9324
pushed by
lekss361
feat(tradein/db): user_events table - unified login/IP audit + behavior event log
#5121 -Commit
2a419aca18
pushed by
lekss361
feat(tradein/ui): Telegram feedback button in Topbar (env-gated)
#5119 -Commit
104681eabd
pushed by
lekss361
fix(tradein/pdf): running @page header/footer → ровно 4 страницы (без пустых)
#5113 -Commit
42a50cf814
pushed by
lekss361
fix(tradein/auth): restore brusnika (user2) pilot access
#5101 -Commit
60be78f97c
pushed by
lekss361
fix(tradein/geocoder): explicit Екатеринбург wins over oblast-city homonym (#11)
#5037 -Commit
2ef3e42da1
pushed by
lekss361
fix(tradein/geocoder): gate EKB-local tiers for non-EKB oblast addresses (#11)
#5035 -Commit
720cee2c8e
pushed by
lekss361
fix(tradein/estimator): non-EKB headline из deals + geo-bound Tier-S analog leak
#4994 -Commit
f9ae6f0c53
pushed by
lekss361
feat(tradein/backtest): --city per-city валидация + corridor city-parity
#4988 -Commit
25a865f27b
pushed by
lekss361
fix(tradein/estimator): резолвить target-город коридора из payload.address (C2 hotfix)
#4984 -Commit
7801ac6cc1
pushed by
lekss361
fix(tradein/estimator): city-scope ДКП-коридора + oblast city-tokens/bbox
#4975 -Commit
b93d26990b
pushed by
lekss361
fix(tradein/estimator): per-city ценовой band ДКП-сделок для всей обл. 66
#4964 -Commit
e2502a0134
pushed by
lekss361
fix(tradein/ingest): раз-хардкод rosreestr DKP импорта на всю обл. 66
#4953 -Commit
752cb1044b
pushed by
lekss361
test(rbac): user2 expected role expired after brusnika trial cutoff
#4784 -Commit
f4c26d474a
pushed by
lekss361
fix(tradein/auth): expire brusnika (user2) trial access
#4781 -Commit
3c4a33ca32
pushed by
lekss361
fix(tradein/cian): management_companies dedup — SELECT-before-INSERT, not ON CONFLICT
#4466 -Commit
db9bec8142
pushed by
lekss361
feat(tradein/domclick): production Layer B detail-backfill orchestrator (#2000)
#4462 -Commit
f627b0fa4d
pushed by
lekss361
feat(tradein/domclick): cookie-injection MVP для обхода QRATOR-блока (#2000)
#4452 -Commit
0b9dfcc691
pushed by
lekss361
fix(tradein/estimator): восстановить и канонизировать корпус дома в дедупе (#2436)
#4448 -Commit
deffd31156
pushed by
lekss361